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