Стандартная утилита для управления кластером Kubernetes (kubectl
) — достаточно мощный инструмент администрирования, отладки и мониторинга. Но если вы хотите получить сводную информацию о кластере Kubernetes или работать с несколькими ресурсами одновременно, она уже не так эффективна.
Сегодня существует большое количество графических панелей для управления Kubernetes, вероятно, вы уже используете одну из них. Например, это может быть стандартный Kubernetes Dashboard
или панель управления и мониторинга, предоставляемая вашим облачным провайдером. Все эти инструменты очень похожи по методу группировки информации (простая иерархия для пространств имен / ресурсов) и не могут быть легко использованы для ответов на общие вопросы, касающиеся вашего кластера.
В качестве примера предположим, что у вас большой кластер Kubernetes и вы хотите своевременно получать ответы на следующие вопросы:
Сможете ли вы быстро найти все Pods, для которых нет ограничений по ресурсам?
Сможете ли вы быстро найти все Role Bindings, которые не используются?
Сможете ли вы быстро определить, какое пространство имен утилизирует больше всего ресурсов в кластере?
Можете ли вы быстро определить, какие образы используют тег "latest"?
Столкнувшись с этими вопросами, администраторам кластера приходится делать выбор. Либо терять время, используяkubectl
, либо создавать специальные сценарии или инструменты, которые исследуют кластер и пытаются найти эти конкретные проблемы.
Было бы неплохо, если графический инструмент мог сразу же ответить на эти вопросы.
Этот отсутствующий графический инструмент — Kubevious. Вы можете увидеть живую демонстрацию на https://demo.kubevious.io/, а посмотреть исходный код на https://github.com/kubevious/kubevious.
Переосмысление возможностей Kubernetes Dashboard
Kubevious — это революционная панель управления Kubernetes, которая намного функциональнее существующих аналогов. Она имеет множество интересных функций, но в этой статье мы сосредоточимся на описании мощного механизма правил, который позволяет вам находить и группировать ресурсы Kubernetes для решения поставленной задачи.
![Kubevious dashboard Kubevious dashboard](https://habrastorage.org/getpro/habr/upload_files/a0a/ddb/ba5/a0addbba581e39c2e020a60331a31a68.png)
Kubevious имеет иерархическую структуру, которая будет вам знакома, поскольку он группирует объекты по пространству имен и группирует их в древовидной структуре непосредственно под пространством имен. Однако настоящее волшебство случается, когда вы понимаете, что Kubevious выполняет дополнительный анализ для каждого типа ресурса и «маркирует» его в соответствии со встроенными или настраиваемыми правилами.
Например, вы без дополнительных настроек увидите значок «шпион» на объектах, которые имеют доступ к Kubernetes API за пределами их собственного пространства имен.
![Spy Objects Spy Objects](https://habrastorage.org/getpro/habr/upload_files/322/26c/eb0/32226ceb0bb6340e7678d82ba5aa766e.png)
Возможность получить подобную информацию, особенно в больших кластерах, очень важна, так как значительно сокращает время, затрачиваемое на использование kubectl
.
В Kubevious также есть несколько других встроенных маркеров, которые могут вам пригодиться. В качестве примера вы можете легко найти неиспользуемые RoleBindings:
![Unused Cluster role bindings Unused Cluster role bindings](https://habrastorage.org/getpro/habr/upload_files/5ca/4ac/ec6/5ca4acec65d2032fe633af4aaaef5828.png)
Вы можете создавать собственные правила для решения других задач.
Рассуждения о ресурсах Kubernetes
Kubevious имеет собственный механизм правил, который позволяет находить ресурсы Kubernetes с указанными вами характеристиками. Редактор правил также является частью GUI:
![Rule editor Rule editor](https://habrastorage.org/getpro/habr/upload_files/6da/ec3/acb/6daec3acb18670c9ff1baa4dfb1fd28d.png)
Каждое правило определяется на простом языке Kubik , синтаксис которого напоминает Javascript. Для каждого правила вы определяете тело правила (какой ресурс Kubernetes искать) вместе с маркером (что делать с затронутым ресурсом). Маркеры представляют собой комбинацию значка, имени и цвета, которую вы можете использовать для маркировки затронутых объектов.
Уже существуют библиотеки правил, которые вы можете повторно использовать в своем кластере. Например, вы можете быстро найти модули без ограничений по ресурсам:
![Pods without limits Pods without limits](https://habrastorage.org/getpro/habr/upload_files/695/d75/720/695d757200c94f05c5b9ce925002cc84.png)
for(var container of item.config.spec.containers)
{
if (!container.resources.limit)
{
warning('No resource limit set');
}
}
В качестве другого примера найдём пространство имен с ресурсами, которые потребляют более 40% ЦП или памяти.
select('Namespace')
.filter(({item}) => {
const cpu = item.getProperties('cluster-consumption').cpu;
const memory = item.getProperties('cluster-consumption').memory;
return (unit.percentage(cpu) >= 40) ||
(unit.percentage(memory) >= 40);
})
Правила редактируются с помощью живого редактора из графического интерфейса пользователя и мгновенно сохраняются в самом кластере. Никаких дополнительных инструментов для управления правилами не требуется.
Вы можете найти дополнительную информацию о Rule Engine в официальной документации.
Перекрестные проверки и корреляции ресурсов
Другая впечатляющая возможность Kubevious — это корреляция между различными ресурсами Kubernetes. После создания правила, которое соответствует определенному количеству ресурсов, вам не нужно вручную прокручивать область просмотра, пытаясь найти, какие из них подходят.
GUI предоставляет вам информацию о том, какие ресурсы затронуты:
![Affected resources Affected resources](https://habrastorage.org/getpro/habr/upload_files/98d/2c4/ad9/98d2c4ad9e5a090a94979ae57b3f3aec.png)
При нажатии на любой из затронутых ресурсов панель управления отобразит сведения об этом ресурсе.
Эта возможность корреляции работает всегда, независимо от выбора объектов Kubevious. Таким образом, если Kubevious может обнаруживать связь между определенными ресурсами, вы сможете её увидеть на общей панели.
![Shared resources Shared resources](https://habrastorage.org/getpro/habr/upload_files/58f/a5d/c12/58fa5dc12fb77b9870c5c79652ca8984.png)
Заключение
Механизм правил — это лишь одна из функций, предлагаемых Kubevious. Kubevious имеет несколько других интересных функций, таких как полнотекстовый поиск всех ресурсов кластера, а также машина времени для обнаружения изменений конфигурации. Если вы управляете большими кластерами и не хотите больше играть в вопросы с kubectl, то Kubevious легко установить и контролировать в своем кластере.
Посетите сайт https://kubevious.io/ для получения дополнительной информации.