kubeadm 证书过期处理
目录
免责申明
说明
renew API server 等证书
kubeadm 配置文件导出
renew master 节点 kubelet 证书
renew 其他节点证书
参考文档
免责申明
本记录仅可用于测试环境,不保证可完全修复集群,有些操作是自己摸索的不代表正确。
说明
因为经常要做 Kubernetes 相关的测试,于是环境里有很多集群,有时候长时间不开机,集群默认 1 年的证书就过期了,过期后 kubelet 还有 api Server 等都无法正常启动,下面记录下修复过程。
renew API server 等证书
登录 master 节点,使用下列命令直接 renew 所有证书:
然后重启 docker,正常来说 api server 之类的 pod 便可以正常启动。
kubeadm.conf 配置中证书已经被 kubeadm 续期了,证书的部分内容如下:
使用 kubectl --kubeconfig /etc/kubernetes/admin.conf get node 命令可以看到所有节点。将此 config 复制到用户目录方便使用。
kubeadm 配置文件导出
一般部署 kubeadm 时都会准备一个用于初始化的 kubeadm config 文件,文件中包含集群自定义的配置,比如:
如果集群部署时用的全部是默认配置,则 kubeadm 可能使用默认的配置,当 API Server 可用后,需要从下列 configmap 中导出 kubeadm-config.yaml 文件:
renew master 节点 kubelet 证书
之后 systemctl restart kubelet,观察到下列错误,提示 kubelet 证书过期:
/etc/kubernetes/kubelet.conf 中指定了 CA 证书信息以及 kubelet 使用的证书和秘钥,CA 证书是 10 年的还未过期,kubelet 证书已过期,需要修复。
先对原来的文件进行备份:
使用 kubeadm 生成新的 kubelet.conf,此配置会自动附加新的 kubelet 证书:
之后查看到 master 节点为 Ready:
renew 其他节点证书
接着使用相似操作,在 master 节点(包含 ca 根证书的节点)为其他 worker 节点创建 kubelet 配置文件:
创建完后依次 scp 到相应 worker 节点,然后重启 kubelet 服务:
最终可以看到所有节点恢复正常:
参考文档
这有帮助吗?