Одна из наиболее приятных возможностей kubectl
– это его расширяемость за счёт плагинов.
Конечно, есть Lens, который прям отлично заходит разработчикам, которые не очень любят консоль, или есть k9s, но плагины kubectl
– отдельная тема.
В этом посте установим Krew для управления плагинами, и рассмотрим несколько наиболее интересных, с моей личной точки зрения, плагинов.
Содержание
Krew – менеджер плагинов kubectl
Сравнительно недавно для kubectl
появился даже свой менеджер плагинов – krew
.
У него есть свой репозиторий плагинов, из которого можно установить новый плагин, он же позволяет выполнять их обновление и удаление.
На Arch Linux можно установить из AUR:
Arch Linux:
[simterm]
$ yay -S krew
[/simterm]
Обновляем список пакетов:
[simterm]
$ kubectl krew update
[/simterm]
Ищем пакет:
[simterm]
$ kubectl krew search topology NAME DESCRIPTION INSTALLED topology Explore region topology for nodes or pods no
[/simterm]
Устанавливаем его:
[simterm]
$ 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 /
[/simterm]
И проверяем:
[simterm]
$ 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.
[/simterm]
Полезные плагины
В конце поста будет несколько ссылок на другие подобные коллекции плагинов, а ниже – те, которые я использую для работы.
kubectl-topology
Начнём с плагина kubectl-topology
, который позволяет вывести список всех WorkerNodes, их регионов и подов на каждой ноде:
kubectl-resources
Плагин kubectl-resources
позволяет вывести информацию о лимитах и используемых ресурсах.
Устанавливаем с помощью Go:
[simterm]
$ go get github.com/howardjohn/kubectl-resources
kubectl-free
Плагин kubectl-free
работает аналогично утилите free
в Linux – выводит информацию о свободных и занятых ресурсах на нодах.
Устанавливаем – загружаем последний архив со страницы релизов, распаковываем, копируем в /usr/local/bin
:
[simterm]
$ cd /tmp/ $ wget https://github.com/makocchi-git/kubectl-free/releases/download/v0.2.0/kubectl-free_0.2.0_Linux_x86_64.zip $ unzip kubectl-free_0.2.0_Linux_x86_64.zip $ sudo cp kubectl-free_0.2.0_Linux_x86_64/kubectl-free /usr/local/bin/
[/simterm]
И его работа:
kubecolor
Плагин kubecolor
улучшает читабельность в консоли – добавляет цвета в вывод kubectl
.
Устанавливаем с Go:
[simterm]
$ go install github.com/dty1er/kubecolor/cmd/kubecolor@latest
[/simterm]
В ~/.bashrc
добавляем алиас:
alias kk="kubecolor"
Результат:
kubectl-watch
Улучшенный вариант kubectl --watch
. Страница проекта тут>>>.
Устанавливаем:
[simterm]
$ git clone https://github.com/lee0c/kubectl-watch.git $ cd kubectl-watch $ chmod +x kubectl-watch $ sudo mv kubectl-watch /usr/local/bin/
[/simterm]
Проверяем:
[simterm]
$ kubectl plugin list The following kubectl-compatible plugins are available: /usr/local/bin/kubectl-watch ...
[/simterm]
И запускаем:
kubectl-clogs
Продвинутый просмотр логов. Аналогичен работе kubectl logs -f
, но можно получать логи всех подов в конкретном нейспспейсе. Страница проекта тут>>>.
Устанавливаем:
[simterm]
$ go install github.com/ivkalita/kubectl-clogs/cmd/kubectl-clogs@latest
[/simterm]
Смотрим логи всех подов в неймспейсе istio-system:
kubectl-who-can
kubectl-who-can
позволяет проверить RBAC-роли и доступы.
Устанавливаем с Krew:
[simterm]
$ kubectl krew install who-can
[/simterm]
Проверяем – кто может удалять поды в неймспейсе default:
kubectl-rolesum
kubectl-rolesum
также используется для работы с Kubernetes RBAC – проверка прав доступов.
Устанавливаем:
[simterm]
$ kubectl krew install rolesum
[/simterm]
И проверим доступы для ServiceAccount kiali-service-account в неймспейсе istio-system:
ketall
ketall
выводит действительно все ресурсы, включая Secrets, ServiceAccount, роли, биндинги и т.д., а не только Pod, Service, Daemonset, Deployment и ReplicaSet, как это делает дефолтный kubectl get all
.
Устанавливаем:
[simterm]
$ kubectl krew install get-all
[/simterm]
Пример kubectl get all
:
И с ketall
– kubectl get-all
:
kubectl-status
kubectl-status
выводит расширенную информацию о статусах подов, нод, деплойментов, сервисов и так далее.
Устанавливаем:
[simterm]
$ kubectl krew install status
[/simterm]
И проверим статус Kubernetes WorkerNode, у которых задана лейбла role: data-workers
:
Pod-Dive
Pod-Dive выводит расширенную информацию о поде – нода, неймспейс, контейнеры и поды, работающие на той же WorkerNode.
Устанавливаем:
[simterm]
$ kubectl krew install pod-dive
[/simterm]
И проверим под:
kubectl-janitor
kubectl-janitor
– “дворник” для кластера. Позволяет находить проблемные ресурсы, такие как незашедуленные поды, джобы и диски.
Устанавливаем:
[simterm]
$ kubectl krew install janitor
[/simterm]
И находим все поды, которым не нашлось WorkerNode:
kubectl-cf
И последний на сегодня плагин – kubectl-cf
.
Вообще, очень много плагинов для работы с контекстами и неймспейсами, но лично я пользуюсь отдельными файлами для различных кластеров, а не контекстами в ~/.kube/config
:
[simterm]
$ ls -1 ~/.kube/ | grep kubeconfig dev-1-18.kubeconfig prod-1-18.kubeconfig stage-1-18.kubeconfig test-1-18.kubeconfig
[/simterm]
Для быстрого переключения между ними можно использовать kubectl-cf
, который через создание симлинков с ~/.kube/config
переключает файлы.
Для его работы всем файлам требуется расширение .kubeconfig
.
Устанавливаем – качаем репозиторий, собираем из исходника, копируем в /usr/local/bin
:
[simterm]
$ git clone https://github.com/spongeprojects/kubectl-cf.git $ cd kubectl-cf/ $ go build -o kubectl-cf $ sudo cp kubectl-cf /usr/local/bin/
[/simterm]
Ссылки по теме
- awesome-kubectl-plugins – a curated list of awesome
kubectl
plugins - Top 179 Kubectl Plugins Open Source Projects on Github