我正在使用测试kubenetes集群(设置了Kubeadm 1个主节点和2个节点),我的公共IP会不时更改,而当我的公共IP更改时,我将无法连接到集群并且出现错误
Kubernetes Unable to connect to the server: dial tcp x.x.x.x:6443: i/o timeout
我还拥有始终保持一致的专用IP 10.10.10.10。
我使用以下命令创建了kubernetes集群
kubeadm init --control-plane-endpoint 10.10.10.10
但是仍然失败,因为证书已签名到公共IP,并且下面是错误
The connection to the server x.x.x.x:6443 was refused - did you specify the right host or port?
有人可以帮助设置kubeadm,并且应该允许所有IP都为0.0.0.0之类的东西吗?出于安全考虑,我很好,因为它是测试设置。或任何parament修复程序。
答案 0 :(得分:2)
既然 @Vidya 已经通过使用静态 IP 地址解决了这个问题,我决定提供一个社区 Wiki 答案,只是为了让其他社区成员更好地了解。
首先,不建议频繁更换主/服务器IP地址。
正如我们在 GitHub 上的讨论中发现的那样,kubernetes/88648 - kubeadm
并没有提供一种简单的方法来处理这个问题。
但是,当 Kubernetes 主节点上的 IP 地址发生变化时,有一些解决方法可以帮助我们。 基于 Changing master IP address 的讨论,我准备了一个重新生成证书和重新初始化主节点的脚本。
这个脚本可能会有所帮助,但我建议一次运行一个命令(这样会更安全)。
此外,您可能需要根据自己的需要自定义一些步骤:
注意:在下面的示例中,我使用 Docker 作为容器运行时。
root@kmaster:~# cat reinit_master.sh
#!/bin/bash
set -e
echo "Stopping kubelet and docker"
systemctl stop kubelet docker
echo "Making backup kubernetes data"
mv /etc/kubernetes /etc/kubernetes-backup
mv /var/lib/kubelet /var/lib/kubelet-backup
echo "Restoring certificates"
mkdir /etc/kubernetes
cp -r /etc/kubernetes-backup/pki /etc/kubernetes/
rm /etc/kubernetes/pki/{apiserver.*,etcd/peer.*}
echo "Starting docker"
systemctl start docker
echo "Reinitializing master node"
kubeadm init --ignore-preflight-errors=DirAvailable--var-lib-etcd
echo "Updating kubeconfig file"
cp /etc/kubernetes/admin.conf ~/.kube/config
然后您需要将工作节点重新加入集群。