kubelet.service: Устройство вошло в состояние сбоя в состоянии неготовности, ошибка узла из кластера kubernetes

Я пытаюсь развернуть микросервисы springboot в кластере Kubernetes с 1 главным и 2 рабочими узлами. Когда я пытаюсь получить состояние узла с помощью команды sudo kubectl get nodes, я получаю, что один из моих рабочих узлов не готов. Статус не готов.

Когда я подаю заявку на устранение неполадок следующей команды,

sudo journalctl -u kubelet

Я получаю ответ типа kubelet.service: Unit entered failed state и служба kubelet остановлена. Ниже приводится ответ, который я получаю при применении команды sudo journalctl -u kubelet.

-- Logs begin at Fri 2020-01-03 04:56:18 EST, end at Fri 2020-01-03 05:32:47 EST. --
Jan 03 04:56:25 MILDEVKUB050 systemd[1]: Started kubelet: The Kubernetes Node Agent.
Jan 03 04:56:31 MILDEVKUB050 kubelet[970]: Flag --cgroup-driver has been deprecated, This parameter should be set via the config file specified by the Kubelet's --confi
Jan 03 04:56:31 MILDEVKUB050 kubelet[970]: Flag --cgroup-driver has been deprecated, This parameter should be set via the config file specified by the Kubelet's --confi
Jan 03 04:56:32 MILDEVKUB050 kubelet[970]: I0103 04:56:32.053962     970 server.go:416] Version: v1.17.0
Jan 03 04:56:32 MILDEVKUB050 kubelet[970]: I0103 04:56:32.084061     970 plugins.go:100] No cloud provider specified.
Jan 03 04:56:32 MILDEVKUB050 kubelet[970]: I0103 04:56:32.235928     970 server.go:821] Client rotation is on, will bootstrap in background
Jan 03 04:56:32 MILDEVKUB050 kubelet[970]: I0103 04:56:32.280173     970 certificate_store.go:129] Loading cert/key pair from "/var/lib/kubelet/pki/kubelet-client-curre
Jan 03 04:56:38 MILDEVKUB050 kubelet[970]: I0103 04:56:38.107966     970 server.go:641] --cgroups-per-qos enabled, but --cgroup-root was not specified.  defaulting to /
Jan 03 04:56:38 MILDEVKUB050 kubelet[970]: F0103 04:56:38.109401     970 server.go:273] failed to run Kubelet: running with swap on is not supported, please disable swa
Jan 03 04:56:38 MILDEVKUB050 systemd[1]: kubelet.service: Main process exited, code=exited, status=255/n/a
Jan 03 04:56:38 MILDEVKUB050 systemd[1]: kubelet.service: Unit entered failed state.
Jan 03 04:56:38 MILDEVKUB050 systemd[1]: kubelet.service: Failed with result 'exit-code'.
Jan 03 04:56:48 MILDEVKUB050 systemd[1]: kubelet.service: Service hold-off time over, scheduling restart.
Jan 03 04:56:48 MILDEVKUB050 systemd[1]: Stopped kubelet: The Kubernetes Node Agent.
Jan 03 04:56:48 MILDEVKUB050 systemd[1]: Started kubelet: The Kubernetes Node Agent.
Jan 03 04:56:48 MILDEVKUB050 kubelet[1433]: Flag --cgroup-driver has been deprecated, This parameter should be set via the config file specified by the Kubelet's --conf
Jan 03 04:56:48 MILDEVKUB050 kubelet[1433]: Flag --cgroup-driver has been deprecated, This parameter should be set via the config file specified by the Kubelet's --conf
Jan 03 04:56:48 MILDEVKUB050 kubelet[1433]: I0103 04:56:48.901632    1433 server.go:416] Version: v1.17.0
Jan 03 04:56:48 MILDEVKUB050 kubelet[1433]: I0103 04:56:48.907654    1433 plugins.go:100] No cloud provider specified.
Jan 03 04:56:48 MILDEVKUB050 kubelet[1433]: I0103 04:56:48.907806    1433 server.go:821] Client rotation is on, will bootstrap in background
Jan 03 04:56:48 MILDEVKUB050 kubelet[1433]: I0103 04:56:48.947107    1433 certificate_store.go:129] Loading cert/key pair from "/var/lib/kubelet/pki/kubelet-client-curr
Jan 03 04:56:49 MILDEVKUB050 kubelet[1433]: I0103 04:56:49.263777    1433 server.go:641] --cgroups-per-qos enabled, but --cgroup-root was not specified.  defaulting to
Jan 03 04:56:49 MILDEVKUB050 kubelet[1433]: F0103 04:56:49.264219    1433 server.go:273] failed to run Kubelet: running with swap on is not supported, please disable sw
Jan 03 04:56:49 MILDEVKUB050 systemd[1]: kubelet.service: Main process exited, code=exited, status=255/n/a
Jan 03 04:56:49 MILDEVKUB050 systemd[1]: kubelet.service: Unit entered failed state.
Jan 03 04:56:49 MILDEVKUB050 systemd[1]: kubelet.service: Failed with result 'exit-code'.
Jan 03 04:56:59 MILDEVKUB050 systemd[1]: kubelet.service: Service hold-off time over, scheduling restart.
Jan 03 04:56:59 MILDEVKUB050 systemd[1]: Stopped kubelet: The Kubernetes Node Agent.
Jan 03 04:56:59 MILDEVKUB050 systemd[1]: Started kubelet: The Kubernetes Node Agent.
Jan 03 04:56:59 MILDEVKUB050 kubelet[1500]: Flag --cgroup-driver has been deprecated, This parameter should be set via the config file specified by the Kubelet's --conf
Jan 03 04:56:59 MILDEVKUB050 kubelet[1500]: Flag --cgroup-driver has been deprecated, This parameter should be set via the config file specified by the Kubelet's --conf
Jan 03 04:56:59 MILDEVKUB050 kubelet[1500]: I0103 04:56:59.712729    1500 server.go:416] Version: v1.17.0
Jan 03 04:56:59 MILDEVKUB050 kubelet[1500]: I0103 04:56:59.714927    1500 plugins.go:100] No cloud provider specified.
Jan 03 04:56:59 MILDEVKUB050 kubelet[1500]: I0103 04:56:59.715248    1500 server.go:821] Client rotation is on, will bootstrap in background
Jan 03 04:56:59 MILDEVKUB050 kubelet[1500]: I0103 04:56:59.763508    1500 certificate_store.go:129] Loading cert/key pair from "/var/lib/kubelet/pki/kubelet-client-curr
Jan 03 04:56:59 MILDEVKUB050 kubelet[1500]: I0103 04:56:59.956706    1500 server.go:641] --cgroups-per-qos enabled, but --cgroup-root was not specified.  defaulting to
Jan 03 04:56:59 MILDEVKUB050 kubelet[1500]: F0103 04:56:59.957078    1500 server.go:273] failed to run Kubelet: running with swap on is not supported, please disable sw
Jan 03 04:56:59 MILDEVKUB050 systemd[1]: kubelet.service: Main process exited, code=exited, status=255/n/a
Jan 03 04:56:59 MILDEVKUB050 systemd[1]: kubelet.service: Unit entered failed state.
Jan 03 04:56:59 MILDEVKUB050 systemd[1]: kubelet.service: Failed with result 'exit-code'.
Jan 03 04:57:10 MILDEVKUB050 systemd[1]: kubelet.service: Service hold-off time over, scheduling restart.
Jan 03 04:57:10 MILDEVKUB050 systemd[1]: Stopped kubelet: The Kubernetes Node Agent.
Jan 03 04:57:10 MILDEVKUB050 systemd[1]: Started kubelet: The Kubernetes Node Agent.

файл журнала: служба: устройство вошло в состояние сбоя

Попробовал перезапустить кубелет. Но по-прежнему нет изменений в состоянии узла. Только не готовое состояние.

Обновления

Когда я пытаюсь выполнить команду systemctl list-units --type=swap --state=active, я получаю следующий ответ:

docker@MILDEVKUB040:~$ systemctl list-units --type=swap --state=active
UNIT                                            LOAD   ACTIVE SUB    DESCRIPTION
dev-mapper-MILDEVDCR01\x2d\x2dvg\x2dswap_1.swap loaded active active /dev/mapper/MILDEVDCR01--vg-swap_1

Важно

Когда я получаю такую ​​проблему с узлом, который не готов, мне каждый раз нужно отключить подкачку и перезагрузить демон и кубелет. После этого узел переходит в состояние готовности. И снова мне нужно повторить то же самое.

Как я могу найти для этого постоянное решение?


person Jacob    schedule 03.01.2020    source источник
comment
поделиться информацией о докере | grep Driver '   -  person P Ekambaram    schedule 06.01.2020
comment
какая ОС у мастера и узла. а как ставили кубернеты? ты пользовался кубеадм?   -  person P Ekambaram    schedule 06.01.2020
comment
Я использую Ubuntu 16.04 и kubeadm для установки кубернетов.   -  person Jacob    schedule 06.01.2020
comment
поделитесь выводом из cat /etc/systemd/system/kubelet.service.d/10-kubeadm.conf и 'docker info | grep Driver '   -  person P Ekambaram    schedule 06.01.2020


Ответы (2)


failed to run Kubelet: running with swap on is not supported, please disable swap

Для работы kubelet необходимо отключить своп в системе. Вы можете отключить своп с помощью sudo swapoff -a

Для систем на основе systemd существует другой способ включения разделов подкачки с использованием модулей подкачки, который включается всякий раз, когда systemd перезагружается, даже если вы отключили подкачку с помощью swapoff -a

https://www.freedesktop.org/software/systemd/man/systemd.swap.html

Проверьте, есть ли у вас обменные единицы, используя systemctl list-units --type=swap --state=active

Вы можете навсегда отключить любой активный блок подкачки с помощью systemctl mask <unit name>.

Примечание. Не используйте systemctl disable <unit name> для отключения модуля подкачки, так как модуль подкачки будет снова активирован при перезагрузке systemd. Используйте только systemctl mask <unit name>.

Чтобы убедиться, что подкачка не включается повторно при перезагрузке системы из-за выключения питания или по любой другой причине, удалите или закомментируйте записи подкачки в /etc/fstab

Подведение итогов:

  1. Запустите sudo swapoff -a

  2. Проверьте, есть ли у вас сменные блоки с помощью команды systemctl list-units --type=swap --state=active. Если есть какие-либо активные блоки подкачки, замаскируйте их с помощью systemctl mask <unit name>

  3. Удалить записи подкачки в /etc/fstab

person Shashank V    schedule 03.01.2020
comment
Я уже отключил, когда готовлю узел, следуя предварительной документации kubernetes, применив команду sudo swapoff -a. - person Jacob; 03.01.2020
comment
Похоже, вы используете systemd. Вероятно, у вас есть обменные единицы. Проверьте, есть ли у вас обменные единицы, используя systemctl list-units --type=swap --state=active. Вы можете замаскировать любой активный блок подкачки, используя systemctl mask - person Shashank V; 03.01.2020
comment
Когда я применяю команду для проверки активных модулей подкачки, я вижу, что один модуль подкачки активен. И после этого мне снова нужно отключить подкачку и перезапустить демон и кубелет. Тогда только узел показывает состояние готовности. То же самое повторяется каждый раз. Это происходит постоянно. Есть ли какое-то постоянное решение для этого? Я обновился в своем вопросе. Не могли бы вы проверить мои обновления? - person Jacob; 06.01.2020
comment
Как ты своп отключаешь? Вы должны сделать это с помощью команды systemctl mask <swap unit>. - person Shashank V; 06.01.2020
comment
Я отключаю с помощью команды sudo swapoff -a. И после этого я применяю команду sudo systemctl daemon-reload и команду sudo systemctl restart kubelet. Тогда только узел становится в состоянии готовности. После некоторых развертываний снова перехожу в состояние «не готов», и мне нужно снова повторить те же шаги. - person Jacob; 06.01.2020
comment
Как я четко упомянул в своем ответе, своп будет повторно включен, если systemd dameon перезагрузится, если вы отключите его только с помощью sudo swapoff -a. Вам также необходимо замаскировать блок с помощью systemctl mask <unit name> - person Shashank V; 06.01.2020
comment
Я не понял разницы между маской systemctl и swapoff? Официальная документация Kubernetes описывает применение команды swapoff в предварительных требованиях. - person Jacob; 06.01.2020
comment
Ok. Я понял. Позвольте мне попробовать таким образом. Благодарю за ваш ответ. - person Jacob; 06.01.2020
comment
@ Джейкоб Конечно. Я улучшил ответ для большей ясности. - person Shashank V; 06.01.2020
comment
Эта проблема решена с помощью шагов @ShashankV? Была ли у вас возможность это проверить? - person Mark Watney; 07.01.2020

Основная причина - пространство подкачки. Чтобы полностью отключить, выполните следующие действия:

  • запустить swapoff -a: это немедленно отключит подкачку, но активируется при перезапуске
  • удалите все записи подкачки из /etc/fstab перезагрузите систему.

Если своп пропал, хорошо. Если по какой-то причине он все еще здесь, вам пришлось удалить раздел подкачки. Повторите шаги 1 и 2, а затем используйте fdisk или parted, чтобы удалить (теперь неиспользуемый) своп раздел. Будьте осторожны: удаление неправильного раздела приведет к катастрофическим последствиям!

  • reboot

Это должно решить вашу проблему.

person Umesh Kumhar    schedule 11.01.2020