重要提醒 | 手動輪換Rancher Kubernetes集羣的證書

在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進行升級,接着按照證書輪換步驟進行證書輪換,等到證書輪換完成後再把時間同步回來。

檢查證書有效期

相關文章
相關標籤/搜索