VK Cloud logo

Аддоны

Для кластеров Kubernetes, которые вы создаете в сервисе Managed Containers, доступны различные аддоны (дополнительные сервисы). Их можно выбрать в любой комбинации и установить либо при создании кластера с помощью Terraform, либо позднее в уже существующий кластер. Процесс установки автоматизирован и требует минимального вмешательства.

Особенности установки аддонов

  • Аддоны устанавливаются на worker-узлы кластера и потребляют их вычислительные ресурсы.

    Ниже приведены системные требования аддонов, исходящие из стандартных значений requests и limits для ресурсов Kubernetes в коде настройки аддона. При использовании нестандартных значений системные требования аддонов изменятся.

  • Аддоны могут быть установлены на выделенную группу worker-узлов или на выбранные планировщиком Kubernetes worker-узлы. Использование первого подхода позволяет исключить влияние аддонов на работу production-сервисов, развернутых в кластере.

    Вычислительных ресурсов выделенной группы worker-узлов должно быть достаточно для всех аддонов, даже если каждый аддон потребляет максимум ресурсов, указанных в системных требованиях. Рекомендуется настроить автоматическое масштабирование для такой группы узлов.

  • Установка аддонов возможна в трех вариантах:

    • Стандартная установка на выбранные планировщиком Kubernetes worker-узлы с изменением кода настройки аддона.
    • Установка на выделенные worker-узлы с изменением кода настройки аддона.
    • Быстрая установка на выбранные планировщиком Kubernetes worker-узлы без изменения кода настройки аддона (с настройками по умолчанию).

    Не все аддоны поддерживают все три варианта установки.

    Процесс установки описан в разделе Установка и настройка аддонов.

Доступные аддоны

Доступность конкретных аддонов зависит от региона, в котором планируется разместить кластер.

Argo CD

Argo CD — это инструмент непрерывной доставки (continuous delivery, CD) для Kubernetes, который использует подход GitOps. Он автоматически развертывает и обновляет приложения в кластере, отслеживая их конфигурацию в Git-репозитории. Преимущества Argo CD:

  • Ускоряются и упрощаются процессы GitOps: сокращается время на запуск, масштабирование и доставку изменений, а также снижается сложность их внедрения.
  • Повышается надежность и управляемость кластеров: минимизируются ручные действия и ошибки при изменении конфигурации. Argo CD автоматически замечает такие расхождения и возвращает кластер к состоянию, описанному в его Git-репозитории.
  • Действия в кластере становятся более прозрачными, и повышается его безопасность за счет контроля над всеми изменениями с возможностью отслеживания и аудита через Git.

Для корректной работы Argo CD требуется стабильный доступ к Git-репозиториям, в которых содержится конфигурация кластеров. Также аддон должен иметь права на создание приложений в кластере, настроенные в Kubernetes через модель разграничения доступа (Role Based Access Control, RBAC), иначе возможны ошибки синхронизации состояния кластера.

cert-manager

С помощью инструмента cert-manager можно управлять сертификатами в кластерах Kubernetes:

  • Выпускать сертификаты, в том числе самоподписанные (self-signed). Для этого cert-manager отправляет запросы к источникам, выступающим в роли центра сертификации (certificate authority, CA).

    Примеры источников:

    • провайдеры решений по кибербезопасности, такие как Venafi;
    • провайдеры сертификатов, такие как Let’s Encrypt;
    • хранилища секретов, такие как HashiCorp Vault;
    • локальные контейнеры, содержащие внутри себя публичную часть сертификата и приватный ключ.
  • Автоматически перевыпускать сертификаты с истекающим сроком действия.

Выпущенный с помощью cert-manager сертификат будет доступен другим ресурсам Kubernetes. Например, его можно использовать для Ingress.

Container Storage Interface (CSI) для S3

Container Storage Interface для S3 (S3-CSI) — драйвер Container Storage Interface для Kubernetes, который позволяет монтировать S3-совместимые объектные хранилища (VK Object Storage, AWS S3, MinIO и другие) как постоянные тома (Persistent Volumes, PV).

S3-CSI основан на высокопроизводительной файловой системе GeeseFS, которая работает на базе FUSE. Аддон имеет почти полную POSIX-совместимость и поддерживает следующие действия с объектами:

  • чтение и запись;
  • блокировка;
  • переименование и удаление.

S3-CSI работает на уровне бакетов объектного хранилища и может функционировать в двух режимах:

  • Динамическое создание бакетов (dynamic provisioning). При создании PVC (Persistent Volume Claim) с указанным классом хранения (Storage Class) аддон автоматически создает новый бакет в целевом S3-совместимом хранилище. После создания PVC этот бакет сразу готов к использованию как PV.
  • Использование существующих бакетов (static provisioning). Вы можете использовать заранее созданный бакет в любом S3-совместимом хранилище. Для этого аддон создает PV с указанием имени существующего бакета, и затем PVC связывается с этим PV.

S3-CSI может создавать бакеты в любом S3-совместимом хранилище, которое вы укажете при установке.

Docker Registry

Реестр Docker предназначен для размещения и хранения образов Docker. Работает в отказоустойчивой конфигурации (high availability, HA). Образы из реестра можно использовать при развертывании сервисов в кластере.

Подробнее в разделе Подключение к реестру Docker.

DRA Driver for NVIDIA GPUs

Dynamic Resource Allocation (DRA) — механизм Kubernetes для гибкого запроса, настройки и совместного использования между подами специализированных устройств, таких как графические процессоры (GPU). В отличие от стандартного механизма Device Plugin, который выделяет GPU как неделимый ресурс, DRA позволяет запрашивать только часть памяти или вычислительных ресурсов GPU для отдельной нагрузки.

Преимущества аддона DRA Driver for NVIDIA GPUs:

  • Позволяет запускать несколько нагрузок на одной GPU-карте, ограничивая потребление памяти и вычислительных ресурсов для каждой из них.
  • Увеличивает использование worker-узлов на GPU и снижает совокупную стоимость владения GPU-инфраструктурой.
  • Снижает порог входа для команд, занимающихся машинным обучением и искусственным интеллектом, которым не требуется целая GPU-карта для таких задач, как инференс, RAG, обработка изображений.
  • Обеспечивает поддерживаемый и стандартизированный подход к управлению совместным использованием графических процессоров в кластере вместо самостоятельной разработки через Helm-чарты, политики доступа и правила размещения нагрузок.

Состав аддона:

  • DRA Kubelet Plugin для подготовки и подключения GPU к подам на worker-узлах.
  • Node Feature Discovery для определения и регистрации функций, доступных на узлах кластера. Компонент содержит следующие службы:
    • NFD-Master отвечает за подключение к серверу API Kubernetes и обновление объектов узлов.
    • NFD-Worker подключается к службе NFD-Master для объявления аппаратных функций.
    • NFD Garbage-Collector гарантирует, что все объекты Node Feature Discovery имеют соответствующие узлы, и удаляет устаревшие объекты для несуществующих узлов.

External Secrets Operator

External Secrets Operator позволяет безопасно управлять секретами Kubernetes, которые хранятся вне кластера в облачных хранилищах (например, в менеджере секретов VK Cloud, AWS Secrets Manager, Azure Key Vault и так далее).

Подробнее о том, как использовать аддон с менеджером секретов VK Cloud, в разделе Использование External Secrets Operator.

Fluent Bit для Cloud Logging (logaas-integration)

Fluent Bit в комбинации со специальными фильтрами, написанными на языке Lua, позволяет организовать доставку логов из кластера Kubernetes в сервисе Managed Containers в сервис Cloud Logging для их дальнейшего анализа.

Источниками логов выступают службы kubelet и поды (pods), расположенные на узлах кластера. Подробнее о том, как работает аддон, в разделе про его установку.

GPU Operator

GPU Operator позволяет управлять GPU на узлах кластера для выполнения машинного обучения или обработки больших данных.

Доступны следующие варианты использования GPU в кластере:

  • Один под использует один или несколько GPU.
  • Аддон распределяет один GPU между несколькими подами по стратегии MIG.
  • Аддон распределяет один GPU между несколькими подами по стратегии MPS.

Состав аддона:

  • NVIDIA GPU Operator для управления GPU.

  • Служебные валидаторы для проверки CUDA (Compute Unified Device Architecture) после изменения конфигурации.

  • Средства самостоятельной диагностики оператора.

  • NVIDIA device plugin для автоматизации привязки и выделения ресурсов GPU.

  • Node Feature Discovery для определения и регистрации функций, доступных на узлах кластера. Компонент содержит следующие службы:

    • NFD-Master отвечает за подключение к серверу API Kubernetes и обновление объектов узлов.
    • NFD-Worker подключается к службе NFD-Master для объявления аппаратных функций.
    • NFD Garbage-Collector гарантирует, что все объекты Node Feature Discovery имеют соответствующие узлы, и удаляет устаревшие объекты для несуществующих узлов.

HAMi

HAMi (Heterogeneous AI Computing Virtualization Middleware) — набор инструментов для управления гетерогенными ИИ-ускорителями для Kubernetes.

Аддон HAMi в Managed Containers дает возможность дробить ресурсы GPU (память, вычислительную мощность или виртуальные карты) между разными процессами, например, чтобы запускать больше ML-моделей на существующем оборудовании. Так одна физическая карта будет обслуживать несколько задач сразу, и для этого не нужно вносить изменения в код ваших приложений.

Преимущества аддона HAMi:

  • Эффективно разделяет GPU между подами с возможностью выделить определенную часть ресурсов для каждого пода.
  • Изолирует память и вычислительные ресурсы GPU на уровне отдельного пода.
  • Повышает утилизацию worker-узлов на GPU и снижает совокупную стоимость владения GPU-инфраструктурой.
  • Снижает порог входа для команд, занимающихся машинным обучением и искусственным интеллектом, которым не требуется целая GPU-карта для таких задач, как инференс, RAG, обработка изображений.

Подробнее об аддоне и его архитектуре в официальной документации HAMi.

Ingress Controller (NGINX)

Ingress-контроллер на базе NGINX работает в качестве обратного прокси (reverse proxy) и позволяет организовать единую точку входа для сервисов в кластере, которые работают по HTTP или HTTPS.

При наличии контроллера достаточно создать ресурс Ingress, чтобы такие сервисы стали доступны извне кластера Kubernetes.

Ingress-контроллер тесно интегрируется с платформой VK Cloud. Подробнее в разделе Сеть в кластере.

Istio

Istio позволяет централизованно наблюдать за сетевым взаимодействием между сервисами и управлять им без изменения кода приложений. Istio реализует подход сервисной сетки (service mesh): трафик между сервисами проходит через управляемый слой прокси. В аддоне поддерживается как классическая модель с sidecar-прокси на уровне подов, так и режим Ambient Mesh без sidecar-контейнеров (прокси на уровне узлов). С помощью Istio можно:

  • задавать политики безопасности и управления трафиком между сервисами;
  • использовать TLS для коммуникации между сервисами;
  • расширить мониторинг межсервисного трафика (сбор метрик, логирование, распределенная трассировка);
  • настраивать сложную маршрутизацию и балансировку трафика между сервисами;
  • настраивать повторы запросов, тайм-ауты и другие механизмы контроля отказоустойчивости;
  • использовать Canary Deployment и Blue-Green Deployment для постепенного развертывания.

Jaeger

В распределенных системах, основанных на микросервисах, постоянно идет обмен запросами (requests). Платформа Jaeger создана для распределенной трассировки запросов. Jaeger отслеживает путь потока запросов через микросервисы и позволяет:

  • собирать информацию о взаимосвязях компонентов системы с точки зрения потока запросов;
  • обнаруживать проблемы с запросами или узкие места в архитектуре системы, связанные с обработкой потока запросов.

Такой инструмент необходим, потому что факторы, связанные с запросами, могут значительно влиять на поведение и производительность этих систем в целом. Недостаточно обеспечить наблюдение только за отдельными микросервисами.

Jaeger выполняет трассировку запросов на основе данных, которые получает от микросервисов. Поэтому в микросервисы необходимо интегрировать инструментальный стек OpenTelemetry для отправки данных о запросах. Познакомиться с интеграцией OpenTelemetry в микросервисное приложение можно на примере HotROD в разделе Использование Jaeger.

Kgateway

Kgateway — инструмент для маршрутизации и управления трафиком в Kubernetes с использованием Gateway API. Его преимущества:

  • Обеспечивает публикацию сервисов Kubernetes и проксирование запросов к внешним сервисам.
  • Автоматически масштабируется под нагрузку.
  • Сокращает время запуска приложений и сервисов.
  • Позволяет централизованно задавать точки входа, TLS, маршруты и политики доступа.

Подробнее о работе с аддоном в разделе Использование Kgateway.

Kube Prometheus Stack

Kube Prometheus Stack — система мониторинга состояния кластера и развернутых в нем сервисов, реализованная на базе Prometheus и инструмента визуализации Grafana. Подробнее в разделе Подключение к Grafana для просмотра метрик кластера.

VK Cloud предоставляет две версии аддона Kube Prometheus Stack: базовую и с доработками от компании VK Tech (версия с суффиксом vk в номере). Аддон с доработками содержит дополнительные встроенные функции, в частности, прогнозирование потребления ресурсов кластера.

Velero

Velero — инструмент с открытым исходным кодом для резервного копирования и аварийного восстановления кластеров Kubernetes.

С помощью аддона Velero вы можете легко настраивать и автоматизировать резервное копирование рабочих нагрузок, пространств имен и ресурсов Kubernetes, производить миграцию кластеров, а также выполнять восстановление после сбоев, ошибок конфигурации, некорректных релизов и инцидентов с данными. Резервные копии, которые создаются при работе с аддоном, хранятся в бакетах с классом хранения Hotbox в сервисе VK Object Storage.

Аддон Velero не поддерживает резервное копирование постоянных томов (Persistent Volumes, PV).

Подробнее о работе с аддоном в разделе Использование Velero.

Была ли статья полезна?