Диагностика ошибок при создании кластера Kubernetes
Если при создании кластера Kubernetes возникают ошибки, например кластер зависает, и удалить его невозможно, проведите диагностику и исправьте возникающие ошибки.
В ходе диагностики необходимо определить, создаются ли ВМ под кластер. Для этого:
- Проверьте, что вызывает ошибки на этапах создания кластера.
- Создайте инстанс master-узла и запустите на нем ОС.
- Сбросьте статус кластера на
ERROR.
Чтобы определить, какие ошибки происходят на этапах создания кластера Kubernetes:
-
Создайте кластер Kubernetes нужной версии.
Подробнее — в документе Руководство пользователя VK Private Cloud в разделе Контейнеры → Создание кластера Kubernetes.
Если на этом шаге в веб-интерфейсе Платформы возникает ошибка, используйте консоль разработчика в браузере (клавиша F12) для ее диагностики.
-
Создайте объекты OpenStack для будущего кластера: сети, порты, балансировщики нагрузки, диски, инстанс.
Если на шаге 2 и 3 возникли ошибки, используйте Heat для их диагностики.
-
Создайте инстанс master-узла и запустите на нем ОС.
На этом этапе необходимо просмотреть логи внутри самого инстанса, для этого зайдите на инстанс по SSH или через веб- или virsh-консоль. Подробнее — в документе Руководство администратора VK Private Cloud в разделе Эксплуатация и администрирование → Администрирование Платформы → Подготовка образа диска ВМ для загрузки в Платформу.
-
Просмотрите файл
/var/log/cloud-init-output.log: первые ошибки вы можете отследить в событиях от пакетаcloud-init, который запускается внутри инстанса.После общей настройки ВМ
cloud-initскачивает двоичный файлmagnum-agent. Если этот файл не найден, например указан неправильный путь, процесс создания кластера дальше не пойдет. -
Просмотрите лог с ошибками на этапе, когда файл
magnum-agentзакачивает контейнер сmagnum-scripts:# journalctl -l --no-pager -u magnum-agent.serviceЕсли по логу видно, что образ Docker не найден, процесс дальше не пойдет.
-
Просмотрите логи на этапе, когда скрипты
magnum-scriptsзапускают плейбуки ansible для настройки master-узла:# journalctl -l --no-pager -u magnum-scripts-ansible.serviceПосле запуска контейнера вы можете найти плейбуки на хосте в каталоге
/etc/kubernetes/ansible/.Причины ошибок плейбуков будут видны из логов демона. Основываясь на логах, исправьте ошибки в плейбуках в каталоге на хосте и перезапустите сервис.
-
Просмотрите статусы кластера Kubernetes, когда скрипты
magnum-scriptsдойдут до следующей задачи:TASK [common : Wait for Kubernetes API port]Для этого:
-
Получите список всех подов во всех неймспейсах:
# kubectl get pods -A -
Просмотрите статусы подов. В зависимости от статусов просмотрите расширенную информацию о поде:
# kubectl describe pod monitoring-grafana-5f4fdcccd4-mpqps --namespace kube-systemНа данном этапе могут проявиться ошибки отсутствующего образа в Docker Registry или неподходящего helm-чарта.
Также в OpenStack может начать создаваться slave-узел, и некоторые поды будут ждать его для установки. Посмотрите узлы кластера:
# kubectl get node -
Просмотрите ошибки объектов PersistentVolume (PV), создающихся через Cinder, со стороны Kubernetes:
# kubectl get pvc --namespace kube-system# kubectl describe pvc grafana-pvc --namespace kube-system# kubectl get storageclasses.storage.k8s.io
-
Чтобы удалить кластер Kubernetes, зависший в процессе создания:
-
Перейдите на управляющий узел.
-
Узнайте UUID кластера:
# magnum cluster-list -
Запустите скрипт для сброса статуса кластера на
ERROR:# ./reset_magnum_cluster.sh -e <КЛАСТЕР>Здесь
<КЛАСТЕР>— ID кластера, полученный на предыдущем шаге. -
Запустите повторно процесс удаления кластера.
Подробнее — в статье Как сбросить статус кластера Kubernetes.