Аддоны
Для кластеров Kubernetes, которые вы создаете в сервисе Managed Containers, доступны различные аддоны (дополнительные сервисы). Их можно выбрать в любой комбинации и установить либо при создании кластера с помощью Terraform, либо позднее в уже существующий кластер. Процесс установки автоматизирован и требует минимального вмешательства.
-
Аддоны устанавливаются на worker-узлы кластера и потребляют их вычислительные ресурсы.
Ниже приведены системные требования аддонов, исходящие из стандартных значений requests и limits для ресурсов Kubernetes в коде настройки аддона. При использовании нестандартных значений системные требования аддонов изменятся.
-
Аддоны могут быть установлены на выделенную группу worker-узлов или на выбранные планировщиком Kubernetes worker-узлы. Использование первого подхода позволяет исключить влияние аддонов на работу production-сервисов, развернутых в кластере.
Вычислительных ресурсов выделенной группы worker-узлов должно быть достаточно для всех аддонов, даже если каждый аддон потребляет максимум ресурсов, указанных в системных требованиях. Рекомендуется настроить автоматическое масштабирование для такой группы узлов.
-
Установка аддонов возможна в трех вариантах:
- Стандартная установка на выбранные планировщиком Kubernetes worker-узлы с изменением кода настройки аддона.
- Установка на выделенные worker-узлы с изменением кода настройки аддона.
- Быстрая установка на выбранные планировщиком Kubernetes worker-узлы без изменения кода настройки аддона (с настройками по умолчанию).
Не все аддоны поддерживают все три варианта установки.
Процесс установки описан в разделе Установка и настройка аддонов.
Доступность конкретных аддонов зависит от региона, в котором планируется разместить кластер.
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 можно управлять сертификатами в кластерах Kubernetes:
-
Выпускать сертификаты, в том числе самоподписанные (self-signed). Для этого
cert-managerотправляет запросы к источникам, выступающим в роли центра сертификации (certificate authority, CA).Примеры источников:
- провайдеры решений по кибербезопасности, такие как Venafi;
- провайдеры сертификатов, такие как Let’s Encrypt;
- хранилища секретов, такие как HashiCorp Vault;
- локальные контейнеры, содержащие внутри себя публичную часть сертификата и приватный ключ.
-
Автоматически перевыпускать сертификаты с истекающим сроком действия.
Выпущенный с помощью cert-manager сертификат будет доступен другим ресурсам Kubernetes. Например, его можно использовать для Ingress.
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 предназначен для размещения и хранения образов Docker. Работает в отказоустойчивой конфигурации (high availability, HA). Образы из реестра можно использовать при развертывании сервисов в кластере.
Подробнее в разделе Подключение к реестру Docker.
External Secrets Operator позволяет безопасно управлять секретами Kubernetes, которые хранятся вне кластера в облачных хранилищах (например, в менеджере секретов VK Cloud, AWS Secrets Manager, Azure Key Vault и так далее).
Подробнее о том, как использовать аддон с менеджером секретов VK Cloud, в разделе Использование External Secrets Operator.
Fluent Bit в комбинации со специальными фильтрами, написанными на языке Lua, позволяет организовать доставку логов из кластера Kubernetes в сервисе Managed Containers в сервис Cloud Logging для их дальнейшего анализа.
Источниками логов выступают службы kubelet и поды (pods), расположенные на узлах кластера. Подробнее о том, как работает аддон, в разделе про его установку.
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 имеют соответствующие узлы, и удаляет устаревшие объекты для несуществующих узлов.
Подробнее об аддоне и его компонентах: NVIDIA GPU Operator, NVIDIA device plugin, Node Feature Discovery.
Ingress-контроллер на базе NGINX работает в качестве обратного прокси (reverse proxy) и позволяет организовать единую точку входа для сервисов в кластере, которые работают по HTTP или HTTPS.
При наличии контроллера достаточно создать ресурс Ingress, чтобы такие сервисы стали доступны извне кластера Kubernetes.
Ingress-контроллер тесно интегрируется с платформой VK Cloud. Подробнее в разделе Сеть в кластере.
Istio позволяет централизованно наблюдать за сетевым взаимодействием между сервисами и управлять им без изменения кода приложений. Istio реализует подход сервисной сетки (service mesh): трафик между сервисами проходит через управляемый слой прокси. В аддоне поддерживается как классическая модель с sidecar-прокси на уровне подов, так и режим Ambient Mesh без sidecar-контейнеров (прокси на уровне узлов). С помощью Istio можно:
- задавать политики безопасности и управления трафиком между сервисами;
- использовать TLS для коммуникации между сервисами;
- расширить мониторинг межсервисного трафика (сбор метрик, логирование, распределенная трассировка);
- настраивать сложную маршрутизацию и балансировку трафика между сервисами;
- настраивать повторы запросов, тайм-ауты и другие механизмы контроля отказоустойчивости;
- использовать Canary Deployment и Blue-Green Deployment для постепенного развертывания.
В распределенных системах, основанных на микросервисах, постоянно идет обмен запросами (requests). Платформа Jaeger создана для распределенной трассировки запросов. Jaeger отслеживает путь потока запросов через микросервисы и позволяет:
- собирать информацию о взаимосвязях компонентов системы с точки зрения потока запросов;
- обнаруживать проблемы с запросами или узкие места в архитектуре системы, связанные с обработкой потока запросов.
Такой инструмент необходим, потому что факторы, связанные с запросами, могут значительно влиять на поведение и производительность этих систем в целом. Недостаточно обеспечить наблюдение только за отдельными микросервисами.
Jaeger выполняет трассировку запросов на основе данных, которые получает от микросервисов. Поэтому в микросервисы необходимо интегрировать инструментальный стек OpenTelemetry для отправки данных о запросах. Познакомиться с интеграцией OpenTelemetry в микросервисное приложение можно на примере HotROD в разделе Использование Jaeger.
Kgateway — инструмент для маршрутизации и управления трафиком в Kubernetes с использованием Gateway API. Его преимущества:
- Обеспечивает публикацию сервисов Kubernetes и проксирование запросов к внешним сервисам.
- Автоматически масштабируется под нагрузку.
- Сокращает время запуска приложений и сервисов.
- Позволяет централизованно задавать точки входа, TLS, маршруты и политики доступа.
Подробнее о работе с аддоном в разделе Использование Kgateway.
Kube Prometheus Stack — система мониторинга состояния кластера и развернутых в нем сервисов, реализованная на базе Prometheus и инструмента визуализации Grafana. Подробнее в разделе Подключение к Grafana для просмотра метрик кластера.
VK Cloud предоставляет две версии аддона Kube Prometheus Stack: базовую и с доработками от компании VK Tech (версия с суффиксом vk в номере). Аддон с доработками содержит дополнительные встроенные функции, в частности, прогнозирование потребления ресурсов кластера.
Velero — инструмент с открытым исходным кодом для резервного копирования и аварийного восстановления кластеров Kubernetes.
С помощью аддона Velero вы можете легко настраивать и автоматизировать резервное копирование рабочих нагрузок, пространств имен и ресурсов Kubernetes, производить миграцию кластеров, а также выполнять восстановление после сбоев, ошибок конфигурации, некорректных релизов и инцидентов с данными. Резервные копии, которые создаются при работе с аддоном, хранятся в бакетах с классом хранения Hotbox в сервисе VK Object Storage.
Аддон Velero не поддерживает резервное копирование постоянных томов (Persistent Volumes, PV).
Подробнее о работе с аддоном в разделе Использование Velero.