VK Cloud logo
Обновлена 15 апреля 2024 г. в 08:50

Архитектура сервиса

В основе платформы VK Cloud лежит OpenStack. Архитектура сервиса Cloud Containers, опираясь на OpenStack, дает пользователям широкие возможности для работы, обеспечивает отказоустойчивость, масштабируемость и интеграцию с другими сервисами платформы.

Топологии кластера

Кластер Kubernetes состоит из двух типов узлов (nodes) — master-узлов и worker-узлов:

  • Master-узлы хранят информацию о состоянии всего кластера и управляют распределением рабочей нагрузки по worker-узлам.

  • Worker-узлы выполняют рабочую нагрузку (workload). Они могут быть организованы в группы worker-узлов. Для повышения отказоустойчивости разместите группы в разных зонах доступности.

Отказоустойчивость кластера зависит от количества master-узлов. Возможные конфигурации:

  • Кластер Cloud Containers с одним master-узлом.

    Такой кластер не отказоустойчив: даже если worker-узлов несколько и они организованы в группы, при потере единственного master-узла кластер станет неработоспособен.

  • Кластер Cloud Containers из нечетного числа master-узлов (не менее трех).

    Такой кластер отказоустойчив: при потере нескольких master-узлов он сохранит свою работоспособность, пока есть хотя бы один работающий master-узел. Дальнейший уровень отказоустойчивости зависит от числа и конфигурации групп worker-узлов.

Вне зависимости от выбранной топологии кластера master-узлы используют распределенное хранилище «ключ-значение» etcd для хранения информации о состоянии кластера:

  • Кластер с одним master-узлом имеет один экземпляр etcd.
  • В кластерах с несколькими master-узлами есть несколько экземпляров etcd, работающих в кластерном режиме для отказоустойчивости.
  • Под каждый экземпляр etcd выделен отдельный высокопроизводительный SSD-диск (High-IOPS). Это позволяет организовать максимально быстрое взаимодействие с API-эндпоинтом кластера при минимальных задержках.

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

Окружение кластера

На master- и worker-узлах используются следующие операционные системы:

  • CentOS (до версии Kubernetes 1.20).
  • AlmaLinux (начиная с версии Kubernetes 1.21). AlmaLinux является форком (fork) CentOS.

Кластер запускает контейнеры через Kubernetes Container Runtime Interface (CRI) с помощью CRI-O (начиная с версии Kubernetes 1.20).

Подробнее в разделе Доступные версии Kubernetes и политика поддержки версий.

Интеграция с Kubernetes API

Все взаимодействие с кластером происходит через Kubernetes API.

API-эндпоинт кластеров Cloud Containers размещен за отдельным балансировщиком нагрузки, поэтому доступ к API кластера можно получить по одному и тому же IP-адресу вне зависимости от количества master-узлов.

Интеграция с платформой VK Cloud

Интеграция с платформой VK Cloud осуществляется через стандартные интерфейсы Kubernetes:

  • Container Storage Interface (CSI) — интеграция с сервисами хранения данных.

    Позволяет использовать в кластерах хранилище VK Cloud в виде постоянных томов (persistent volumes). Доступно использование Persistent Volume Claim (PVC).

    Интеграция достигается с помощью OpenStack Cinder API. Подробнее в разделе Хранилище в кластере.

  • Container Network Interface (CNI) — интеграция с сетевыми сервисами.

    В каждом кластере Cloud Containers присутствует плагин Calico, поддерживающий этот интерфейс. Этот плагин обеспечивает:

    • сетевую связность между контейнерами, подами и узлами кластера;
    • применение и соблюдение сетевых политик (Network Policies) Kubernetes.

    Calico интегрируется с платформой VK Cloud с помощью OpenStack Neutron API. Подробнее в разделе Сеть в кластере.

Встроенная поддержка Open Policy Agent

Начиная с версии 1.21, в кластеры Cloud Containers встроен Open Policy Agent Gatekeeper. Он позволяет применять политики безопасности для ресурсов Kubernetes. Также в таких кластерах действуют политики безопасности по умолчанию.

Политики безопасности не действуют в кластерах версий ниже 1.21. Чтобы подключить их, обновите такие кластера до актуальной версии. Если обновление невозможно, установите Gatekeeper вручную, а затем настройте ограничения и шаблоны.

Возможности масштабирования кластера

Кластер Cloud Containers имеет встроенные возможности масштабирования master-узлов и worker-узлов.

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