当集群证书过期后,使用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
以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节点的证书更新。