首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >kubernetes pki到期续费

kubernetes pki到期续费
EN

Stack Overflow用户
提问于 2019-05-27 14:44:40
回答 12查看 29.8K关注 0票数 27

我的kubernetes PKI过期了(确切地说,是API服务器),我找不到续费的方法。我得到的错误是

代码语言:javascript
复制
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服务器未过期的情况下才有效。我试着做一个

代码语言:javascript
复制
kubeadm alpha cert renew all

然后重新启动,但这只会导致整个集群失败,所以我回滚到一个快照(我的集群在VMware上运行)。

集群正在运行,所有容器似乎都正常工作,但我无法通过kubectl访问它,因此我无法真正部署或查询。

我的kubernetes版本是1.14.2。

EN

回答 12

Stack Overflow用户

发布于 2019-05-28 11:44:38

因此,解决方案是(首先备份)

代码语言:javascript
复制
$ 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

然后

代码语言:javascript
复制
$ cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

这为我完成了工作,感谢您的提示:)

票数 57
EN

Stack Overflow用户

发布于 2019-08-01 20:04:37

此主题也将在中讨论:

在1.15 kubeadm升级后,

Kubernetes v1.15提供了使用kubeadm进行证书管理的文档:

代码语言:javascript
复制
kubeadm alpha certs check-expiration

  • 自动证书续订:在控制平面upgrade.

期间,

  • kubeadm会续订所有证书

  • 手动证书续订:
    • 您可以随时使用kubeadm alpha certs renew command.
    • This命令手动续订证书使用存储在/etc/kubernetes/pki.

中的CA (或前端代理CA)证书和密钥执行续订

总的来说,对于kubernetesv1.14,我发现这个过程最有帮助:

票数 8
EN

Stack Overflow用户

发布于 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

重新启动kubeletdocker守护进程:

sudo systemctl restart docker; sudo systemctl restart kubelet

您可以在官方K8s documentation中找到更多相关信息。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56320930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档