После установки k8s1.26.2 с помощью kubeadm все поды, включая etcd и kube-proxy, находятся в состоянии crashloopbackoff.

Вопрос или проблема

Я пытаюсь установить k8s1.26 на debian11, моя версия ядра 5.10.0/x86_64. Вот мои журналы kubelet.

Мар 09 17:51:55 devnew0 kubelet[369024]: I0309 17:51:55.933659  369024 scope.go:115] "RemoveContainer" containerID="4ace1812ec7d981b55a51f422287499bdacf240e7c739d50872e6de1892fa7a2"            
Мар 09 17:51:55 devnew0 kubelet[369024]: E0309 17:51:55.934416  369024 pod_workers.go:965] "Error syncing pod, skipping" err="failed to \"StartContainer\" for \"etcd\" with CrashLoopBackOff: \"back-off 10s restarting failed container=etcd pod=etcd-devnew0_kube-system(419ed404bfcd79b143181759583871d1)\"" pod="kube-system/etcd-devnew0" podUID=419ed404bfcd79b143181759583871d1

kubectl не работал.

E0309 18:06:07.103712  375368 memcache.go:238] couldn't get current server API group list: Get "https://162.105.85.70:6443/api?timeout=32s": dial tcp 162.105.85.70:6443: connect: connection refused
E0309 18:06:07.104510  375368 memcache.go:238] couldn't get current server API group list: Get "https://162.105.85.70:6443/api?timeout=32s": dial tcp 162.105.85.70:6443: connect: connection refused
E0309 18:06:07.106487  375368 memcache.go:238] couldn't get current server API group list: Get "https://162.105.85.70:6443/api?timeout=32s": dial tcp 162.105.85.70:6443: connect: connection refused
E0309 18:06:07.108326  375368 memcache.go:238] couldn't get current server API group list: Get "https://162.105.85.70:6443/api?timeout=32s": dial tcp 162.105.85.70:6443: connect: connection refused
E0309 18:06:07.110263  375368 memcache.go:238] couldn't get current server API group list: Get "https://162.105.85.70:6443/api?timeout=32s": dial tcp 162.105.85.70:6443: connect: connection refused
The connection to the server 162.105.85.70:6443 was refused - did you specify the right host or port?

critctl ps -a

CONTAINER           IMAGE               CREATED             STATE               NAME                      ATTEMPT             POD ID              POD       
dde80047d3aff       240e201d5b0d8       34 seconds ago      Exited              kube-controller-manager   131                 fc8b51e8b4b44       kube-controller-manager-devnew0       
d4157ed07257b       63d3239c3c159       2 minutes ago       Exited              kube-apiserver            128                 96cad2187e463       kube-apiserver-devnew0                   
5910c6fb6fe53       fce326961ae2d       4 minutes ago       Exited              etcd                      134                 1fb01d0ecc4de       etcd-devnew0                                                
d635e40f9aade       6f64e7135a6ec       5 minutes ago       Exited              kube-proxy                114                 c6c2597e5097a       kube-proxy-2zmq7                                                   
e87d4f6d34e6d       db8f409d9a5d7       5 minutes ago       Exited              kube-scheduler            143                 0afe7b6d78151       kube-scheduler-devnew0

Я решил эту проблему. Я использовал некоторые устаревшие поля в /etc/containerd/config.toml, что вызывало неправильную работу некоторых узлов. И спасибо за ваш ответ.

@caiji233 какие устаревшие поля вы определили?

.

Ответ или решение

Установка Kubernetes версии 1.26 на системе Debian 11 с использованием инструмента kubeadm может сопровождаться различными техническими вызовами, особенно если кластер не запускается корректно, а все поды, включая etcd и kube-proxy, оказываются в состоянии CrashLoopBackOff. В данном случае проблема усугубляется также тем, что kubectl не удается подключиться к API-серверу, поскольку соединения на указанный порт отказано.

Теория

Когда поды находятся в состоянии CrashLoopBackOff, это указывает на то, что они постоянно перезапускаются из-за ошибок. Это состояние может быть связано с рядом причин, таких как неправильное конфигурирование, проблема с образами контейнеров или проблемы, связанные с сетью. В случае компонента etcd, который является ключевым для работы мастера Kubernetes, причины отказа могут быть связаны с неправильной конфигурацией или недоступностью необходимых ресурсов.

Кроме того, отказ в соединении с API-сервером может указывать на более сложные проблемы в конфигурации сети или наличии ошибки в настройках API-сервера, которые мешают установлению стабильного соединения. Это также может быть следствием ошибок в самой конфигурации etcd, если кластер не может установить работу хранилища данных.

Пример

В предоставленных логах видны явные указания на состояние CrashLoopBackOff у компонентов etcd и kubernetes-менеджмента, такими как kube-proxy, и другие. Проблемы с контейнерами и подами могут возникнуть в следующих случаях:

  1. Неправильная конфигурация: Например, устаревкие поля в файле конфигурации /etc/containerd/config.toml, как было замечено в этом конкретном случае.

  2. Проблемы с сетью: Ошибки подключения к API-серверу также могут указывать на проблемы с сетевым доступом или межсетевыми экранами, блокирующими необходимые порты.

  3. Несоответствие версий: В тех значимых случаях, конфликты версий компонентов (например, kubelet, kube-proxy и т.д.) могут вызывать нестабильность.

Применение

Для устранения проблемы необходимо подойти пошагово:

  1. Проверка конфигурации контейнерного окружения:

    • Убедитесь, что файл /etc/containerd/config.toml не содержит устаревшие или ошибочные параметры. Устаревшие поля могут вызывать несовместимость между компонентами Kubernetes.
  2. Анализ сетевых подключений:

    • Проверьте конфигурацию сетевого межсетевого экрана. Убедитесь, что порты, необходимые для функционирования Kubernetes, такие как 6443 (API-сервер), открыты для необходимого трафика.
    • Убедитесь, что корректно настроены основные сетевые интерфейсы, и DNS может правильно разрешать имена узлов.
  3. Логи и мониторинг:

    • Используйте journalctl -u kubelet для детального просмотра логов службы kubelet.
    • Рассмотрите использование kubectl describe pod <имя_пода> для получения более детальной информации о том, почему поды могут не работать.
  4. Релогирование и перезапуск:

    • Если внесены изменения в конфигурацию, перезапустите соответствующие службы, чтобы изменения вступили в силу, и убедитесь в пересоздании непрерывно работающих контейнеров.
  5. Обновление компонентов:

    • Проведите проверку на наличие обновлений для ваших компонентов Kubernetes и убедитесь, что все компоненты имеют совместимые версии.

Учитывая эти шаги и их реализацию на практике, вы сможете создать рабочую среду Kubernetes, где все системные компоненты будут работать корректно. Устранение основной проблемы с конфигурацией является ключом к установлению стабильности и функциональности для вашего кластера.

Оцените материал
Добавить комментарий

Капча загружается...