kubectl-fd: поиск ресурсов Kubernetes как UNIX find

Плагин для kubectl, который позволяет работать с ресурсами Kubernetes в духе утилиты UNIX find.

Искать ресурсы можно по:

  • регулярному выражению в имени

  • возрасту

  • меткам (labels)

  • статусу

  • имени узла (только для подов)

  • количеству перезапусков (только для подов)

  • имени образа (только для подов)

  • jq-фильтру — произвольному условию

После поиска найденные ресурсы можно вывести, изменить (patch), аннотировать или удалить.

Использование

kubectl fd [тип ресурса | pods] [флаги]

Флаги:
  -r, --name string                    Регулярное выражение для фильтрации ресурсов по имени; если не указано — возвращаются все ресурсы заданного типа.
  -n, --namespace string               Пространство имён для данного запроса.
  -A, --all-namespaces                 Поиск во всех пространствах имён; если не указано — поиск только в текущем.
      --status string                  Фильтрация подов по статусу (фазе): 'Running', 'Pending', 'Succeeded', 'Failed', 'Unknown'.
      --image string                   Регулярное выражение для фильтрации по именам образов контейнеров.
  -j, --jq string                      jq-выражение для фильтрации ресурсов; использует библиотеку gojq.
      --restarted                      Найти поды, перезапускавшиеся хотя бы один раз.
  -l, --selector string                Селектор меток для фильтрации ресурсов.
      --max-age string                 Фильтрация по максимальному возрасту; например, '2d' — 2 дня, '3h' — 3 часа.
      --min-age string                 Фильтрация по минимальному возрасту; например, '2d' — 2 дня, '3h' — 3 часа.
      --node string                    Фильтрация подов по регулярному выражению для имени узла; использует pod.Spec.NodeName или pod.Status.NominatedNodeName, если первое пустое.
  -L, --labels strings                 Список меток через запятую для отображения в выводе.
  -T, --annotations strings            Список аннотаций через запятую для отображения в выводе.
  -N, --node-labels strings            Список меток узла через запятую для отображения в выводе.
      --natural-sort                   Сортировать имена ресурсов в естественном порядке.
  -h, --help                           Справка по kubectl find.
  -p, --patch string                   Применить указанный JSON-патч ко всем найденным ресурсам.
  -e, --exec string                    Выполнить команду на всех найденных подах.
      --annotate string                Аннотировать все найденные ресурсы; формат: k=v[,k2=v2] для добавления/обновления или k- для удаления аннотаций.
      --delete                         Удалить все совпавшие ресурсы.
  -y, --skip-confirm                   Не запрашивать подтверждение перед выполнением действий над ресурсами.
      --force                          Немедленно удалить ресурсы через API, минуя мягкое удаление. Работает только вместе с флагом --delete.

Установка

Через krew

krew install fd

Скачать бинарный файл

Скачайте последний релиз для вашей платформы и операционной системы и сохраните файл под именем kubectl-fd в одной из директорий $PATH.

Примеры

Фильтрация через jq

Использует реализацию jq на основе gojq. Структуру ресурсов можно изучить на kubespec.dev.

Найти поды с пустым nodeSelector

kubectl fd pods -j '.spec.nodeSelector == null' -A

Найти поды с неопределёнными ресурсами

kubectl fd pods -j 'any( .spec.containers[]; .resources == {} )' -A

Фильтрация по регулярному выражению

Вместо

kubectl get pods -o name | grep test

используйте

kubectl fd -r test

Фильтрация по возрасту ресурса

kubectl fd cm --min-age 1d -A --name spark

Выполнение команды на нескольких подах

kubectl fd pods -l app=nginx --exec 'nginx -s reload'

Найти все упавшие поды и удалить их

kubectl fd pods --status failed -A --delete

Аннотирование ресурсов

Добавить аннотации к найденным подам

kubectl fd pods -r nginx --annotate 'team=backend,env=production'

Удалить аннотацию у всех совпавших подов

kubectl fd pods --status Running --annotate 'deprecated-'

Одновременное добавление и удаление аннотаций

kubectl fd pods -l app=nginx --annotate 'owner=team-a,old-owner-'

Найти перезапускавшиеся поды

kubectl fd --restarted

Расширенный вывод

Показать метки ресурсов

k fd -L app.kubernetes.io/component
NAME                                              READY   STATUS    RESTARTS   AGE    COMPONENT
admin-backend-server-6fb6bbb8f6-2xntp             1/1     Running   0          7h4m   deployments-server
admin-frontend-nginx-b8c88b7b4-pxx2x              1/1     Running   0          3h7m   deployments-nginx
top-react-ok-app-develop-nginx-586c65496f-h4b9p   1/1     Running   0          11h    deployments-nginx
top-react-ok-app-stage-nginx-8595cbfb6c-qzt2z     1/1     Running   0          11h    deployments-nginx
nginx                                             1/1     Running   0          18d    <none>
redis-redis-ha-server-0                           1/1     Running   0          11h    <none>
super-admin-server-65d57f8787-5c9sd               1/1     Running   0          11h    deployments-server
ok-web-app-nginx-5c78887cbf-2n8fw                 1/1     Running   0          11h    deployments-nginx

Показать метки узлов для подов

k fd -N topology.kubernetes.io/zone
NAME                                              READY   STATUS    RESTARTS   AGE    NODE             ZONE
admin-backend-server-6fb6bbb8f6-2xntp             1/1     Running   0          7h5m   nodeee-short-2   eu-central1-b
admin-frontend-nginx-b8c88b7b4-pxx2x              1/1     Running   0          3h8m   nodeee-short-2   eu-central1-b
top-react-ok-app-develop-nginx-586c65496f-h4b9p   1/1     Running   0          11h    nodeee-short-2   eu-central1-b
top-react-ok-app-stage-nginx-8595cbfb6c-qzt2z     1/1     Running   0          11h    nodeee-short-2   eu-central1-b
nginx                                             1/1     Running   0          18d    nodeee-long-3    eu-central1-b
redis-redis-ha-server-0                           1/1     Running   0          11h    nodeee-short-2   eu-central1-b
super-admin-server-65d57f8787-5c9sd               1/1     Running   0          11h    nodeee-short-2   eu-central1-b
ok-web-app-nginx-5c78887cbf-2n8fw                 1/1     Running   0          11h    nodeee-short-2   eu-central1-b
zipkin-ok-shop-zipkin-5d94fcdc67-r8pcx            1/1     Running   0          10d    nodeee-long-1    eu-central1-b

Показать аннотации ресурсов

k fd -T example.com/owner
NAME                                              READY   STATUS    RESTARTS   AGE    OWNER
admin-backend-server-6fb6bbb8f6-2xntp             1/1     Running   0          7h4m   team-a
admin-frontend-nginx-b8c88b7b4-pxx2x              1/1     Running   0          3h7m   team-b
top-react-ok-app-develop-nginx-586c65496f-h4b9p   1/1     Running   0          11h    team-a
nginx                                             1/1     Running   0          18d    <none>

Естественная сортировка (natural sort)

Обычная сортировка:

kubectl fd
NAME       READY   STATUS    RESTARTS   AGE
nginx-0    1/1     Running   0          5m14s
nginx-1    1/1     Running   0          5m12s
nginx-10   1/1     Running   0          4m53s
nginx-11   1/1     Running   0          4m50s
nginx-12   1/1     Running   0          4m48s
nginx-13   1/1     Running   0          4m46s
nginx-14   1/1     Running   0          4m44s
nginx-2    1/1     Running   0          5m10s
nginx-3    1/1     Running   0          5m7s
nginx-4    1/1     Running   0          5m5s
nginx-5    1/1     Running   0          5m3s
nginx-6    1/1     Running   0          5m1s
nginx-7    1/1     Running   0          4m59s
nginx-8    1/1     Running   0          4m57s
nginx-9    1/1     Running   0          4m55s

Естественная сортировка:

kubectl fd --natural-sort
NAME       READY   STATUS    RESTARTS   AGE
nginx-0    1/1     Running   0          6m6s
nginx-1    1/1     Running   0          6m4s
nginx-2    1/1     Running   0          6m2s
nginx-3    1/1     Running   0          5m59s
nginx-4    1/1     Running   0          5m57s
nginx-5    1/1     Running   0          5m55s
nginx-6    1/1     Running   0          5m53s
nginx-7    1/1     Running   0          5m51s
nginx-8    1/1     Running   0          5m49s
nginx-9    1/1     Running   0          5m47s
nginx-10   1/1     Running   0          5m45s
nginx-11   1/1     Running   0          5m42s
nginx-12   1/1     Running   0          5m40s
nginx-13   1/1     Running   0          5m38s
nginx-14   1/1     Running   0          5m36s

Автодополнение

Скопируйте скрипт kubectl_complete-fd в любую директорию, входящую в PATH.

История звёзд

© 2026 meganuke