Короткий ответ
kubectl get выводит краткий табличный список объектов и их основные поля, а kubectl describe показывает подробную информацию по одному объекту, включая историю событий (Events), что критично для диагностики проблем планирования, рестартов и ошибок конфигурации.
Как это работает подробнее
describe агрегирует данные объекта (спецификацию, статус, связанные события из API) в читаемый человеком формат, тогда как get -o yaml/-o json выводит сырое представление ресурса без истории событий. События хранятся в etcd ограниченное время (обычно около часа по умолчанию) и привязаны к конкретному объекту.
Пример кода
Команды и вывод
kubectl describe deployment web
Conditions:
Type Status Reason
Available True MinimumReplicasAvailable
Progressing True NewReplicaSetAvailableЧто использовать на практике
- Практика. диагностику проблемы с Pod почти всегда начинают с
kubectl describe pod <name>, обращая внимание на секцииConditions(готовность, планирование) иEvents(последние действия системы и ошибки). Для Deploymentdescribeпокажет статус rollout и связанные ReplicaSet.
Подводные камни
- Риски. пытаться найти причину сбоя только в
kubectl get pods, где видно лишь итоговый статус без контекста; игнорировать, чтоEventsможет быть уже "прокручен" (старые события удалены), если с момента инцидента прошло много времени — в этом случае логи и внешний мониторинг надёжнее.