如何更新kubernetes过期证书
这篇文章将为大家详细讲解有关如何更新kubernetes过期证书,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
专注于为中小企业提供网站设计制作、成都网站设计服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业正宁免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上1000家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
kubeadm 版本在kubernetes 1.15 版本 提供了强大的证书管理功能,本文章适用于kubernetes1.15以下版本(文章中kubernetes版本是1.13.2)。
1.15 版本的证书管理相关文档:
官方文档-使用 kubeadm 进行证书管理
[官方文档-kubeadm alpha 使用说明]9https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-alpha/)
查看证书有效期方法:
openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text |grep ' Not '
⚠️ kubeadm 默认生成的ca证书有效期是10年,其他证书(如etcd证书,apiserver证书)有效期均为1年。
更新证书和配置
整体思路:
备份:在进行证书更新前,建议备份
/etc/kubernetes
,防止操作失误。更新证书:使用
kubeadm alpha certs renew
重新生成证书。仅更新***.key
文件,需要原始的crt文件才能生成对应的key文件。更新配置:使用
kubeadm init phase kubeconfig all --config ${kubeadm.yaml配置文件}
或者kubeadm alpha kubeconfig user
命令。
⚠️ 不同版本的kubeadm对于证书renew的命令有细微的差异,具体情况需要依据已经安装的kubeadm来判断。通过命令行
kubeadm alpha certs renew --help
输出类似如下信息:
证书更新策略:
单主节点:可以直接运行
kubeadm alpha certs renew all --config kubeadm.yaml
完成证书更新。然后替换kubelet配置多主节点:建议使用原ca证书(有效期10年),每个组件(etcd、apiserver 等)单独更新。
多master节点证书更新
备份原始配置和证书
所有master节点运行命令:cp -r /etc/kubernetes /home/heguangfu/kubernetes
更新证书
所有master节点依次完成如下命令:
etcd 心跳证书:
kubeadm alpha certs renew etcd-healthcheck-client --config kubeadm-config.ict15.yaml
etcd peer证书:
kubeadm alpha certs renew etcd-peer --config kubeadm-config.ict15.yaml
etcd server证书:
kubeadm alpha certs renew etcd-server --config kubeadm-config.ict15.yaml
front-proxy-client 证书:
kubeadm alpha certs renew front-proxy-client --config kubeadm-config.ict15.yaml
apiserver-etcd-client 证书
kubeadm alpha certs renew apiserver-etcd-client --config kubeadm-config.ict15.yaml
apiserver-kubelet-client 证书
kubeadm alpha certs renew apiserver-kubelet-client --config kubeadm-config.ict15.yaml
apiserver 证书
kubeadm alpha certs renew apiserver --config kubeadm-config.ict15.yaml
⚠️ 不同的master节点使用的kubeadm配置有细微的差异,执行更新证书是,每个master在
--config
后面使用原来集群创建时,当前master对应的kubeadm配置文件。
更新配置
所有master节点,在更新完证书后,使用kubeadm init phase kubeconfig all --config ${kubeadm.yaml配置文件}
更新kubernetes 配置
验证集群状态
清理前次的kubectl权限信息:rm -rf $HOME/.kube
。
重新配置kubectl权限信息:
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
验证etcd:查看etcd中某个节点的docker日志,日志中所有etcd peer均active且加入到同一个集群
验证kubernetes 集群:运行
kubectl cluster-info
和kubectl get nodes
符合预期。确性kubernetes 系统相关的服务运行正常(核心是
kube-apiserver
,kube-controller-manager
,kube-proxy
,kube-flannel
):kubectl get pods -n kube-system
检查pod的运行状态:
kubectl get pods --all-namespaces
。
可能的问题
Part of the existing bootstrap client certificate is expired: 2020-01-19 15:10:17 +0000 UTC
:确认全部证书更新,并且证书更新好后,更新了kubernetes配置api server日志:
Unable to authenticate the request due to an error: [x509: certificate has expired or is not yet valid, x509: certificate has expired or is not yet valid]
。可能原因有:证书过期;证书部分更新;master上包含了代理配置,导致对apiserver的请求走了代理,证书认证通不过(运行unset http_proxy;unset ftp_proxy;unset socks_proxy;unset https_proxy
,取消代理配置)。
关于“如何更新kubernetes过期证书”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
分享题目:如何更新kubernetes过期证书
标题链接:http://scjbc.cn/article/gsichg.html