Thank you for reading this post, don't forget to subscribe!
Krew — менеджер плагинов kubectl
Сравнительно недавно для kubectl
появился даже свой менеджер плагинов — krew
.
https://krew.sigs.k8s.io/docs/user-guide/setup/install/
У него есть свой репозиторий плагинов, из которого можно установить новый плагин, он же позволяет выполнять их обновление и удаление.
Обновляем список пакетов:
kubectl krew update
Ищем пакет:
1 2 3 |
kubectl krew search topology NAME DESCRIPTION INSTALLED topology Explore region topology for nodes or pods no |
Устанавливаем его:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
kubectl krew install topology Updated the local copy of plugin index. Upgrades available for installed plugins: * rbac-tool v1.2.1 -> v1.3.0 Installing plugin: topology Installed plugin: topology \ | Use this plugin: | kubectl topology | Documentation: | https://github.com/bmcustodio/kubectl-topology / |
И проверяем:
1 2 3 4 5 6 7 8 |
kubectl topology help Provides insight into the topology of a Kubernetes cluster. Usage: kubectl-topology [command] Available Commands: help Help about any command node Provides insight into the distribution of nodes per region or zone. pod Provides insight into the distribution of pods per region or zone. |
Полезные плагины
В конце поста будет несколько ссылок на другие подобные коллекции плагинов, а ниже — те, которые я использую для работы.
kubectl-topology
Начнём с плагина kubectl-topology
, который позволяет вывести список всех WorkerNodes, их регионов и подов на каждой ноде:
kubectl-resources
Плагин kubectl-resources
позволяет вывести информацию о лимитах и используемых ресурсах.
Устанавливаем с помощью Go:
go get github.com/howardjohn/kubectl-resources
kubectl-free
Плагин kubectl-free
работает аналогично утилите free
в Linux — выводит информацию о свободных и занятых ресурсах на нодах.
Устанавливаем — загружаем последний архив со страницы релизов, распаковываем, копируем в /usr/local/bin
:
kubecolor
Плагин kubecolor
улучшает читабельность в консоли — добавляет цвета в вывод kubectl
.
Устанавливаем с Go:
go install github.com/dty1er/kubecolor/cmd/kubecolor@latest
В ~/.bashrc добавляем алиас:
alias kk="kubecolor"
kubectl-watch
Улучшенный вариант kubectl --watch
. Страница проекта тут>>>.
Устанавливаем:
kubectl-clogs
Продвинутый просмотр логов. Аналогичен работе kubectl logs -f
, но можно получать логи всех подов в конкретном нейспспейсе. Страница проекта тут>>>.
Устанавливаем:
go install github.com/ivkalita/kubectl-clogs/cmd/kubectl-clogs@latest
Смотрим логи всех подов в неймспейсе istio-system:
kubectl-who-can
kubectl-who-can
позволяет проверить RBAC-роли и доступы.
Устанавливаем с Krew:
kubectl krew install who-can
Проверяем — кто может удалять поды в неймспейсе default:
kubectl-rolesum
kubectl-rolesum
также используется для работы с Kubernetes RBAC — проверка прав доступов.
Устанавливаем:
kubectl krew install rolesum
И проверим доступы для ServiceAccount kiali-service-account в неймспейсе istio-system:
ketall
ketall
выводит действительно все ресурсы, включая Secrets, ServiceAccount, роли, биндинги и т.д., а не только Pod, Service, Daemonset, Deployment и ReplicaSet, как это делает дефолтный kubectl get all
.
Устанавливаем:
kubectl krew install get-all
Пример kubectl get all
:
И с ketall
— kubectl get-all
:
kubectl-status
kubectl-status
выводит расширенную информацию о статусах подов, нод, деплойментов, сервисов и так далее.
Устанавливаем:
kubectl krew install status
И проверим статус Kubernetes WorkerNode, у которых задана лейбла role: data-workers
:
Pod-Dive
Pod-Dive выводит расширенную информацию о поде — нода, неймспейс, контейнеры и поды, работающие на той же WorkerNode.
Устанавливаем:
kubectl krew install pod-dive
kubectl-janitor
kubectl-janitor
— «дворник» для кластера. Позволяет находить проблемные ресурсы, такие как незашедуленные поды, джобы и диски.
Устанавливаем:
kubectl krew install janitor
И находим все поды, которым не нашлось WorkerNode:
kubectl-cf
И последний на сегодня плагин — kubectl-cf
.
Вообще, очень много плагинов для работы с контекстами и неймспейсами, но лично я пользуюсь отдельными файлами для различных кластеров, а не контекстами в ~/.kube/config
:
Для быстрого переключения между ними можно использовать kubectl-cf
, который через создание симлинков с ~/.kube/config
переключает файлы.
Для его работы всем файлам требуется расширение .kubeconfig
.
Устанавливаем — качаем репозиторий, собираем из исходника, копируем в /usr/local/bin
: