Соединение с сервером 10.0.x.x:6443 было отклонено после перезапуска виртуальной машины, на которой был установлен мастер kubernetes с помощью kubeadm.

Я успешно установил мастер Kubernetes с помощью kubeadm на виртуальную машину (VirtualBox). Проблема в том, что если я остановлю машину и перезапущу ее, главный узел, похоже, не работает:

kubectl get nodes
The connection to the server 10.0.x.x:6443 was refused - did you specify the right host or port?

Как я могу убедиться, что он всегда будет работать после перезапуска виртуальной машины?

ОБНОВЛЕНИЕ:

После перезапуска виртуальной машины это то, что я должен сделать, чтобы запустить главный узел:

sudo swapoff -a
sudo systemctl restart kubelet.service

Почему? Как я могу исправить это, чтобы он запускался без ввода этого?


person codependent    schedule 17.05.2018    source источник


Ответы (4)


Проблема в том, что если я остановлю машину и перезапущу ее, главный узел, похоже, не работает.

  • Поскольку это была установка kubeadm, которая работала правильно до перезапуска, кажется, что Env var отсутствует после перезапуска. Попробуйте запустить это до kubectl get nodes:

    export KUBECONFIG=/etc/kubernetes/admin.conf
    

    Если он запускается нормально, вам нужно убедиться, что переменная среды KUBECONFIG правильно настроена при перезапуске, либо добавив ее в .bashrc, либо подобное...

Отредактировано:

Почему? Как я могу исправить это, чтобы он запускался без ввода этого?

  • Ах, файл подкачки дразнит вас. По умолчанию kubelet не запустится, если включен своп. У вас есть два варианта:

    • Remove swap: That's easy, just disable it as you already listed but make it permanent by commenting swap line in /etc/fstab file. Add # before line creating swap mount point and next time you restart you won't have it.
    • Разрешить запуск kubelet с включенным свопом: я знаю, что это не рекомендуется в документации, но если вам нравится жить опасно, вы можете добавить/отредактировать в /etc/systemd/system/kubelet.service.d/10-kubeadm.conf следующую строку:

      Environment="KUBELET_EXTRA_ARGS=--fail-swap-on=false"
      

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

person Const    schedule 17.05.2018
comment
Большой! Обновленный ответ, чтобы отразить это - person Const; 17.05.2018
comment
Спасибо Конст, это исправлено! - person codependent; 17.05.2018

Я решил свою проблему, очистив место на жестком диске. Кажется, что места мало. Затем я перезапустил сервер, и это решило мою проблему.

person Jay    schedule 11.11.2018

Я столкнулся с аналогичной проблемой, когда команды kubectl работают на моем главном узле, но то же самое, выполняемое на подчиненном узле, дает мне эту ошибку:

В соединении с сервером 10.0.x.x:6443 было отказано - вы указали правильный хост или порт?

Решение, которое сработало для меня, выглядит следующим образом:

Я скопировал файл $KUBECONFIG главного и поместил в расположение подчиненных узлов .kube/, и это сработало (у меня только 2 узла, один главный и один подчиненный).

person Santhosh Kumar    schedule 27.01.2020

Вам просто нужно убить службу kubelet и снова перезапустить. pods и контейнер будут работать так же, как и до перезагрузки.

pkill kubelet

а также

systemctl restart kubelet

удачи

person mehrdad rafiee    schedule 02.04.2021