我有一个在防火墙后面运行的裸机Kubernete集群。当尝试从我的本地计算机(在防火墙的另一端)连接到它时,连接不工作,因为证书不正确。
问题如下。集群在防火墙后面的网络中运行,证书是使用主IP创建的。但是,当我使用相同的证书尝试从内部网络外部连接时,我使用的是不同的IP。此时会出现错误消息,指出证书与我尝试连接的地址不同。
我用于访问集群的IP与此处显示的实际集群IP不同:

我怎么才能修复它?是否可以在我的主节点中使用不同的IP创建另一个证书?
发布于 2019-10-30 02:47:45
您可以通过以下步骤将新的使用者备用名称( can )添加到Kubernetes API服务器证书。
首先需要您的kubeadm配置文件。这将创建一个名为kubeadm.yaml的文件
kubectl -n kube-system get configmap kubeadm-config -o jsonpath='{.data.ClusterConfiguration}' > kubeadm.yaml
现在在编辑器中打开该文件,并在apiServer部分下找到certSANs列表。如果它不存在,则需要添加它;如果存在,则只需向该列表中添加另一个条目。示例:
apiServer:
certSANs:
- "172.29.50.162"
- "k8s.domain.com"
- "other-k8s.domain.net"
extraArgs:
authorization-mode: Node,RBAC
timeoutForControlPlane: 4m0s现在将旧证书移动到另一个文件夹,否则kubeadm将不会重新创建新证书:
mv /etc/kubernetes/pki/apiserver.{crt,key} ~
使用kubeadm生成新的apiserver证书:
kubeadm init phase certs apiserver --config kubeadm.yaml
现在重新启动kubeapiserver容器:
docker ps | grep kube-apiserver | grep -v pause获取运行Kubernetes API服务器的容器的容器ID docker kill <containerID>杀死certificate.Kubelet将自动重启容器,容器将获得新的Kubelet
如果一切正常,请不要忘记更新集群中存储的kubeadm ConfigMap,否则,将来的kubeadm升级将缺少新的配置:
kubeadm config upload from-file --config kubeadm.yaml
这篇文章有一个关于如何的更完整的指南
https://stackoverflow.com/questions/58613244
复制相似问题