- PVSM.RU - https://www.pvsm.ru -
В статье кратко рассмотрены сторонние Open Source-утилиты для Kubernetes, реализующие разные возможности и призванные помочь в повседневной работе. 4 из них взяты из англоязычного материала и помогают в: автоматическом обновлении конфигураций, отслеживании нагрузки по контейнерам/подам/нодам, переключении контекстов, создании DIND-кластеров (Docker in Docker). Остальные — найдены на GitHub и представлены коротким списком.
Сервис онлайн-хранилища Box открывает исходный код некоторых инструментов, используемых у себя для деплоя с помощью Kubernetes. В апреле был представлен [3] один из таких проектов — kube-applier.
Kube-applier запускается как сервис в Kubernetes, берёт из Git-репозитория набор конфигурационных файлов для кластера Kubernetes и последовательно применяет их к подам в кластере. Когда бы эти изменения ни появились в файлах, они автоматически забираются из репозитория и применяются к соответствующим подам. (Пример конфигурации для kube-applier см. здесь [4].)
Изменения могут также применяться по расписанию или по запросу. Kube-applier логирует свои действия при каждом запуске и предлагает метрики для мониторинга с Prometheus.
Kubetop — консольная утилита для вывода списка всех запущенных нод, всех подов на этих нодах и всех контейнеров в этих подах, а также потребление ресурсов процессора и оперативной памяти для каждого из них — аналогично классической Unix-утилите top. Этот инструмент нельзя рекомендовать как полноценную замену детальному журналированию/отчётности, т.к. предоставляемая им информация весьма ограничена, но иногда именно такая краткость и быстрый взгляд на статус кластера Kubernetes могут оказаться очень полезны.
В действительности у kubectl
в составе Kubernetes есть похожая функция, но у Kubetop более наглядный вывод:
kubetop - 13:02:57
Node 0 CPU% 9.80 MEM% 57.97 ( 2 GiB/ 4 GiB) POD% 7.27 ( 8/110) Ready
Node 1 CPU% 21.20 MEM% 59.36 ( 2 GiB/ 4 GiB) POD% 3.64 ( 4/110) Ready
Node 2 CPU% 99.90 MEM% 58.11 ( 2 GiB/ 4 GiB) POD% 7.27 ( 8/110) Ready
Pods: 20 total 0 running 0 terminating 0 pending
POD (CONTAINER) %CPU MEM %MEM
s4-infrastructure-3073578190-2k2vw 75.5 782.05 MiB 20.76
(subscription-converger) 72.7 459.11 MiB
(grid-router) 2.7 98.07 MiB
(web) 0.1 67.61 MiB
(subscription-manager) 0.0 91.62 MiB
(foolscap-log-gatherer) 0.0 21.98 MiB
(flapp) 0.0 21.46 MiB
(wormhole-relay) 0.0 22.19 MiB
Для обращения к кластерам с разными конфигурациями в Kubernetes используется концепция контекста (context). Переключение между ними родной консольной утилитой kubectl
бывает не очень удобным, в результате чего появились сторонние методы решения этой задачи.
Kubectx — Bash-скрипт, позволяющий назначать короткие имена контекстам Kubernetes и переключаться между ними. А если передать в качестве аргумента дефис, то происходит переключение на предыдущий контекст. Скрипт также поддерживает автоматическое дополнение имён по нажатию на <Tab>.
$ kubectx minikube
Switched to context "minikube".
$ kubectx -
Switched to context "oregon".
$ kubectx -
Switched to context "minikube".
$ kubectx dublin=gke_ahmetb_europe-west1-b_dublin
Context "dublin" set.
Aliased "gke_ahmetb_europe-west1-b_dublin" as "dublin".
Другая утилита для переключения контекстов — k8senv — чуть менее функциональна.
Как известно, для тестового запуска локальной инсталляции Kubernetes с одной нодой есть хорошее готовое решение от самого проекта — Minikube [10]. А для тех, кто хочет развернуть для экспериментов или разработки самого Kubernetes кластеры из многих узлов, есть продукт от Mirantis — kubeadm-dind-cluster (KDC).
KDC использует kubeadm
для запуска кластера, созданного из Docker-контейнеров вместо виртуальных машин (для этого применяется DIND, Docker in Docker — прим. перев.). Выбранная реализация позволяет быстрее перезапускать кластер, что особенно ценно, если необходимо быстро видеть результат изменений в коде при разработке самого Kubernetes. Также можно использовать KDC в окружениях непрерывной интеграции. Работает в GNU/Linux, Mac OS и Windows, не требует инсталляции Go, т.к. использует докеризированные сборки Kubernetes.
Пример работы с KDC на базе Kubernetes 1.6:
$ wget https://cdn.rawgit.com/Mirantis/kubeadm-dind-cluster/master/fixed/dind-cluster-v1.6.sh
$ chmod +x dind-cluster-v1.6.sh
$ # запуск кластера
$ ./dind-cluster-v1.6.sh up
$ # добавление директории с kubectl в PATH
$ export PATH="$HOME/.kubeadm-dind-cluster:$PATH"
$ kubectl get nodes
NAME STATUS AGE
kube-master Ready,master 1m
kube-node-1 Ready 34s
kube-node-2 Ready 34s
$ # Kubernetes dashboard доступен на http://localhost:8080/ui
$ # перезапуск кластера, который произойдет намного быстрее первого старта
$ ./dind-cluster-v1.6.sh up
$ # остановка кластера
$ ./dind-cluster-v1.6.sh down
$ # удаление контейнеров и томов DIND
$ ./dind-cluster-v1.6.sh clean
Список прочих вспомогательных утилит для Kubernetes, доступных на GitHub и не упомянутых в оригинальной статье:
tail -f
для всех подов кластера.
Делитесь своими находками в комментариях и подписывайтесь, чтобы не пропускать наши новые статьи! ;-)
Автор: Флант
Источник [24]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/sistemnoe-administrirovanie/257111
Ссылки в тексте:
[1] GitHub: https://github.com/box/kube-applier
[2] временная проблема: https://github.com/kubernetes/kubernetes/issues/7789#issuecomment-280568960
[3] был представлен: https://blog.box.com/blog/introducing-kube-applier-declarative-configuration-for-kubernetes/
[4] см. здесь: https://github.com/box/kube-applier/tree/master/demo
[5] GitHub: https://github.com/LeastAuthority/kubetop
[6] анонс в блоге: https://ahmet.im/blog/kubectx/
[7] GitHub: https://github.com/ahmetb/kubectx
[8] GitHub: https://github.com/philipn/k8senv
[9] GitHub: https://github.com/Mirantis/kubeadm-dind-cluster
[10] Minikube: https://github.com/kubernetes/minikube
[11] kube-monkey: https://github.com/asobti/kube-monkey
[12] chaoskube: https://github.com/linki/chaoskube
[13] Kubediff: https://github.com/weaveworks/kubediff
[14] ktmpl: https://github.com/InQuicker/ktmpl
[15] kube-lint: https://github.com/viglesiasce/kube-lint
[16] kenv: https://github.com/thisendout/kenv
[17] konfd: https://github.com/kelseyhightower/konfd
[18] kubernetes-secret-manager: https://github.com/upmc-enterprises/kubernetes-secret-manager
[19] k8sec: https://github.com/dtan4/k8sec
[20] kube-ops-view: https://github.com/hjacobs/kube-ops-view
[21] kubewatch: https://github.com/skippbox/kubewatch
[22] kube-slack: https://github.com/whs/kube-slack
[23] k8stail: https://github.com/dtan4/k8stail
[24] Источник: https://habrahabr.ru/post/330198/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best
Нажмите здесь для печати.