在Rancher 2.0和2.1中,Rancher配置集羣的自動生成證書的有效期爲1年,本文將爲您詳細介紹如何輪換證書,即便您的證書已通過期也可從文章中得到具體的操做指南。node
Kubernetes集羣一般使用ssl證書來加密通訊,Rancher會自動爲集羣生成證書。在Rancher v2.0.1四、v2.1.9以前的版本,Rancher配置集羣的自動生成證書的有效期爲1年,這意味着若是您在大約1年前使用這些版本建立了Rancher配置集羣,那麼您須要儘快開始輪換證書,不然證書過時後集羣將進入錯誤狀態。輪換證書是一次性操做,新生成的證書有效期爲10年。nginx
本文將爲您詳細介紹如何進行輪換證書的操做。即便您的證書如今已通過期,您也能夠依照如下步驟進行證書的輪換。但請注意先不要升級rancher server,根據本文最後一節【證書已過時致使沒法鏈接k8s】進行處理。docker
注意 在從新啓動組件時,輪換Kubernetes證書可能會致使您的羣集暫時不可用。此外,對於生產環境,建議在維護窗口期間執行此操做。vim
經過UI輪換證書(業務集羣)api
注:可用版本 Rancher v2.2.0 +瀏覽器
在Rancher v2.2.0以及更高版本,可經過UI的證書輪換功能對集羣證書進行更新,此功能適用於【自定義安裝的集羣】。bash
證書輪換以後,Kubernetes組件將自動從新啓動,重啓不影響應用Pod,重啓時間須要3到5分鐘。工具
證書輪換可用於下列服務:ui
etcd加密
kubelet
kube-apiserver
kube-proxy
kube-scheduler
kube-controller-manager
經過UI輪換證書,目前支持:
批量更新全部服務證書(CA證書不變)
更新某個指定服務(CA證書不變)
(重要)集羣更新
若是Rancher版本是從v2.x.x升級到2.2.x,則須要先作一次集羣更新操做。
一、進入【全局\集羣視圖】;
二、選擇【目標集羣】右側的【省略號菜單】,選擇升級;
三、點擊右側【顯示高級選項】,檢查【Etcd快照輪換】功能是否開啓,建議開啓此功能;
四、在【受權集羣訪問地址】中,檢查功能是否已開啓,建議開始此功能,下邊的域名能夠不用填寫;
五、最後點擊【保存】,集羣將自動進行更新
輪換證書
一、進入【全局\集羣視圖】;
二、選擇對應集羣右側的【省略號菜單】,選擇更新證書有效期;
三、選擇更新全部服務證書,並點擊保存
四、集羣將自動更新證書
五、由於證書改變,相應的token也會變化,在集羣證書更新完成後,須要對鏈接API SERVER的Pod進行重建,以獲取新的token。
cattle-system/cattle-cluster-agent
cattle-system/cattle-node-agent
cattle-system/kube-api-auth
ingress-nginx/nginx-ingress-controller
kube-system/canal
kube-system/kube-dns
kube-system/kube-dns-autoscaler
其餘應用Pod
經過UI API輪換證書(業務集羣)
注:可用版本 Rancher v2.0.14+ v2.1.9+
對於Rancher v2.0.1四、v2.1.9以及更高版本,可經過API對集羣證書進行更新。API證書輪換將會同時對全部組件證書進行更新,不支持指定組件更新證書。
一、在【全局】視圖中,定位到須要更新證書的集羣,而後點擊右側省略號菜單,而後點擊【API查看】。
二、點擊右上方的RotateCertificates
三、點擊 Show Request
四、點擊 Send Request
五、由於證書改變,相應的token也會變化,在集羣證書更新完成後,須要對鏈接API SERVER的Pod進行重建,以獲取新的token。
cattle-system/cattle-cluster-agent
cattle-system/cattle-node-agent
cattle-system/kube-api-auth
ingress-nginx/nginx-ingress-controller
kube-system/canal
kube-system/kube-dns
kube-system/kube-dns-autoscaler
其餘應用Pod
RKE 證書輪換(local集羣和業務集羣通用)
注:可用版本 rke v0.2.0+
若是之前是經過rke v0.2.0以前的版本建立的Kubernetes集羣,在輪換證書前先執行rke up操做,請參考:https://www.cnrancher.com/docs/rke/latest/cn/cert-mgmt/
經過RKE輪換證書,目前支持:
批量更新全部服務證書(CA證書不變)
更新某個指定服務(CA證書不變)
輪換CA和全部服務證書
一、批量更新全部服務證書(CA證書不變)
二、更新指定服務(CA證書不變)
三、輪換CA和全部服務證書
rke cert rotate --rotate-ca INFO[0000] Initiating Kubernetes cluster INFO[0000] Rotating Kubernetes cluster certificates INFO[0000] [certificates] Generating CA kubernetes certificates INFO[0000] [certificates] Generating Kubernetes API server aggregation layer requestheader client CA certificates INFO[0000] [certificates] Generating Kubernetes API server certificates INFO[0000] [certificates] Generating Kube Controller certificates INFO[0000] [certificates] Generating Kube Scheduler certificates INFO[0000] [certificates] Generating Kube Proxy certificates INFO[0000] [certificates] Generating Node certificate INFO[0001] [certificates] Generating admin certificates and kubeconfig INFO[0001] [certificates] Generating Kubernetes API server proxy client certificates INFO[0001] [certificates] Generating etcd-xxxxx certificate and key INFO[0001] [certificates] Generating etcd-yyyyy certificate and key INFO[0001] [certificates] Generating etcd-zzzzz certificate and key INFO[0001] Successfully Deployed state file at [./cluster.rkestate] INFO[0001] Rebuilding Kubernetes cluster with rotated certificates
四、由於證書改變,相應的token也會變化,在集羣證書更新完成後,須要對鏈接API SERVER的Pod進行重建,以獲取新的token
cattle-system/cattle-cluster-agent
cattle-system/cattle-node-agent
cattle-system/kube-api-auth
ingress-nginx/nginx-ingress-controller
kube-system/canal
kube-system/kube-dns
kube-system/kube-dns-autoscaler
其餘應用Pod
獨立容器Rancher server證書更新
Rancher v2.0.14+ 、v2.1.9+、v2.2.0+會自動檢查證書有效期,若是發現證書過時,將會自動生成新的證書。因此獨立容器運行的Rancher server只需把rancher版本升級到支持的版本,無需作其餘操做。
故障處理
提示CA證書爲空
若是執行更新證書後出現以下錯誤提示,由於沒有執行集羣更新操做。
解決方法
一、選擇對應問題集羣,而後查看瀏覽器的集羣ID,以下圖:
二、執行命令 kubectl edit clusters <clusters_ID>
若是Rancher是HA安裝,直接在local集羣中,經過rke生成的kube配置文件執行以上命令;
若是Rancher是單容器運行,經過docker exec -ti <容器ID> bash進入容器中,而後執行apt install vim -y安裝vim工具,而後再執行以上命令;
三、刪除spec.rancherKubernetesEngineConfig.rotateCertificates層級下的配置參數:
修改成
輸入:wq保存yaml文件後集羣將自動更新,更新完成後再進行證書更新。
證書已過時致使沒法鏈接K8S
若是集羣證書已通過期,那麼即便升級到Rancher v2.0.1四、v2.1.9以及更高版本也沒法輪換證書。rancher是經過Agent去更新證書,若是證書過時將沒法與Agent鏈接。
解決方法
能夠手動設置節點的時間,把時間日後調整一些。由於Agent只與K8S master和Rancher server通訊,若是rancher server證書未過時,那就只需調整K8S master節點時間。
調整命令:
而後再對rancher server進行升級,接着按照證書輪換步驟進行證書輪換,等到證書輪換完成後再把時間同步回來。
檢查證書有效期