背景
通过kubeadm部署完成以后,忘记把公网的域名和ip地址放入到apiserver的证书里面了。通过以下的步骤可以重新更新一下apiserver证书里面的地址。
步骤
1. 备份现有的Cluster配置文件
kubectl -n kube-system get configmap kubeadm-config -o jsonpath='{.data.ClusterConfiguration}' > kubeadm.yaml
2. 在yaml以下的段添加公网ip和域名
apiServer:
certSANs:
- "172.29.50.162"#公网IP
- "k8s.domain.com"#公网域名
- "other-k8s.domain.net"
extraArgs:
authorization-mode: Node,RBAC
timeoutForControlPlane: 4m0s
3. 备份老的apiserver的证书文件
mkdir -p /etc/kubernetes/pki/backup
mv /etc/kubernetes/pki/apiserver.{crt,key} /etc/kubernetes/pki/backup/
4. 生产新的apiserver证书文件
cd /etc/kubernetes/pki/
kubeadm init phase certs apiserver --config kubeadm.yaml
5. 登录到apiserver所在的节点,kill 掉apiserver的容器
docker ps | grep kube-apiserver | grep -v pause
docker kill <containerID> #上面步骤grep 出来的容器ID
6. 在config文件中将apiserver地址更新为公网ip或者域名
7. 通过kubectl验证
参考文章: