Рейтинг:0

ошибка kubelet, статус застрял на «Активно: активация (автоматический перезапуск)»

флаг it

я столкнулся с этим кубелет ошибка на моем кластере k8s под управлением CentOS 7. Эта ошибка возникла после того, как я недавно перезагрузил узлы кластера. Раньше я не сталкивался с подобной проблемой, перезагружая машины.

я пытался бежать swapoff -a отключить своп, но это не решает проблему.

Вот статус systemctl kubelet -l журнал:

[root@test-master ~]# статус systemctl kubelet -l
kubelet.service — kubelet: агент узла Kubernetes
   Загружено: загружено (/usr/lib/systemd/system/kubelet.service; включено; предустановка поставщика: отключена)
  Вставка: /usr/lib/systemd/system/kubelet.service.d
           ââ10-kubeadm.conf
   Активно: активация (автоматический перезапуск) (Результат: код выхода) с понедельника 2022-05-30 13:59:51 +08; 822 мс назад
     Документы: https://kubernetes.io/docs/
  Процесс: 9325 ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS (код=выход, статус=1/FAILURE)
 Основной PID: 9325 (код=выход, статус=1/ОШИБКА)

May 30 13:59:51 test-master kubelet[9325]: Insecure values: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_RC4_128_SHA, TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_3DES_EDE_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA256, TLS_RSA_WITH_RC4_128_SHA. (УСТАРЕЛО: этот параметр должен быть установлен через файл конфигурации, указанный флагом --config в Kubelet. См. https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ для получения дополнительной информации.)
30 мая, 13:59:51 test-master kubelet[9325]: --tls-min-version string Минимальная поддерживаемая версия TLS. Возможные значения: VersionTLS10, VersionTLS11, VersionTLS12, VersionTLS13 (УСТАРЕЛО: этот параметр должен быть установлен через файл конфигурации, указанный флагом --config Kubelet. См. https://kubernetes.io/docs/tasks/administer-cluster/kubelet- config-file/ для получения дополнительной информации.)
30 мая 13:59:51 test-master kubelet[9325]: --tls-private-key-file string Файл, содержащий закрытый ключ x509, соответствующий --tls-cert-file. (УСТАРЕЛО: этот параметр должен быть установлен через файл конфигурации, указанный флагом --config в Kubelet. См. https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ для получения дополнительной информации.)
30 мая, 13:59:51 test-master kubelet[9325]: --topology-manager-policy строка Используемая политика менеджера топологии. Возможные значения: «нет», «максимальные усилия», «ограниченный», «один-нума-узел». (по умолчанию «нет») (УСТАРЕЛО: этот параметр должен быть установлен через файл конфигурации, указанный флагом --config Kubelet. См. https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ для дополнительной информации.)
30 мая 13:59:51 test-master kubelet[9325]: --topology-manager-scope string Область, к которой применяются подсказки топологии. Менеджер топологии собирает подсказки от поставщиков подсказок и применяет их к определенной области, чтобы обеспечить допуск модуля. Возможные значения: «контейнер», «контейнер». (по умолчанию «контейнер») (УСТАРЕЛО: этот параметр должен быть установлен через файл конфигурации, указанный флагом --config Kubelet. См. https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ для дополнительной информации.)
30 мая 13:59:51 test-master kubelet[9325]: -v, --v Номер уровня детализации на уровне лога
30 мая 13:59:51 test-master kubelet[9325]: --version version[=true] Распечатать информацию о версии и выйти
30 мая, 13:59:51 test-master kubelet[9325]: --vmodule pattern=N,... разделенный запятыми список настроек pattern=N для ведения журнала с фильтрацией файлов (работает только для текстового формата журнала)
30 мая, 13:59:51. -plugins/volume/exec/") (УСТАРЕЛО: этот параметр должен быть установлен через файл конфигурации, указанный флагом --config Kubelet. См. https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config. -file/ для получения дополнительной информации.)
30 мая, 13:59:51 test-master kubelet[9325]: --volume-stats-agg-period duration Указывает интервал, в течение которого kubelet рассчитывает и кэширует использование дискового тома для всех модулей и томов. Чтобы отключить вычисления объема, установите отрицательное число. (по умолчанию 1m0s) (УСТАРЕЛО: этот параметр должен быть установлен через файл конфигурации, указанный флагом --config Kubelet. См. https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ для получения дополнительной информации. Информация.)

Это содержание /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf упомянуто в предыдущем журнале:

[root@test-master ~]# cat /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf
# Примечание. Этот дропин работает только с kubeadm и kubelet v1.11+.
[Оказание услуг]
Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf"
Среда="KUBELET_CONFIG_ARGS=--config=/var/lib/kubelet/config.yaml"
# Это файл, который "kubeadm init" и "kubeadm join" генерируют во время выполнения, динамически заполняя переменную KUBELET_KUBEADM_ARGS.
EnvironmentFile=-/var/lib/kubelet/kubeadm-flags.env
# Это файл, который пользователь может использовать для переопределения аргументов kubelet в крайнем случае. Желательно, чтобы пользователь использовал
# вместо этого объект .NodeRegistration.KubeletExtraArgs в файлах конфигурации. KUBELET_EXTRA_ARGS должен быть получен из этого файла.
EnvironmentFile=-/etc/sysconfig/kubelet
ExecStart=
ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS

Я также пытался добавить Environment="KUBELET_SYSTEM_PODS_ARGS=--pod-manifest-path=/etc/kubernetes/manifests --allow-привилегированный=true --fail-swap-on=false" в указанный файл здесь вместе с systemctl демон-перезагрузка и systemctl перезапустить кубелет но это не помогает.

К сожалению, я не совсем уверен в версии сервера, но она должна быть такой же, как у меня. версия клиента [v1.23.3].

[root@test-master ~]# версия kubectl
Версия клиента: version.Info{Major:"1", Minor:"23", GitVersion:"v1.23.3", GitCommit:"816c97ab8cff8a1c72eccca1026f7820e93e0d25", GitTreeState:"clean", BuildDate:"2022-01-25T21:25: 17Z", версия Go: "go1.17.6", компилятор: "gc", платформа: "linux/amd64"}
В соединении с сервером 10.17.98.171:6443 было отказано - вы указали правильный хост или порт?

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


Обновлять:

Я попытался найти сообщения об ошибках в журнале, используя журналctl -fu кубелет и это самое близкое, что я могу найти.

31 мая, 08:58:12 test-master systemd[1]: время задержки kubelet.service истекло, запланирован перезапуск.
31 мая, 08:58:12 test-master systemd[1]: остановлен kubelet: агент узла Kubernetes.
31 мая, 08:58:12 test-master systemd[1]: запущен kubelet: агент узла Kubernetes.
31 мая 08:58:12 test-master kubelet[5280]: ошибка: не удалось разобрать флаг kubelet: неизвестный флаг: --network-plugin

Кроме того, вот мой версия кублета Кубернетес v1.24.1.

Похоже, это связано с этой проблемой на GitHub, https://github.com/kubernetes/веб-сайт/issues/33640.

Joe S avatar
флаг it
@SYN Спасибо за предложение, которое помогло мне сузить проблему.
SYN avatar
флаг hk
SYN
kubernetes API недоступен, согласно вашей «версии kubectl». Проверьте свою службу API kubernetes (или модуль). Затем проверьте «journalctl -fu kubelet», что будет более информативно, чем kubelet состояния systemctl, которым вы поделились до сих пор. Было бы много логов, ищите какой-нибудь префикс "Е" (ошибки).

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.