Стремительно растущая конфигурация K8s с современными трендовыми технологиями AI продолжает видоизменять трансформацию способов управления инфраструктурой и приложениями. В этой статье мы более детально обратимся к инструменту K8sGPT, который занимает центральное место в перевороте работы контейнерных приложений, начавшемся в 2023 году.
![](https://habrastorage.org/getpro/habr/upload_files/db5/1cd/819/db51cd8194209a7ebd65c2722d634a77.png)
Хотя это и не новинка технологий, это не отменяет того факта, что она остается интересной темой для обсуждения.
В этой статье я хотела бы дать небольшое руководство по работе с cli, рассмотреть интересные фичи, а также представить возможные точки роста.
Приятного прочтения!
Что это такое и с чем его едят?
K8sGPT - это искусственная модель, спроектированная специально для использования в кластерной среде Kubernetes. Она основана на архитектуре GPT-3 и обучена на обширных наборах текстовых данных, связанных с Kubernetes и облачными технологиями. Решение K8sGPT предназначено для автоматизации создания кода, разработки документации, формирования сценариев и других текстовых материалов, необходимых для управления кластерами Kubernetes. Применение K8sGPT способно упростить выполнение рутинных задач, связанных с развертыванием и управлением приложениями в облачной среде. Кроме того, K8sGPT может применяться для анализа и диагностики проблем, связанных с работой кластеров Kubernetes. Путем анализа журналов, лог-файлов и других данных, относящихся к работе кластера, он предоставляет рекомендации по устранению проблем. В общем, K8sGPT является мощным инструментом для автоматизации и оптимизации работы с кластерами Kubernetes, способствуя значительному упрощению и ускорению процесса развертывания и управления приложениями в облачной среде.
Анализаторы K8sGPT могут использоваться для сканирования вашего кластера Kubernetes на различные проблемы, включая:
Использование ресурсов
Планирование подов
Проблемы развертывания
Использование хранилища
Уязвимости безопасности
Об аутентификации
Нам необходимо установить K8sGPT, однако стоит учесть, что прежде всего, нам необходимо получить апишник с OpenAI по дефолту, либо, как вариант, мы можем использовать любой другой бэк, согласно документации K8sGPT:
FakeAI(для тестирования, без ключа, подходит для знакомства с k8sgpt)
По умолчанию K8sGPT использует OpenAI и turbo-charged GPT-3.5 model.
![](https://habrastorage.org/getpro/habr/upload_files/275/9d8/c16/2759d8c1632d1c8159af235682b8a640.png)
Я решила особо не заморачиваться и пойти по дефолтному пути, оставив в качестве бэка OpenAI, поэтому для генерации API key в терминале пропишем “k8sgpt generate”:
![](https://habrastorage.org/getpro/habr/upload_files/576/517/1b9/5765171b9138b2fb4212c3a888757a68.png)
Нас сразу перекинет на сайт OpenAI, где мы можем сгенерировать наш API key:
![](https://habrastorage.org/getpro/habr/upload_files/646/501/9e0/6465019e058ed75bf9c217ca4d421f29.png)
После того, как мы сгенерировали API key, мы можем установить его в конфигурации k8sgpt в нашей системе с помощью команды "k8sgpt auth add":
![](https://habrastorage.org/getpro/habr/upload_files/449/581/1af/4495811af2c67e86fa07e16163edfe42.png)
Функционал
Анализ
Мы можем использовать команду "k8sgpt analyze", чтобы получить более подробную информацию об ошибках в нашем кластере Kubernetes. Когда мы запускаем эту команду без дополнительных опций, она проходится по всем основные анализаторам во всех пространствах имен. То есть она будет просматривать такие ресурсы, как Deployment, ReplicaSet, PersistentVolumeClaim, Service, Ingress, StatefulSet, Pod, CronJob и Node.
Добавляя “--explain” к предыдущей команде, мы отправляем данные на выбранный нами бэк и открываем для себя возможность общения(?). K8sGPT использует NLP для понимания нашего с вами языка и запросов, которые связаны с конфигурациями, проблемами и оптимизацией. Все это позволяет нам быстрее решать проблемы, с которыми сталкиваются разработчики, при выполнении тасок.
![](https://habrastorage.org/getpro/habr/upload_files/427/680/7c4/4276807c46bcecc45b0660cce06e6763.jpeg)
К преимуществам также можно отнести и функцию текстового помощника. То есть мы можем перейти в интерактивный режим и узнать, что с нашим кластером, задав вопрос и получив ответ непосредственно на нашем языке. Как по мне - это крайне удобная фича, которая сможет снизить энергозатраты тех же девопсов.
Работает это по принципу:
Interactive mode enabled [type exit to close.]
Input text: What is the present condition of the cluster?
The current state of the cluster is that there is an error with a Kubernetes container unable to pull the image "nginx:1.a.b.c".
Интеграция данных и фильтры
Инструмент интегрируется с кластерами Kubernetes, получая доступ к данным в режиме реального времени о конфигурациях, производительности и журналах. Он легко получает данные из различных источников, обеспечивая всестороннее представление об экосистеме Kubernetes.
K8sGPT также предлагает интеграцию с другими инструментами. Эта интеграция обеспечивает гибкость для использования ресурсов Kubernetes в качестве фильтров.
Например: k8sgpt analyze --filter Node,Service
Фича в том, что мы можем пройтись не только по одному типу ресурсов, а можем их перечислить через запятую.
Еще есть интересная опция с управлением фильтров, для настройки анализа “под себя”. Можем вывести список доступных нам фильтров:
![](https://habrastorage.org/getpro/habr/upload_files/c9d/fb3/643/c9dfb364372f3df12c833efab01b4266.png)
Можем добавить необходимый нам фильтр, например, понадобился Log, тогда используем "k8sgpt filters add Log":
![](https://habrastorage.org/getpro/habr/upload_files/833/731/56f/83373156fa100074ed8a4623f25ba90e.png)
Аналогично можем избавиться от фильтра командой "k8sgpt filters remove Log":
![](https://habrastorage.org/getpro/habr/upload_files/3df/478/148/3df4781481c9064d2aa7a74c04a5f03d.png)
Благодаря своей гибкости и мощным возможностям интеграции, K8sGPT может также взаимодействовать с внешними системами мониторинга и управления, такими как системы управления версиями кода, CI/CD платформы и системы управления конфигурациями. Это позволяет обеспечить единый и согласованный процесс разработки, развертывания и мониторинга приложений в Kubernetes, упрощая и автоматизируя рутинные операции разработки и поддержки.
![](https://habrastorage.org/getpro/habr/upload_files/fd8/fb0/c71/fd8fb0c716cbd9e404c0bd62ff58cb36.png)
K8sGPT может создать отчет об уязвимости для кластера и предложить решения для решения любых выявленных проблем безопасности. Эта информация может помочь командам безопасности оперативно устранять уязвимости и поддерживать безопасный кластер.
![](https://habrastorage.org/getpro/habr/upload_files/b3f/2d2/63e/b3f2d263e21daf586ac29d68996440e4.png)
Анонимизация данных
С помощью этой опции данные могут быть анонимизированы перед отправкой в AI Backend. Во время выполнения анализа K8sGPT извлекает конфиденциальные данные (имена объектов Kubernetes, метки и т. д.). Эти данные маскируются при отправке в бэкэнд ИИ и заменяются ключом, который может быть использован для деанона данных при возврате решения пользователю.
Необходимо добавить флаг "--anonymize" с помощью команды анализа, чтобы включить анонимизацию данных.
Например: k8sgpt analyze --explain --filter=Service --output=json --anonymize
Однако, что хотелось бы подсветить: эта функция не применима к событиям.
Генерация инсайтов
K8sGPT обрабатывает integrated data для получения информации, рекомендаций и практических шагов по оптимизации сред Kubernetes. Например, он может рекомендовать перераспределение рабочих нагрузок на основе исторических моделей использования для более эффективного применения ресурсов. Кроме того, K8sGPT может использовать анализ Big Data для прогнозирования будущих нагрузок на кластеры Kubernetes. Путем анализа больших объемов данных о прошлой активности и трендах использования он способен предсказывать потребности в ресурсах в будущем. Это позволяет командам планировать масштабирование инфраструктуры заранее и обеспечивать высокую доступность и производительность приложений, предотвращая возможные простои и снижая риски нехватки ресурсов.
Возможности K8sGPT
Непрерывная оптимизация: K8sGPT обеспечивает постоянную оптимизацию, постоянно отслеживая кластеры Kubernetes и адаптируясь к изменениям рабочей нагрузки и спроса. Он может динамически корректировать распределение ресурсов на основе шаблонов трафика в режиме реального времени и определяемых пользователем политик.
Прогнозное обслуживание: K8sGPT может прогнозировать потенциальные проблемы в кластере Kubernetes на основе исторических данных о производительности, помогая предотвратить простои или уменьшить влияние сбоев.
Эффективное управление ресурсами: Платформа помогает эффективно распределять ресурсы, предотвращая недоиспользование или чрезмерное использование ресурсов в кластерах Kubernetes. Например, это может предложить масштабирование определенных услуг в часы пик и сокращение в периоды бездействия.
Обнаружение и диагностика неисправностей: K8sGPT проактивно выявляет и устраняет потенциальные проблемы, прежде чем они повлияют на производительность приложения, повышая общую надежность. Примером может быть обнаружение ненормального поведения pod и запуск автоматических шагов по исправлению для обеспечения непрерывной доступности обслуживания.
Планирование мощностей: K8sGPT может помочь командам прогнозировать будущий спрос на ресурсы Kubernetes и соответствующим образом планировать потребности в мощности.
Безопасность и соответствие требованиям: K8sGPT может отслеживать кластеры Kubernetes на предмет потенциальных рисков безопасности и давать рекомендации по улучшению соответствия соответствующим правилам и стандартам.
Интеграция с мониторингом и журналированием: K8sGPT может интегрироваться с системами мониторинга и журналирования, обеспечивая оперативное выявление и анализ аномалий в работе кластеров Kubernetes. Это позволяет оперативно реагировать на потенциальные проблемы и улучшать общую производительность системы.
Поддержка гибридных и мульти-облачных сред: K8sGPT обеспечивает универсальное решение для управления кластерами Kubernetes в гибридных и мульти-облачных средах. Это позволяет организациям эффективно использовать ресурсы в различных облачных и локальных средах, снижая затраты и повышая гибкость.
Интеллектуальная автоматизация сбоев и восстановления: K8sGPT использует алгоритмы машинного обучения для автоматического выявления сбоев и предпринимает соответствующие действия по восстановлению работоспособности. Это снижает необходимость вручную вмешиваться в случае неполадок и ускоряет время восстановления сервисов.
Совместимость с экосистемой Kubernetes: K8sGPT интегрируется с широким спектром инструментов и платформ, используемых в экосистеме Kubernetes, таких как Helm, Prometheus, Grafana и другие. Это обеспечивает беспрепятственное взаимодействие с существующими инструментами и упрощает процесс внедрения и использования платформы.
Как можно использовать
Масштабируемость e-commerce: K8sGPT динамически управляет ресурсами во время всплесков продаж, обеспечивая достаточные мощности для обработки увеличенного трафика в e-commerce. После завершения моментальных акций он автоматически снижает загрузку, оптимизируя затраты и поддерживая безупречный опыт покупателей.
Управление рабочей нагрузкой в здравоохранении: K8sGPT анализирует и распределяет обработку данных пациентов, гарантируя оптимальное использование ресурсов в реальном времени для критически важных данных и эффективное распределение ресурсов в периоды пониженной активности.
Безопасность финансовых приложений: K8sGPT непрерывно мониторит и анализирует конфигурации безопасности, предлагая и автоматически внедряя корректировки для повышения общего уровня защиты в среде Kubernetes.
Образование: K8sGPT может помочь в управлении онлайн-образовательными платформами, динамически масштабируя ресурсы в зависимости от количества студентов и нагрузки на систему, обеспечивая стабильность и качество образовательного процесса.
Телекоммуникации: В сфере телекоммуникаций K8sGPT может управлять распределением трафика и обеспечивать высокую доступность услуг связи, оптимизируя использование ресурсов и обеспечивая быструю реакцию на изменяющиеся условия.
IoT: K8sGPT может обеспечивать управление и мониторингом сенсоров и устройств IoT, обеспечивая их безопасность, эффективное использование ресурсов и обработку данных в реальном времени.
Производство и логистика: В производственной и логистической отраслях K8sGPT может помочь в управлении распределением ресурсов, оптимизации производственных процессов и обеспечении безопасности в цепи поставок.
Подведем итоги
K8sGPT представляет собой революцию в мире Kubernetes, внедряя искусственный интеллект для упрощения управления, оптимизации и обеспечения безопасности контейнеризированных приложений. Эта инновационная технология позволяет организациям не только масштабировать свои ресурсы и обрабатывать данные эффективно, но и предоставляет ценные аналитические инсайты для принятия более информированных решений.
Принятие K8sGPT позволяет организациям быть на передовой в области эффективного управления, интеллектуальной автоматизации и безопасности в контексте Kubernetes. Это не просто инструмент управления контейнерами, но и мощный союз искусственного интеллекта и облачных технологий, который обеспечивает гибкость, надежность и готовность к будущим вызовам.
Таким образом, K8sGPT открывает новые возможности для развития современных инфраструктур и повышения производительности приложений в контейнерах. Его применение отражает стремление к постоянному улучшению и оптимизации в сфере разработки и управления IT-ресурсами.
Хотя K8sGPT все еще в процессе разработки, он уже продолжительное время демонстрирует свою эффективность для диагностики и сортировки проблем, которые встречаются девопсам, разработчикам ПО, Deployment Engineers на их и так непростом пути. Мое личное мнение: очень интересный продукт, за развитием которого хочется наблюдать, ввиду его, не постесняюсь такого определения, эволюционного скачка в сфере Kubernetes.
Ссыль на гит
Я была очень рада подготовить пусть и не большой, но, как мне кажется, достаточно полезный материал (кстати, пока отбирала материал, нашла статью, где тоже затрагивается K8sGPT)
Буду рада вашему фидбэку в комментариях, спасибо(: