如何更新kubernetes过期证书

58次阅读
没有评论

共计 2731 个字符,预计需要花费 7 分钟才能阅读完成。

这篇文章将为大家详细讲解有关如何更新 kubernetes 过期证书,丸趣 TV 小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

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 过期证书”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计2731字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)