共計 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 過期證書”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。