Циклы сбоев
Часть раздела Введение в Kubernetes путешествия по Terminal на Coddy. Урок 24 из 45.
Ожидается, что контейнер будет продолжать работу. Когда его процесс завершается, Kubernetes перезапускает его (политика перезапуска Pod — restartPolicy — по умолчанию имеет значение Always). Если он снова и снова завершается, статус становится CrashLoopBackOff, а значение в столбце RESTARTS увеличивается; перед каждым перезапуском пауза становится длиннее.
Вот контейнер, который выводит сообщение и намеренно завершается с ошибкой:
kubectl run crash --image=busybox -- sh -c "echo boom; exit 1"Всё после -- — это команда, которую выполняет контейнер. Несколько раз выведите список Pod и проследите, как статус меняется с Running на Error, а затем на CrashLoopBackOff.
Причина указана в журналах: kubectl logs crash выводит boom — последнее, что сказал контейнер. Даже образу, в котором нечего запускать, например обычному busybox, ничего не мешает сразу завершиться, после чего он попадает в тот же цикл: Pod нужен процесс, который продолжает работать.
Задание
ЛегкоЗапустите Pod с именем crash из образа busybox, выполняющий команду sh -c "echo boom; exit 1". Выведите его журналы, затем дважды выведите список Pod и наблюдайте, как статус достигнет CrashLoopBackOff.
Попробуйте сами
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Введение в Kubernetes
Потренируйтесь самостоятельно: Песочница Terminal