Часто встречающиеся проблемы и пути их устранения#
В данном разделе приведены сценарии для решения частых проблем, возникающих при работе кластера 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.