- PVSM.RU - https://www.pvsm.ru -
Прим. перев.: Автор оригинального материала — Henning Jacobs из компании Zalando. Он создал новый веб-интерфейс для работы с Kubernetes, который позиционируется как «kubectl для веба». Почему новый Open Source-проект появился и каким критериям не удовлетворили уже существующие решения — читайте в его статье.
В этой публикации я рассматриваю различные веб-интерфейсы Kubernetes с открытым исходным кодом, предъявляю свои требования к универсальному UI и рассказываю, почему разработал Kubernetes Web View [1] — интерфейс, призванный облегчить поддержку и устранение неполадок сразу во множестве кластеров.
В Zalando мы обслуживаем большое количество пользователей Kubernetes (900+) и кластеров (100+). Есть пара типичных случаев использования, в которых бы очень пригодилась помощь специализированного веб-инструмента:
По моему опыту, общение в рамках поддержки часто выглядит следующим образом:
— Помогите, наш сервис XYZ недоступен!
— Что вы видите, когда выполняете kubectl describe ingress ...
?
Или нечто похожее для CRD:
— У меня какая-то проблема с сервисом идентификации…
— А что выдает команда kubectl describe platformcredentialsset ...
?
Такое общение обычно сводится к вводу различных вариаций команды kubectl
с целью установить проблему. В результате обе стороны разговора вынуждены постоянно переключаться между терминалом и веб-чатом, плюс они наблюдают разную ситуацию.
Поэтому хочется, чтобы веб-фронтенд к Kubernetes позволял следующее:
Реагирование на инциденты в инфраструктуре требует наличия ситуационной осведомленности, способности оценивать воздействие и поиска закономерностей в кластерах. Некоторые примеры из реальной жизни:
Мое стандартное решение в таких случаях — нечто вроде for i in $clusters; do kubectl ...; done
. Очевидно, можно разработать инструмент, предоставляющий аналогичные возможности.
Open Source-мир веб-интерфейсов к Kubernetes не слишком велик*, так что я попробовал собрать дополнительную информацию с помощью Twitter [2]:
* Мое объяснение ограниченного числа веб-интерфейсов для Kubernetes: облачные сервисы и вендоры Kubernetes обычно предлагают собственные фронтенды, поэтому рынок для «хороших» свободных Kubernetes UI сравнительно невелик.
С помощью твита я узнал о K8Dash [3], Kubernator [4] и Octant [5]. Посмотрим на них и другие существующие Open Source-решения, попробуем понять, что они собой представляют.
«K8Dash — это простейший способ управлять кластером Kubernetes».
K8Dash [3] неплохо выглядит и по ощущениям быстро работает, но обладает рядом недостатков для перечисленных выше сценариев использования:
«Kubernator — это альтернативный UI для Kubernetes. В отличие от высокоуровневой панели Kubernetes Dashboard, он обеспечивает низкоуровневый контроль и отличный обзор всех объектов в кластере с возможностью создавать новые, редактировать их и разрешать конфликты. Будучи целиком клиентским приложением (как kubectl), он не требует какого-либо бэкенда за исключением самого API-сервера Kubernetes, а также учитывает правила доступа к кластеру».
Это довольно точное описание Kubernator'а [4]. Увы, ему не хватает некоторых возможностей:
«Kubernetes Dashboard — это универсальный веб-интерфейс для кластеров Kubernetes. Он позволяет пользователям управлять приложениями, работающими в кластере, и устранять их неполадки, а также управлять самим кластером».
К сожалению, Kubernetes Dashboard [6] не особо помогает в моих мероприятиях по поддержке и реагированию на инциденты, потому что в нём:
kubectl -L
).«Системная панель-наблюдатель за пространством кластеров K8s».
У Kubernetes Operational View [7] совершенно другой подход: этот инструмент только показывает узлы кластера и pod'ы с помощью WebGL, без каких-либо текстовых подробностей объектов. Он отлично подходит для оперативного обзора состояния кластера («pod'ы падают?»)*, но не подходит для описанных выше случаев использования в поддержке и реагировании на инциденты.
* Прим. перев.: В этом смысле вас также может заинтересовать наш плагин grafana-statusmap [8], о котором мы рассказывали подробнее в этой статье [9].
«Собирайте сведения о запросах на ресурсы pod'ов и кластера Kubernetes, сравнивайте их с потреблением ресурсов и генерируйте статичный HTML».
Kubernetes Resource Report [10] генерирует статичные HTML-отчеты об использовании ресурсов и распределении затрат по командам/приложениям в кластерах. Отчет в некоторой степени полезен для поддержки и реагирования на инциденты, поскольку позволяет быстрее найти кластер, в котором развернуто приложение.
Прим. перев.: В просмотре сведений о распределении ресурсов и их стоимости у облачных провайдеров может также оказаться полезным сервис и инструмент Kubecost [11], обзор которого мы недавно публиковали [12].
«Расширяемая веб-платформа для разработчиков, призванная обеспечить лучшее понимание сложности кластеров Kubernetes».
Octant [5], созданный в VMware, — новый продукт, о котором я узнал сравнительно недавно. С его помощью удобно исследовать кластер на локальной машине (есть даже визуализации), однако он затрагивает проблематику поддержки и реагирования на инциденты лишь в ограниченной степени. Недостатки Octant:
Также у меня был проблемы с устойчивостью работы Octant с кластерами Zalando: на некоторых CRD он падал [13].
«kubectl для веба».
Проанализировав доступные варианты интерфейсов для Kubernetes, я решил создать новый: Kubernetes Web View [1]. Ведь по сути мне всего лишь нужна вся мощь kubectl
в вебе, а именно:
grep
) и хранения (например, для postmortem'ов);kubectl get .. -l
);kubectl get all
) для получения общей операционной картины среди коллег (например, в процессе реакции на инцидент);kubectl
, готовые для копирования);Вне решаемых в Kubernetes Web View задач (non-goals) остались:
Как Kubernetes Web View помогает в поддержке и реагировании на инциденты?
Поиск по кластерам в Kubernetes Web View
Kubernetes Web View: список pod'ов со статусом «Pending» во всех кластерах
Если желаете попробовать Kubernetes Web View, рекомендую ознакомиться с документацией [15] или посмотреть на живую демо-версию [16].
Конечно, интерфейс мог бы быть и получше, а пока Kubernetes Web View является инструментом для «продвинутых пользователей», которые не чураются манипулирования с URL-путями вручную, если это необходимо. Если у вас есть замечания/дополнения/пожелания, пожалуйста, свяжитесь со мной в Twitter [17]!
Эта статья является кратким рассказом о предпосылках, которые привели к созданию Kubernetes Web View. За ней последуют другие! (Прим. перев.: Их следует ожидать в блоге автора [18].)
Читайте также в нашем блоге:
Автор: Wimbo
Источник [23]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/open-source/330653
Ссылки в тексте:
[1] Kubernetes Web View: https://codeberg.org/hjacobs/kube-web-view/
[2] Twitter: https://twitter.com/try_except_/status/1153543128365850625
[3] K8Dash: https://github.com/herbrandson/k8dash
[4] Kubernator: https://github.com/smpio/kubernator
[5] Octant: https://github.com/vmware/octant
[6] Kubernetes Dashboard: https://github.com/kubernetes/dashboard
[7] Kubernetes Operational View: https://github.com/hjacobs/kube-ops-view
[8] grafana-statusmap: https://github.com/flant/grafana-statusmap
[9] этой статье: https://habr.com/ru/company/flant/blog/423851/
[10] Kubernetes Resource Report: https://github.com/hjacobs/kube-resource-report/
[11] Kubecost: https://kubecost.com/
[12] недавно публиковали: https://habr.com/ru/company/flant/blog/466659/
[13] он падал: https://github.com/vmware/octant/issues/72
[14] Настраиваемые внешние ссылки: https://kube-web-view.readthedocs.io/en/latest/customization.html#external-links
[15] документацией: https://kube-web-view.readthedocs.io/
[16] живую демо-версию: https://kube-web-view.demo.j-serv.de/
[17] со мной в Twitter: https://twitter.com/try_except_
[18] блоге автора: https://srcco.de/
[19] kubebox и другие консольные оболочки для Kubernetes: https://habr.com/ru/company/flant/blog/426985/
[20] Инструменты для разработчиков приложений, запускаемых в Kubernetes: https://habr.com/ru/company/flant/blog/462707/
[21] Появилась консольная утилита kubelive для интерактивной работы с Kubernetes: https://habr.com/ru/company/flant/news/t/467433/
[22] Полезные утилиты при работе с Kubernetes: https://habr.com/ru/company/flant/blog/330198/
[23] Источник: https://habr.com/ru/post/468041/?utm_campaign=468041&utm_source=habrahabr&utm_medium=rss
Нажмите здесь для печати.