Часто встречающиеся проблемы и пути их устранения#

В данном разделе приведены сценарии для решения частых проблем, возникающих при работе кластера DropApp.

Решение проблемы: простой контейнера в случае сбоя#

В DropApp проблема простоя в случае сбоя решается с помощью модуля Deployments.

# Стандартные поля для всех ресурсов DropApp: apiVersion, kind, metadata, spec
apiVersion: apps/v1
kind: Deployment
metadata:
name: dropapp-backend-deployment
labels:
app: dropapp-backend

# Определите настройки для развертывания.
spec:
replicas: 3

# `selector` определяет, какие модули будут управляться этим развертыванием.
# настройка репликации модуля, соответствующего метке `app: dropapp`.
selector:
matchLabels:
app: dropapp
role: backend

# `template` определяет модуль, которым будет управлять это развертывание.
template:
metadata:
# Убедитесь, что метки модуля соответствуют меткам развертывания. 
labels:
app: dropapp
role: backend
# Pod имеет свою собственную спецификацию внутри спецификации Deployment.
# Определите какие контейнеры должен запускать pod.
spec:
containers:
- name: dropapp-backend
image: dropapp-backend:1.14.2
ports:
- containerPort: 80

Deployments управляет набором pods с меткой app: dropapp. Также можно поставить метки для pod внутри самих deployments. Модуль гарантирует наличие трех реплик pod с такой меткой в любой момент времени.

Важно

При применении манифеста выше, будет создан deployments. Однако при этом не создаются необходимые pods, поэтому кратковременно не будет работать ни одна реплика: кластер не будет соответствует задекларированному состоянию и предпримет действия, чтобы это исправить — запустит новую реплику. Далее DropApp снова оценит состояние кластера и создаст новую реплику. Действия будут повторятся, пока система не будет соответствовать задекларированному состоянию.

Решение проблем: ebtables или аналогичный исполняемый файл, не найден во время установки#

Следующие предупреждения от kubeadm init:

[preflight] WARNING: ebtables not found in system path
[preflight] WARNING: ethtool not found in system path

Результат отсутствия ebtables, ethtool или аналогичного исполняемого файла на node кластера.

Данные файлы можно установить с помощью следующих команд:

dnf install ebtables ethtool.

Решение проблем: gathering logs#

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

journalctl --identifier=ignition --all

Где:

  • --identifier=ignition - вывод логов, связанных с ignition;

  • --all - отображение всех полей при выводе, включая длинные и непечатаемые.

Примечание

ignition — это утилита подготовки, которая считывает файл конфигурации (в формате JSON) и подготавливает систему на основе этой конфигурации. Настраиваемые компоненты включают в себя хранилища и файловые системы, модули systemd и пользователей.

Если журнал или текущий пользователь не принадлежат группе systemd-journal, команда выше может не дать результатов. Повторите запуск от имени пользователя с административными полномочиями, например root.