Commands
Kubernetes

kubectl get pods: Список подов с фильтрацией по namespace, label, статусу

Список подов с фильтрацией по namespace, label, статусу

Вот шпаргалка, которую я сам держу под рукой. kubectl get pods — это как ls для кубера, основа основ.

Базовый синтаксис

Самая простая команда, которая показывает поды в текущем неймспейсе.

kubectl get pods

Здесь kubectl — это клиент, get — действие (получить), pods — тип ресурса. Вывод показывает ключевое: имя пода, готовность, статус, количество рестартов и возраст.

Полезные флаги

-A или --all-namespaces Когда нужно быстро оценить общую картину по всему кластеру. Например, проверить, нет ли проблемных подов в системных неймспейсах.

kubectl get pods -A

-n Работаешь с конкретным сервисом — сразу смотри в его неймспейсе. Не переключай контекст.

kubectl get pods -n monitoring

-l Фильтрация по лейблам — основной способ работы. Все сервисы так помечены.

kubectl get pods -l app=nginx,component=frontend

-o wide Когда мало информации из get pods. Покажет IP пода и ноду, на которой он работает. Незаменимо для сетевой отладки.

kubectl get pods -o wide

--field-selector Прямая фильтрация по полям объекта, а не по лейблам. Особенно полезно для фильтрации по статусу или ноде.

kubectl get pods --field-selector=status.phase=Running

Типичные сценарии

1. Найти все поды, которые крешлупятся. Сначала смотрим на поды с большим числом рестартов во всем кластере.

kubectl get pods -A --sort-by='{.status.containerStatuses[0].restartCount}' | tail -10

2. Найти все поды на конкретной ноде для её дренирования. Перед выводом ноды из эксплуатации нужно понять, что на ней работает.

kubectl get pods -A -o wide --field-selector spec.nodeName=node-01

3. Быстро найти все поды в статусе Pending или Error. Проблемные поды, которые не могут запуститься.

kubectl get pods -A --field-selector="status.phase!=Running"

Частые ошибки

Путаница флагов -n и -A. Запуск kubectl get pods -n (без значения) приводит к ошибке. Хуже, если использовать -A и -n вместе — -A имеет приоритет, и флаг -n просто игнорируется, что может сбить с толку.

Ожидание реального времени. kubectl get pods — это моментальный снимок состояния. Для наблюдения за изменениями (например, за перезапуском) нужно использовать watch:

watch kubectl get pods -n production