Kubernetes无法连接到服务器:拨打tcp x.x.x.x:6443:I / O超时

时间:2020-10-12 05:56:32

标签: linux kubernetes

我正在使用测试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修复程序。

1 个答案:

答案 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

然后您需要将工作节点重新加入集群。