在kubeadm中进行阶段认证之后是否需要阶段kubeconfig?

时间:2019-05-28 22:01:48

标签: kubernetes kubeadm

我最近升级了kubeadm,希望可以轮换使用所有证书,并且在很好的情况下,我还运行了kubeadm init phase certs all,但是我不确定需要什么步骤来验证所有证书正确地就位,并且不会过期。

我还看到另外需要SO answer reference kubeadm init phase kubeconfig all,但是在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提前一年产生日期。

这些矛盾的日子肯定让我担心,我会发现自己和其他许多拥有过期证书的人一样。我该如何处理?

谢谢您的指导。

2 个答案:

答案 0 :(得分:2)

实质上,kubeadm init phase certs all会重新生成包括ca.crt(证书颁发机构)在内的所有证书,并且Kubernetes组件使用基于证书的身份验证来连接到kube-apiserver(kubelet,kube-scheduler,kube-控制器管理员),因此您还必须通过运行kubeadm init phase kubeconfig all

重新生成所有这些配置

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

通过openssl连接时,很可能看不到更新的证书,这是因为尚未重新启动Kubernetes组件,尤其是kube-apiserver。因此,您将必须启动kube-apiserver,kube-scheduler,kube-controller-manager等(如果正在运行多主控制平面,则必须启动kube-apiserver,kube-scheduler等),还必须重新启动您所有节点上的kubelet。

答案 1 :(得分:0)

一个月后,我学到了更多知识,并想为跟随我的人更新这个问题。

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

  

注意:上面的列表中未包含kubelet.conf,因为kubeadm将kubelet配置为自动更新证书。

升级后,我没有看到kubelet的自动证书续订。然后我得知:

  

何时旋转证书的决定是不确定的,可能会发生证书总寿命的70-90%,以防止节点证书旋转重叠。

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

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