На странице сведений о рабочей нагрузке, если отображается событие, указывающее, что pod не удалось запустить, выполните следующие действия для поиска неисправности:
Если узел использует Docker, выполните следующую команду:
docker ps -a | grep $podName
Если узел использует containerd, выполните следующую команду:
Если узел использует Docker, выполните следующую команду:
docker logs $containerID
Если узел использует containerd, выполните следующую команду:
Исправьте неисправность рабочей нагрузки на основе журналов.
cat /var/log/messages | grep $containerID | grep oom
Проверьте, был ли вызван системный OOM на основе журналов.
Определите причину на основе журналов или событий, как указано в Table 1.
Журнал или событие | Возможная причина | Поиск неисправности и решение |
|---|---|---|
Pod logs: exit code 0 | В поде нет процесса. | Проверьте, может ли pod работать корректно. Для подробностей см. No Process in the Pod (Exit Code: 0). |
| Проверка состояния не прошла. | Проверьте, правильно ли настроен liveness probe для pod. Для подробностей см. Health Check Failed (Exit Code: 137). |
| Недостаточно места на диске. | Увеличьте объём диска или удалите ненужные файлы. Для подробностей см. Insufficient Disk Space of the Pod. |
Pod logs: oom | Недостаточно памяти pod. | Проверьте, имеет ли pod правильные настройки ресурсов. Для получения подробной информации см. Insufficient Container Resources. |
Pod logs: Address already in use | В pod возникает конфликт между портами контейнеров. | Проверьте, существует ли конфликт портов контейнеров в pod. Для получения подробной информации см. Container Port Conflict in the Pod. |
Kubernetes event:
| Секрет монтируется к рабочей нагрузке, и значение секрета не зашифровано с использованием Base64. | Для получения подробной информации о решении см. Improper Value of the Secret Mounted to the Workload. |
Kubernetes event:
| Контейнерный образ x86 может работать на узле Arm. | Для получения подробной информации о решении см. Unmatched Container Image Tag with the Node Architecture. |
Kubernetes event:
| Версия containerd несовместима с версией tail. | Для получения подробной информации о решении см. Exit of tail -f xx in the Container Startup Command (Exit Code: 141). |
Other pod logs | Локализуйте неисправность на основе сервисов. | Для получения подробной информации о локализации неисправности см. Service Setting Checks. |
Если узел использует Docker, выполните следующую команду:
docker ps -a | grep $podName
Если узел использует containerd, выполните следующую команду:
Ниже приведён пример.

Если в pod нет процесса, отображается код статуса Exited (0).
Проверки состояния, настроенные для рабочей нагрузки, периодически выполняются на сервисах. Если происходит исключение, будет событие, указывающее на нездоровый pod, и перезапуски pod завершатся неудачей.
Если для рабочей нагрузки настроен liveness probe и количество неудачных проверок состояния превышает порог, pod будет перезапущен. На странице сведений о рабочей нагрузке, если события Kubernetes содержат Liveness probe failed: Get http..., проверка состояния не проходит.
Решение
Нажмите имя рабочей нагрузки, чтобы перейти на страницу сведений о рабочей нагрузке, нажмите вкладку Containers. Затем выберите Health Check, чтобы проверить, корректна ли политика и правильно ли работают сервисы.
Следующее сообщение относится к thin pool диску, который выделяется из Docker диска, выбранного при создании узла. Вы можете выполнить команду lvs от пользователя root для просмотра текущего использования диска.
Thin Pool has 15991 free data blocks which is less than minimum required 16383 free data blocks. Create more free space in thin pool or use dm.min_free_space option to change behavior

Решение
Решение 1: Очистка образов
Выполните следующие действия для очистки неиспользуемых образов: Не удаляйте системные образы, такие как образ cce-pause. В противном случае создание pod может завершиться ошибкой.
Решение 2: Расширение ёмкости диска
Чтобы расширить ёмкость диска, выполните следующие действия:
Только ёмкость хранилищ EVS‑дисков может быть увеличена. Необходимо выполнить следующие операции для расширения ёмкости логических томов и файловых систем.
Диск с данными делится в зависимости от контейнерного хранилища Rootfs:
Если достигнут верхний предел ресурсов контейнера, OOM будет отображён в деталях события, а также в журнале:
cat /var/log/messages | grep 96feb0a425d6 | grep oom

При создании рабочей нагрузки, если запрошенные ресурсы превышают настроенный верхний предел, система OOM срабатывает, и контейнер завершается неожиданно.
Если node использует Docker, запустите следующую команду:
docker ps -a | grep $podName
Если node использует containerd, запустите следующую команду:
Если node использует Docker, запустите следующую команду:
docker logs $containerID
Если node использует containerd, запустите следующую команду:
Устраните ошибку рабочей нагрузки на основе журналов. Как показано на следующем рисунке, порты контейнеров в одном pod конфликтуют. В результате контейнер не может быть запущен.
Рисунок 1 Сбой перезапуска pod из‑за конфликта порта контейнера

Решение
Настройте корректные порты контейнеров, которые не конфликтуют друг с другом. Затем создайте рабочую нагрузку заново.
Если pod использует host network (с параметром hostNetwork: true), может возникнуть конфликт порта контейнера. Это происходит потому, что контейнеры в pod разделяют сетевой интерфейс и диапазон портов с узлом‑хостом. Несколько pod, использующих один и тот же порт, не могут работать на одном узле.
В событии отображается информация, аналогичная следующей:
Error: failed to start container "filebeat": Error response from daemon: OCI runtime create failed: container_linux.go:330: starting container process caused "process_linux.go:381: container init caused \"setenv: invalid argument\"": unknown
Коренной причиной является монтирование секрета в рабочую нагрузку, но значение секрета не зашифровано с помощью Base64.
Решение
Создайте Secret в консоли. Значение Secret автоматически шифруется с помощью Base64.
Если вы используете YAML для создания Secret, необходимо вручную зашифровать его значение с помощью Base64.
echo -n "Content to be encoded" | base64
При создании рабочей нагрузки на узле Arm не используется корректный тег образа. Чтобы решить проблему, используйте правильный тег образа.
Событие Kubernetes выглядит следующим образом:
the failed container exited with ExitCode: 141
Возможная причина
Устаревшая версия containerd несовместима с версией tail (≥ 8.28) в образе контейнера. В результате выполнение команды tail -f приводит к неожиданному завершению, возвращая код выхода 141.
Временное решение
Измените tail -f xx в параметрах запуска на sleep 2 && tail -f xx и создайте рабочую нагрузку заново.
Решение
Проверьте, правильно ли выполняется команда запуска рабочей нагрузки или есть ли в ней ошибка.
Если узел использует Docker, выполните следующую команду:
docker ps -a | grep $podName
Если узел использует containerd, выполните следующую команду:
Если узел использует Docker, выполните следующую команду:
docker logs $containerID
Если узел использует containerd, выполните следующую команду:
Примечание: В предыдущей команде containerID указывает идентификатор контейнера, который завершил работу.
Figure 2 Неправильная команда запуска контейнера

Как показано на рисунке выше, контейнер не запускается из‑за неправильной команды запуска. Для других ошибок исправьте баги, основываясь на журналах.
Решение
Создайте новый workload и настройте правильную команду запуска.