krew
— это пакетный менеджер плагинов для kubectl, официальный проект Kubernetes SIG CLI. Делает с плагинами kubectl примерно то же, что apt/brew делают с программами в системе: ищет, ставит, обновляет и удаляет. После установки плагин становится подкомандой — kubectl <plugin>.
На момент написания в официальном индексе krew-index
~359 плагинов: для отладки, сети, безопасности, multi-cluster, работы с секретами, логами, манифестами и т. д. Без krew пришлось бы вручную собирать бинарники, класть их в $PATH и следить за обновлениями.
Установка
Требование:
kubectlверсии 1.12 или выше.
Linux / macOS (bash, zsh)
(
set -x; cd "$(mktemp -d)" &&
OS="$(uname | tr '[:upper:]' '[:lower:]')" &&
ARCH="$(uname -m | sed -e 's/x86_64/amd64/' -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/')" &&
KREW="krew-${OS}_${ARCH}" &&
curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/latest/download/${KREW}.tar.gz" &&
tar zxvf "${KREW}.tar.gz" &&
./"${KREW}" install krew
)Добавляем ~/.krew/bin в PATH (в ~/.bashrc или ~/.zshrc):
export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"После рестарта шелла проверяем:
kubectl krewFish
begin
set -x; set temp_dir (mktemp -d); cd "$temp_dir" &&
set OS (uname | tr '[:upper:]' '[:lower:]') &&
set ARCH (uname -m | sed -e 's/x86_64/amd64/' -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/') &&
set KREW krew-$OS"_"$ARCH &&
curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/latest/download/$KREW.tar.gz" &&
tar zxvf $KREW.tar.gz &&
./$KREW install krew &&
set -e KREW temp_dir &&
cd -
endВ ~/.config/fish/config.fish:
set -gx PATH $PATH $HOME/.krew/binWindows
- Скачать
krew.exeсо страницы релизов . - В
cmd.exeс правами администратора:CMD.\krew install krew - Добавить
%USERPROFILE%\.krew\binвPATH, открыть новый терминал и проверитьkubectl krew.
Базовые команды
# Список доступных плагинов в индексе
kubectl krew search
# Поиск по подстроке
kubectl krew search secret
# Установка плагина
kubectl krew install ctx ns view-secret
# Список установленных
kubectl krew list
# Информация о плагине
kubectl krew info ctx
# Обновление индекса и всех плагинов
kubectl krew update
kubectl krew upgrade
# Удаление
kubectl krew uninstall ctxПосле установки плагин вызывается через kubectl <plugin>, например kubectl ctx или kubectl view-secret cluster-example-app.
Кастомные индексы
krew умеет работать с приватными или сторонними индексами плагинов — для внутренних корпоративных утилит. Подробности — в официальной доке .
kubectl krew index add my-corp https://github.com/my-corp/krew-index.git
kubectl krew install my-corp/internal-toolПодборка полезных плагинов
Полный список — kubectl krew search или krew.sigs.k8s.io/plugins
. Ниже — то, что регулярно пригождается на практике, сгруппированное по задачам.
Навигация по контекстам и namespace’ам
- ctx — переключение между контекстами kubectl (та же утилита, что kubectx ). Поддерживает интерактивный выбор через fzf.
- ns — переключение между namespace’ами (kubens). После
kubectl ns kube-systemвсе команды по умолчанию идут в этот namespace. - ctx-tags — теги/группировка контекстов, удобно при десятках кластеров.
- konfig — управление множественными kubeconfig-файлами: merge, split, импорт/экспорт.
- change-ns — альтернатива
ns, попроще.
Просмотр ресурсов
- get-all —
kubectl get allпоказывает только избранные типы;get-allпоказывает все ресурсы (включая CRD) в namespace. - tree / lineage — иерархия owner references: «кто породил кого». Незаменимо для отладки контроллеров, операторов, GitOps-инструментов.
- neat — чистит YAML от служебных полей (
status,creationTimestamp,managedFieldsи т. п.) — на выходе минимально-полный манифест, готовый к коммиту в репо. - explore — интерактивный обзор Kubernetes API: какие поля есть у ресурса, какие типы.
- custom-cols — генератор
-o custom-columnsшаблонов. - fields — выборочный вывод полей из ресурсов.
Логи и события
- stern — тейл логов с нескольких подов одновременно по label-селектору. Стандарт de facto.
- kubetail — альтернатива
stern, проще. - tail — упрощённый
tailдля логов. - podevents — события (
Events) пода в живом режиме. - node-logs — логи systemd-юнитов на самой ноде через
kubectl-API.
Отладка подов и нод
- node-shell — мгновенный root-shell на любой ноде кластера (поднимает privileged-под). Спасает, когда SSH-доступа к нодам нет.
- debug-shell — отладочный контейнер с базовыми утилитами рядом с целевым подом.
- debug-pvc — отладка PVC: монтирует его в служебный под для просмотра.
- debug-pdb — анализ
PodDisruptionBudget‘ов, мешающих evict’ить поды. - pod-dive — подробный «срез» пода с привязкой к нодам.
- pod-lens — обзорный TUI для подов.
- exec-as —
kubectl execот имени конкретного пользователя. - execws — exec через WebSocket (нужен в некоторых прокси-сценариях).
- crashloop / crashwatch — анализ и live-watch для подов в
CrashLoopBackOff. - evict-pod — корректный evict пода с уважением к PDB.
Секреты и сертификаты
- view-secret — расшифровка base64 в
Secret‘ах одной командой:kubectl view-secret <name> <key>. - modify-secret / edit-secret — редактирование значений в
Secret‘ах без ручного base64. - view-cert — инспекция TLS-сертификатов из
Secret‘ов: validity, issuer, subject, SAN. Безopenssl x509 -text -noout. - cert-manager — управление ресурсами cert-manager.
- encrypted-kubeconfig — шифрование kubeconfig’ов (защита от утечек из домашних каталогов).
Сеть
- access-matrix — матрица «кто что может» на основе RBAC. Альтернатива
kubectl auth can-iсразу для всех verb/resource. - cilium — управление CNI Cilium.
- ingress-nginx — операционка над NGINX Ingress (бэкенды, конфиг, дамп).
- ingress-rule — быстрое создание Ingress-правил.
- net-forward — улучшенный
port-forward. - multiforward — port-forward сразу нескольких сервисов.
- ip-check — проверка IP-адресации в кластере.
- np-viewer — визуализация
NetworkPolicy.
Безопасность и аудит
- kubescape — security-сканер кластера (CIS, NSA-CISA, MITRE).
- kubesec-scan — анализ манифестов на security best practices через kubesec.io .
- popeye — аудит кластера: устаревшие API, плохие практики, неиспользуемые ресурсы.
- kor — поиск orphaned/unused ресурсов (Secret, ConfigMap, RBAC).
- deprecations — какие используемые API будут удалены в следующих версиях Kubernetes.
- preflight / preq — preflight-проверки перед инсталляцией приложений в кластер.
- doctor — общая диагностика кластера.
- rbac-tool (часто ставится не из krew) и access-matrix — анализ RBAC.
Storage / PV / PVC
- df-pv —
dfдля PersistentVolume’ов: сколько занято, сколько свободно. - browse-pvc — открыть содержимое PVC во временном поде.
- directpv — управление DirectPV.
- openebs / mayastor / kadalu — операционка для соответствующих storage-проектов.
- jfs — управление JuiceFS.
Multi-cluster
- karmada — управление Karmada-кластерами.
- liqo — мульти-кластер от Liqo.
- clusternet — управление Clusternet.
- cluster-compare — сравнение состояния двух кластеров.
- cluster-group — группы кластеров.
Конкретные операторы / стек
- cnpg — официальный плагин CloudNativePG: статусы Postgres-кластеров, fail-over, бэкапы, PUB/SUB. См. серию рецептов CloudNativePG.
- kruise — для OpenKruise.
- kyverno — Policy Engine Kyverno.
- flame — flamegraph’ы для подов.
- datadog — интеграция с Datadog.
Производительность и наблюдаемость
- ktop —
topв TUI для нод и подов. - gpu-top —
topпо GPU-нагрузке. - cost — оценка стоимости ресурсов в кластере (требует OpenCost /Kubecost-данных).
- mtail — multi-tail для метрик.
- glance — обзор кластера в одном экране.
Работа с YAML / манифестами
- neat — чистка манифестов (см. выше).
- crd-wizard — мастер создания CRD.
- creyaml — генератор YAML-стейтов из текущих ресурсов.
- config-cleanup — удаление мёртвых записей из kubeconfig.
- envsubst — подстановка env-переменных в манифесты.
- konfig — операции с kubeconfig (merge/split).
Прочее интересное
- node-restart — корректный rolling-restart нод.
- finalizers — управление finalizer’ами на ресурсах (полезно при «застрявших» удалениях).
- history / outdated — история и устаревшие версии ресурсов.
- emit-event — генерация искусственного
Event(для отладки контроллеров). - fuzzy — fuzzy-поиск по ресурсам.
- klock — лочит правки kubectl.
С чего начать новичку
Минимальный must-have, который ставится первым делом:
kubectl krew install ctx ns view-secret view-cert stern neat get-all node-shellДальше — по необходимости: cnpg, popeye, kubescape, kor, tree/lineage, df-pv.
Полезные ссылки
- krew.sigs.k8s.io — официальная документация.
- krew-index — репозиторий со всеми плагинами.
kubectl krew search— самый актуальный список локально, прямо из терминала.