#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
Затем вам нужно снова подключить рабочие узлы к кластеру.