问题描述
本地有一个1master2worker的k8s集群,今天启动VMware虚拟机之后发现api-server没有起来,docker一直退出,这个集群是使用kubeadm安装的。
于是kubectl logs查看了日志,发现证书过期了
解决方案:
查看证书
# kubeadmcerts check-expiration
重新生成证书
这步会覆盖/etc/kubernetes/pki下面的证书文件
# kubeadm certs renew all
根据提示,重启docker【kube-apiserver, kube-controller-manager, kube-scheduler and etcd】
# docker stop docker.service
# docker stop docker.socket
更新kubelet证书
同样,证书已过期
这里可以直接删除/etc/kubernetes的conf文件,因为conf文件都是用的旧的证书生成的配置,我们用新生成的证书重新生成配置
# kubeadm init --kubernetes-version=v1.22.2 phase kubeconfig all
kubelet也生成了新的证书和conf文件,过期时间也更新了
拷贝admin.config到~/.kube/config,此时集群可以访问了
# cp /etc/kubernetes/admin.conf ~/.kube/config
将kubelet.conf文件拷贝到各个node节点上,node节点重启kubelet