Урок 14: Итоговое занятие по диагностике неполадок
Вы дошли до последнего урока, и в нём мы соберём всё вместе в один инструмент, которым вы будете пользоваться снова и снова: упорядоченный процесс диагностики — runbook. Когда что-то ломается в кластере, легко поддаться панике и начать гадать. Вместо этого мы работаем как детективы: сначала собираем
Диагностика неполадок — это как быть детективом: вы не обвиняете никого, пока не собрали улики. Сначала посмотрите, кто выглядит подозрительно (get), прочитайте показания (describe и logs), и только потом решайте, кто виновен, и исправляйте это.
- Диагностика неполадок
- Упорядоченный процесс поиска причины сбоя: собрать улики (get, describe, logs), сформулировать гипотезу, исправить и убедиться, что проблема исчезла — вместо того чтобы гадать.
- Runbook
- Фиксированный, повторяемый список шагов, которым вы следуете при появлении сбоя. Он позволяет каждому в команде проводить диагностику в одном и том же порядке и не пропускать критический шаг под давлением.
- CrashLoopBackOff
- Состояние Pod, при котором контейнер запускается, падает, а Kubernetes снова и снова повторяет попытки с растущей задержкой между ними. Причина почти всегда в коде или конфигурации приложения — читайте её через logs --previous.
- ImagePullBackOff
- Состояние, при котором Kubernetes не смог скачать (pull) image контейнера: неверное имя или тег, image отсутствует в registry, или не хватает учётных данных. Причина видна в Events команды describe.
- Pending
- Состояние, при котором Pod принят, но ещё не распределён ни на один node — обычно потому, что не хватает свободных ресурсов (CPU/память), или ни один node не соответствует его требованиям.
- События
- Короткий журнал того, что Kubernetes пытался сделать с Pod (запланировал, скачал image, запустил, потерпел неудачу). Он появляется внизу вывода kubectl describe pod и обычно является первой подсказкой к причине.