【问题标题】:Kubelet certificate rotation - worker nodesKubelet 证书轮换 - 工作节点
【发布时间】:2020-06-12 04:32:56
【问题描述】:

我已经运行 K8s 集群(v1.13.5)一年了,控制平面证书和 Kubelet 证书即将到期。我找到了一种轮换所有控制平面证书的方法,我想知道如何轮换 Kubelet 证书。有人可以帮助我了解如何轮换工作节点和主节点的 K 证书(如果需要)吗?这个 K8s 集群是使用 Kubespray 部署的。

【问题讨论】:

    标签: kubernetes client-certificates kubeadm kubelet kubespray


    【解决方案1】:

    从 Kubernetes 版本 1.8.0 开始提供测试版功能Certificate Rotation

    kubelet 使用证书对 Kubernetes API 进行身份验证。默认情况下,这些证书的有效期为一年,因此无需过于频繁地更新。

    Kubernetes 1.8 包含kubelet certificate rotation,这是一项测试版功能,当当前证书即将到期时,它将自动生成新密钥并从 Kubernetes API 请求新证书。一旦新证书可用,它将用于验证与 Kubernetes API 的连接。

    这需要通过Feature Gates 启用,因为这是一个测试版功能。所以你需要添加 --feature-gates=RotateKubeletClientCertificate=true

    当 kubelet 启动时,如果它被配置为引导(使用 --bootstrap-kubeconfig 标志),它将使用其初始证书连接到 Kubernetes API 并发出证书签名请求。您可以使用以下方式查看证书签名请求的状态:

    kubectl get csr
    

    最初来自节点上 kubelet 的证书签名请求的状态为Pending。如果证书签名请求符合特定标准,它将被控制器管理器自动批准,然后它将具有Approved 的状态。接下来,控制器管理器将签署一个证书,颁发的持续时间由--experimental-cluster-signing-duration 参数指定,并且签名的证书将附加到证书签名请求中。

    kubelet 将从 Kubernetes API 检索签名证书并将其写入磁盘,位于--cert-dir 指定的位置。然后 kubelet 将使用新证书连接到 Kubernetes API。

    随着签名证书到期的临近,kubelet 将使用 Kubernetes API 自动发出新的证书签名请求。同样,控制器管理器将自动批准证书请求并将签名证书附加到证书签名请求中。 kubelet 将从 Kubernetes API 检索新的签名证书并将其写入磁盘。然后它将更新它与 Kubernetes API 的连接,以使用新证书重新连接。

    【讨论】:

    • 是否需要在 master 和 worker 中都添加“--feature-gates=RotateKubeletClientCertificate=true”?
    • 它需要在所有节点上启用,但请记住您有RotateKubeletClientCertificateRotateKubeletServerCertificate
    猜你喜欢
    • 2021-03-07
    • 1970-01-01
    • 2021-03-22
    • 2021-01-09
    • 2018-12-04
    • 1970-01-01
    • 2020-06-03
    • 2021-11-15
    • 2020-04-28
    相关资源
    最近更新 更多