在 kubeadm 的阶段证书之后是否需要阶段 kubeconfig?

Is phase kubeconfig required after phase certs in kubeadm?

我最近升级了 kubeadm,我希望它能轮换所有证书,并且为了更好的衡量,我也 运行 kubeadm init phase certs all,但我不确定需要执行哪些步骤验证证书是否全部正确且不会过期。

我看到一个 SO answer reference kubeadm init phase kubeconfig all is required in addition, but cannot find in the kubernetes kubeadm documentation 告诉我它需要与阶段证书一起使用。

我需要做什么来确保集群不会遇到过期的证书?

我已经尝试通过连接到安全本地端口进行验证:echo -n | openssl s_client -connect localhost:10250 2>&1 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | openssl x509 -text -noout | grep Not,这让我下个月到期。

虽然 openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -textopenssl x509 -in /etc/kubernetes/pki/apiserver-kubelet-client.crt -noout -text 提前一年产生日期。

这些相互矛盾的日期肯定让我担心我会发现自己像许多其他人一样拥有过期的证书。我怎样才能做到这一点?

感谢您的指导。

本质上 kubeadm init phase certs all 重新生成您的所有证书,包括您的 ca.crt(证书颁发机构),并且 Kubernetes 组件使用 certificate-based 身份验证连接到 kube-apiserver(kubelet, kube-scheduler, kube-controller-manager) 所以你还必须通过 运行 kubeadm init phase kubeconfig all

重新生成几乎所有这些配置

请记住,您必须在所有节点上重新生成 kubelet.conf,因为它也需要更新以使用新的 ca.crt 连接到 kube-apiserver。另外,请确保 您的 kube-apiserver 将服务于 kubeadm init phase certs all 命令 (--apiserver-cert-extra-sans)

您在通过 openssl 连接时看不到更新的证书很可能是因为您没有重新启动 Kubernetes 组件,尤其是 kube-apiserver。所以你必须开始 kube-apiserver、kube-scheduler、kube-controller-manager 等(或者 kube-apiservers、kube-schedulers 等,如果你是 运行 multi-master 控制平面)您还必须在所有节点上重新启动 kubelet。

一个月后,我又学到了一些东西,想为关注我的人更新这个问题。

我在 Kubernetes 上提交了一份 issue 请求有关 kubeadm 升级过程如何自动更新证书的更多信息。 Kubernetes 上的文档说:

Note: kubelet.conf is not included in the list above because kubeadm configures kubelet for automatic certificate renewal.

升级后,我没有看到 kubelet 的自动证书更新。然后我被告知:

the decision on when to rotate the certificate is non-deterministic and it may happen 70 - 90% of the total lifespan of the certificate to prevent overlap on node cert rotations.

他们还提供了以下流程,解决了我上次未完成的证书轮换问题:

sudo mv /var/lib/kubelet/pki /var/lib/kubelet/pki-backup
sudo systemctl restart kubelet
# the pki folder should be re-created.