kubeadm 处理K8s 证书过期问题
k8s默认证书有效期只有一年,目的就是为了让你经常升级k8s?升级成功后也会更新证书,延长1年有效期。实际生产中,由于升级k8s往往会产生一些奇奇怪怪的问题,因此也不会经常升级,那么就需要进行证书续签的操作,如果使用kubeadm安装的集群,证书续签还是挺简单的。
下面的这些操作,在所有master节点都需要执行哦。
备份证书
任何操作前先备份,给自己留口后悔药
1 | cp -r /etc/kubernetes /etc/kubernetes.bak |
不放心,etcd数据也可以备份一下
1 | cp -r /var/lib/etcd /var/lib/etcd.bak |
排查当前证书过期状态
1 | kubeadm certs check-expiration |
在master节点,通过kubeadm进行证书升级
先确认备份过了哟,kubeadm certs renew可以指定组件更新证书,目前我也没碰到啥场景需要这么弄,就全部续签了。
1 | kubeadm certs renew all |
重启相关组件
证书更新完成后,还需要重启 kube-apiserver、kube-controller、kube-scheduler、etcd 这4个组件,用docker跑的话,用下面的命令可以方便的重启。
1 | docker ps | grep -v pause | grep -E "etcd|scheduler|controller|apiserver" | awk '{print $1}' | awk '{print "docker","restart",$1}' | bash |
重建 kubectl 访问凭证
需要更新下kubectl的配置信息
1 | mv $HOME/.kube/config $HOME/.kube/config.old |
如果kubectl 不在master节点上,拷贝配置过去就好啦,把master节点上的/etc/kubernetes/admin.conf 复制到客户机保存为~/.kube/config即可。
1 | scp root@master-node:/etc/kubernetes/admin.conf ~/.kube/config |
CA证书续签
k8s提供的CA证书默认期限是10年,还是挺宽松的,目前没有自动续签的方法,先未雨绸缪找了下续签的方法,还未实践,权当收藏。
手动轮换 CA 证书 | Kubernetes
续签10年
通过以下脚本,可以直接实现续签十年,相当省心了。
update-kube-cert/README-zh_CN.md at master · yuyicai/update-kube-cert (github.com)


