Как исправить "CrashLoopBackOff" при развертывании родного сервиса

При попытке запустить родную службу в моем GKE. Стручки дают мне ошибку CrashLoopBackOff. что можно сделать, чтобы решить эту проблему?

2 ответа

Приведенный выше ответ является правильным для следующих шагов в соответствии с CrashLoopBackOff.

  1. Проверьте "Код выхода" разбившегося контейнера, чтобы найти основную причину проблемы.

Из вывода команды описать pod, как упоминалось выше, в

containers: [CONTAINER_NAME]: last state: exit code поле.

  • Если код выхода равен 1, контейнер потерпел крах, потому что произошло сбой приложения.
  • Если код выхода равен 0, проверьте, как долго работает ваше приложение. Контейнеры закрываются при выходе из основного процесса вашего приложения. Если ваше приложение завершает выполнение очень быстро, контейнер может продолжить перезапуск.

    1. Подключиться к работающему контейнеру. Запустите эту команду в оболочке Pod.

kubectl exec -it [POD_NAME] -- /bin/bash

Если в вашем Pod есть несколько контейнеров, добавьте -c [CONTAINER_NAME],

Теперь вы можете использовать этот контейнер для тестирования, запустив из него команды bash.

Вот ссылка на все вопросы по устранению неполадок с Kubernetes Engine.

CrashLoopBackOff - это состояние стручка Kubernetes. Это означает, что ваш модуль постоянно выходит из строя и перезапускается, в какой-то момент Kubernetes замедляет скорость перезапуска модуля, чтобы сэкономить ресурсы в кластере.

Есть несколько способов отладки этой ошибки:

Этот получает всю информацию о состоянии стручка, и иметь части статуса, тщательно ища здесь, является существенным.

kubectl get pod $podname -o yaml

Этот показывает, что случилось со стручком, и некоторую дополнительную информацию.

kubectl describe pod $podname

Этот показывает журналы, но предыдущий модуль, так что это полный журнал начала до конца. Без предыдущей части он показывает текущий модуль и может показывать не все журналы.

kubectl logs $podname --previous

Последний вариант - это не команда, а способ подойти, если вы действительно хотите копаться в контейнере, а приведенные выше команды не помогли, добавьте sidecar в pod и проверьте файловую систему на наличие ошибок или просто установите.spec.restart в Never и выполните его.

Другие вопросы по тегам