在最开始创建集群的时候我们的apiserver证书可能只加了一个IP,随着集群需要高可用稳定性,所以需要增加master的IP或者迁移master,这个时候就需要重新签发apiserver证书
导出kubeadm-config的内容
kubectl -n kube-system get configmap kubeadm-config -o jsonpath='{.data.ClusterConfiguration}' > kubeadm-init.yaml
查看
apiServer: certSANs: - 10.10.51.5 - 10.10.51.11 extraArgs: authorization-mode: Node,RBAC timeoutForControlPlane: 4m0s apiVersion: kubeadm.k8s.io/v1beta3 certificatesDir: /etc/kubernetes/pki clusterName: kubernetes controlPlaneEndpoint: 10.10.51.5:6443 controllerManager: {} dns: {} etcd: local: dataDir: /var/lib/etcd imageRepository: registry.aliyuncs.com/google_containers kind: ClusterConfiguration kubernetesVersion: v1.23.17 networking: dnsDomain: cluster.local podSubnet: 10.244.0.0/16 serviceSubnet: 10.96.0.0/16 scheduler: {}
编辑内容添加IP后将下现有的apiserver证书移动到其他位置,因为 kubeadm 检测到他们已经存在于指定的位置,它就不会创建新的了。
mv /etc/kubernetes/pki/apiserver.{crt,key} ~/
使用 kubeadm 命令生成一个新的证书:
kubeadm init phase certs apiserver --config kubeadm-init.yaml
验证新的证书信息
openssl x509 -in /etc/kubernetes/pki/apiserver.crt -text
没有问题的话重启apiserver
mv /etc/kubernetes/manifests/kube-apiserver.yaml /tmp/ && sleep 5
mv /tmp/kube-apiserver.yaml /etc/kubernetes/manifests/
最后一步操作
kubeadm init phase upload-config kubeadm --config kubeadm-init.yaml
检查更新后的configmap
kubectl -n kube-system get configmap kubeadm-config -o yaml