我已经运行K8s集群(v1.13.5)一年了,并且控制平面证书和Kubelet证书即将到期。我找到了一种旋转所有控制平面证书的方法,并且我想知道如何旋转Kubelet证书。有人可以帮助我了解如何轮换工作节点和主节点的K证书(如果需要)吗?此K8s集群是使用Kubespray部署的。
答案 0 :(得分:1)
从Kubernetes 1.8.0版开始,Certificate Rotation提供Beta版功能。
kubelet使用证书对Kubernetes API进行身份验证。默认情况下,这些证书的有效期为一年,因此不需要太频繁地更新它们。
Kubernetes 1.8包含kubelet certificate rotation,这是一个Beta版功能,它将随着当前证书即将到期而自动生成新密钥并从Kubernetes API请求新证书。新证书可用后,将用于验证与Kubernetes API的连接。
需要使用Feature Gates启用此功能,因为这是一个beta功能。所以你需要添加
--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的连接,以使用新证书重新连接。