使用 kubeadm 安装 kubernetes 集群非常方便,但是也有一个比较烦人的问题就是默认的证书有效期只有一年时间,所以需要考虑证书升级的问题,本文的演示集群版本为 v1.13.1 版本,不保证下面的操作对其他版本也适用,在操作之前一定要先对证书目录进行备份,防止操作错误进行回滚。
1.查看证书有效期
$ openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text |grep ' Not '
Not Before: Feb 13 19:17:50 2020 GMT
Not After : Feb 12 19:17:50 2021 GMT
1.15及以上版本可以使用下面的命令查看证书有效期:
kubeadm alpha certs check-expiration
2.备份证书和etcd数据
mkdir /etc/kubernetes.bak
cp -r /etc/kubernetes/* /etc/kubernetes.bak
cp -r /var/lib/etcd /var/lib/etcd.bak
3.更新证书
注意:kubeadm.conf 中 controlPlaneEndpoint
需配置为leader的节点ip+apiserver 端口号。
kubeadm alpha certs renew all --config=kubeadm.conf
$ sudo kubeadm init phase kubeconfig all --config kubeadm.conf
[kubeconfig] Using kubeconfig folder "/etc/kubernetes"
[kubeconfig] Using existing up-to-date kubeconfig file: "/etc/kubernetes/admin.conf"
[kubeconfig] Using existing up-to-date kubeconfig file: "/etc/kubernetes/kubelet.conf"
[kubeconfig] Using existing up-to-date kubeconfig file: "/etc/kubernetes/controller-manager.conf"
[kubeconfig] Using existing up-to-date kubeconfig file: "/etc/kubernetes/scheduler.conf"
4.更新kubeconfig文件
cp $HOME/.kube/config $HOME/.kube/config.old
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
完成后重启 kube-apiserver、kube-controller、kube-scheduler、etcd 这4个容器即可,我们可以查看 apiserver 的证书的有效期来验证是否更新成功:
$ echo | openssl s_client -showcerts -connect 127.0.0.1:6443 -servername api 2>/dev/null | openssl x509 -noout -enddate
notAfter=Dec 24 10:03:04 2021 GMT
可以看到现在的有效期是一年过后的,证明已经更新成功了。
如果有多个master节点
,分别在各个master上执行上述操作即可。
网友评论