我的kubernetes PKI过期了(确切地说,是API服务器),我找不到续费的方法。我得到的错误是
May 27 08:43:51 node1 kubelet[8751]: I0527 08:43:51.922595 8751 server.go:417] Version: v1.14.2
May 27 08:43:51 node1 kubelet[8751]: I0527 08:43:51.922784 8751 plugins.go:103] No cloud provider specified.
May 27 08:43:51 node1 kubelet[8751]: I0527 08:43:51.922800 8751 server.go:754] Client rotation is on, will bootstrap in background
May 27 08:43:51 node1 kubelet[8751]: E0527 08:43:51.925859 8751 bootstrap.go:264] Part of the existing bootstrap client certificate is expired: 2019-05-24 13:24:42 +0000 UTC
May 27 08:43:51 node1 kubelet[8751]: F0527 08:43:51.925894 8751 server.go:265] failed to run Kubelet: unable to load bootstrap
kubeconfig: stat /etc/kubernetes/bootstrap-kubelet.conf: no such file or directory有关https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-certs/的文档介绍了如何续费,但只有在API服务器未过期的情况下才有效。我试着做一个
kubeadm alpha cert renew all然后重新启动,但这只会导致整个集群失败,所以我回滚到一个快照(我的集群在VMware上运行)。
集群正在运行,所有容器似乎都正常工作,但我无法通过kubectl访问它,因此我无法真正部署或查询。
我的kubernetes版本是1.14.2。
发布于 2019-05-28 11:44:38
因此,解决方案是(首先备份)
$ cd /etc/kubernetes/pki/
$ mv {apiserver.crt,apiserver-etcd-client.key,apiserver-kubelet-client.crt,front-proxy-ca.crt,front-proxy-client.crt,front-proxy-client.key,front-proxy-ca.key,apiserver-kubelet-client.key,apiserver.key,apiserver-etcd-client.crt} ~/
$ kubeadm init phase certs all --apiserver-advertise-address <IP>
$ cd /etc/kubernetes/
$ mv {admin.conf,controller-manager.conf,kubelet.conf,scheduler.conf} ~/
$ kubeadm init phase kubeconfig all
$ reboot然后
$ cp -i /etc/kubernetes/admin.conf $HOME/.kube/config这为我完成了工作,感谢您的提示:)
发布于 2019-08-01 20:04:37
此主题也将在中讨论:
在1.15 kubeadm升级后,
Kubernetes v1.15提供了使用kubeadm进行证书管理的文档:
kubeadm alpha certs check-expiration期间,
kubeadm alpha certs renew command.中的CA (或前端代理CA)证书和密钥执行续订
总的来说,对于kubernetesv1.14,我发现这个过程最有帮助:
发布于 2019-05-27 18:45:57
尝试通过kubeadm init phase certs命令进行证书续订。
您可以通过以下命令查看证书过期时间:
openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text
openssl x509 -in /etc/kubernetes/pki/apiserver-kubelet-client.crt -noout -text
首先,确保您拥有k8s证书清单/etc/kubernetes/pki/*的最新备份。
删除/etc/kubernetes/pki/目录中的apiserver.*和apiserver-kubelet-client.*证书文件。
通过kubeadm init phase certs命令派生新证书:
sudo kubeadm init phase certs apiserver
sudo kubeadm init phase certs apiserver-kubelet-client
重新启动kubelet和docker守护进程:
sudo systemctl restart docker; sudo systemctl restart kubelet
您可以在官方K8s documentation中找到更多相关信息。
https://stackoverflow.com/questions/56320930
复制相似问题