當叢集認證已到期時,通過kubectl或API介面調用的方式與叢集API Server的通訊都將被禁止,因此無法通過範本部署的方式來自動更新叢集各節點上的相應到期認證;此時叢集管理員可以登入至叢集各節點,通過如下docker run
啟動容器的方式執行目標節點的認證更新任務。
更新Master節點已到期的認證
- 以Root許可權登入任意Master節點。
- 在任意目錄下執行以下命令,更新Master節點已經到期的認證。
docker run -it --privileged=true -v /:/alicoud-k8s-host --pid host --net host \ registry.cn-hangzhou.aliyuncs.com/acs/cert-rotate:v1.0.0 /renew/upgrade-k8s.sh --role master
- 在叢集的每個Master節點,重複上述步驟,完成所有Master節點已到期的認證更新。
更新Worker節點已到期的認證
- 以Root許可權登入任意Master節點。
- 執行以下命令,擷取叢集RootCA私密金鑰。
cat /etc/kubernetes/pki/ca.key
- 執行以下命令,擷取通過base64編碼後叢集的根私密金鑰。
- 若擷取的叢集RootCA私密金鑰,有一行空行,執行以下命令:
sed '1d' /etc/kubernetes/pki/ca.key| base64 -w 0
- 若擷取的叢集RootCA私密金鑰,無空行,執行以下命令:
cat /etc/kubernetes/pki/ca.key | base64 -w 0
- 若擷取的叢集RootCA私密金鑰,有一行空行,執行以下命令:
- 以Root許可權登入任意Worker節點。
- 在任意目錄下執行如下命令,更新Worker節點已經到期的認證。
docker run -it --privileged=true -v /:/alicoud-k8s-host --pid host --net host \ registry.cn-hangzhou.aliyuncs.com/acs/cert-rotate:v1.0.0 /renew/upgrade-k8s.sh --role node --rootkey ${base64CAKey}
說明 ${base64CAKey}為步驟3擷取的通過base64編碼後的叢集根私密金鑰。 - 在叢集的每個Worker節點,重複上述步驟,完成所有Worker節點已到期的認證更新。