Managed Kubernetes

Описание

Kubernetes - это система оркестрации контейнеров. Managed Kubernetes от Selectel упрощает процесс развертывания, масштабирования и обслуживания контейнерной инфраструктуры. Обновлением версий, безопасностью и работоспособностью Control Plane Kubernetes занимается Selectel.

Сервис работает на базе Облачной платформы Selectel и использует ее ресурсы для рабочих нод кластера: серверы, балансировщики, сети, диски.

Control Plane состоит из 3 master-нод, которые запускаются в разных зонах доступности одного региона.

В качестве среды исполнения контейнеров (CRI) используется containerd.

Глоссарий

Термин Определение
Кластер Managed Kubernetes Объект, состоящий из нескольких мастер-нод и одной или нескольких групп нод
Мастер ноды Компонент, который управляет кластером
Группа нод Сгруппированные вместе ноды кластера одной конфигурации, находящиеся в одной зоне. Структурная единица кластера, в которой можно изменять количество нод
Нода Виртуальная машина на которой пользователь разворачивает контейнеры и размещает сервисы своего кластера
Загрузочный диск Диск для операционной системы ноды и для временных данных контейнеров

Оплата

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

Кластеры Kubernetes будут тарифицироваться, как остальные ресурсы облака по стоимости, указанной на сайте.

Сеть

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

Чтобы создать кластер в уже существующей приватной сети, создайте тикет.

В качестве CNI в кластерах Managed Kubernetes используется Calico.

Для предоставления публичного адреса приложениям, запущенным в кластере, воспользуйтесь сервисом (Service) типа LoadBalancer. После создания сервиса с типом LoadBalancer система создаст и настроит для вас Балансировщик нагрузки с публичным IP-адресом.

Пример описания сервиса с типом LoadBalancer:

# nginx-loadbalancer.yaml
apiVersion: v1
kind: Service
metadata:
  name: nginx-loadbalancer
  labels:
    app: webservice
spec:
  type: LoadBalancer
  ports:
  - port: 80
    protocol: TCP
  selector:
    app: webservice

Созданный балансировщик нагрузки появится в панели управления в разделе Балансировщики вашего проекта.

Рекомендуем все действия с балансировщиками производить через kubectl, чтобы избежать некорректного поведения.

Персистентные диски

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

# nginx-with-volume.yaml
apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    app: webservice
spec:
  containers:
  - name: nginx
    image: library/nginx:1.17-alpine
    ports:
    - containerPort: 80
    volumeMounts:
      - mountPath: "/var/www/html"
        name: data
  volumes:
    - name: data
      persistentVolumeClaim:
        claimName: my-pv-claim

Подробнее о спецификации для создания пода можно узнать в официальной документации. Персистентные диски доступны только в пределах одной зоны. В создании PersistentVolume используется объект StorageClass. StorageClass позволяют заранее описать конфигурацию персистентных дисков, которые вам понадобятся в работе кластера. В объекте Storage Class необходимо указать тип и зону диска. Например, для создания быстрых дисков в зоне ru-1a в описании Storage Class в spec необходимо указать type: fast.ru-1a и availablity zone: ru-1a. Диски fast, basic, universal обозначают сетевые диски в Облачной платформе Selectel.

Обратите внимание! Зона в типе PVC должна совпадать с зоной ноды, к которой она должна быть подключена. В случае использования нескольких зон для нод кластера и PVC вам потребуется указать в описании объектов Pod их привязку к зоне.

Работа с дисками возможна только в режиме ReadWriteOnce.

Все созданные диски отображаются в панели управления в разделе Диски.

Рекомендуем все действия с дисками производить через kubectl, чтобы избежать некорректного поведения.

Окно обслуживания

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

Для этого каждый день в выбранный час кластер переходит в режим MAINTENANCE, во время которого недоступно любое масштабирование кластера. Этот период длится до двух часов. Вы можете выбрать время начала этого периода через панель управления. При создании кластера из панели управления по умолчанию будет установлено время, соответствующее 4 часам утра в вашем часовом поясе.

В статусе MAINTENANCE кластер работает в обычном режиме и доступен по сети. Приложение, запущенное в кластере, будет работать без изменений, остановок и задержек.

Статусы кластера

  • ACTIVE — кластер доступен
  • PENDING_CREATE — кластер создается
  • PENDING_ROTATE_CERTS — происходит обновление сертификатов и ключей для Kubernetes Control Plane
  • PENDING_DELETE — кластер удаляется
  • PENDING_RESIZE — происходит изменение количества нод или групп нод
  • PENDING_NODE_REINSTALL — происходит переустановка одной из нод
  • PENDING_UPGRADE_PATCH_VERSION – происходит обновление кластера до новой патч-версии
  • PENDING_UPGRADE_MINOR_VERSION – роисходит обновление кластера до новой минорной версии
  • PENDING_UPGRADE_MASTERS_CONFIGURATION – происходит обновление конфигурации мастер нод
  • PENDING_UPGRADE_CLUSTER_CONFIGURATION – происходит обновление конфигурации кластера
  • PENDING_UPDATE_NODEGROUP – происходит обновление конфигурации группы нод (например, установка меток)
  • ERROR — кластер в нерабочем состоянии, создайте тикет
  • MAINTENANCE — кластер находится в окне обслуживания

Обратите внимание! Для всех статусов, кроме ACTIVE, некоторые действия с кластером могут быть заблокированы на уровне API сервиса.

Проектные квоты

Ресурсы Облачной платформы, используемые в кластере, ограничены квотами в регионе. Квоты на ресурсы можно изменять на странице Проекты в карточке нужного проекта.

Ограничения сервиса

Вид ограничения Значение
Максимальное количество кластеров Kubernetes в одном проекте в одном регионе 2
Максимальное количество групп нод в одном кластере Kubernetes 4
Максимальное количество нод в одной группе нод 15
Максимальное количество vCPU ноды 8
Максимальное количество RAM ноды 64 ГБ
Максимальный объем загрузочного диска ноды 512 ГБ