Kubernetes не удается подключиться к серверу: набрать tcp x.x.x.x:6443: время ожидания ввода-вывода

#linux #kubernetes

#linux #kubernetes

Вопрос:

Я использую тестовый кластер kubenetes (настройка Kubeadm 1 master и 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, и я в порядке с точки зрения безопасности, поскольку это тестовая настройка. или любое исправление параметров.

Комментарии:

1.Я думаю, вы не сможете управлять этим таким образом. Вам необходимо изменить IP и повторно сгенерировать сертификаты. Взгляните на эти ссылки: github.com/kubernetes/kubeadm/issues/338#issuecomment-407383077 github.com/kubernetes/kubeadm/issues/338#issuecomment-418879755

2. @Vidya Вы решили эту проблему? Вы пробовали шаги, предложенные Марио ?

3. Я пытался, но это не сработало, это связано с изменением моего общедоступного IP-адреса, а также с использованием hyper-v, я просто перешел на статический ip

Ответ №1:

Поскольку @Vidya уже решил эту проблему, используя статический IP-адрес, я решил предоставить вики-ответ сообщества только для лучшей видимости другим членам сообщества.

Прежде всего, не рекомендуется иметь часто меняющийся IP-адрес master / server.
Как мы можем найти в обсуждении на GitHub kubernetes / 88648 kubeadm не предоставляет простого способа справиться с этим.

Однако есть несколько обходных путей, которые могут нам помочь при изменении IP-адреса на главном узле Kubernetes. На основе обсуждения изменения основного IP-адреса я подготовил сценарий, который восстанавливает сертификаты и повторно инициализирует главный узел.

Этот сценарий может быть полезен, но я рекомендую запускать по одной команде за раз (так будет безопаснее).
Кроме того, вам может потребоваться настроить некоторые шаги в соответствии с вашими потребностями:
ПРИМЕЧАНИЕ: В приведенном ниже примере я использую 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
  

Затем вам нужно снова подключить рабочие узлы к кластеру.