Управление кластером Managed Kubernetes

В этой статье описаны типовые операции по управлению Kubernetes-кластером: добавление и изменение worker-групп (групп узлов), обновление версии Kubernetes и удаление кластера. Для каждой операции указано, что произойдет и как проверить результат.

Если вы еще не создали кластер – начните со статьи “Создание и настройка кластера”. Для подключения к кластеру и работы с kubectl (консольный инструмент для управления Kubernetes) – “Подключение к кластеру и работа с kubectl”.

Дашборд (приборная панель) кластера

При переходе в созданный K8s-кластер откроется дашборд – страница с обзором состояния кластера.

Здесь доступны:

  • Статистика – графики нагрузки на CPU (центральный процессор) и потребления RAM (оперативной памяти) для master-нод (узлов управляющего контура) и worker-групп (групп узлов)
  • Информация – версия Kubernetes и кнопка “Подключиться” для быстрого доступа к kubeconfig (конфигурационному файлу). Подробнее – в разделе “Подключение к кластеру”
  • Worker-группы и ноды – количество нод и их статусы
  • Настройки – количество master-нод, версия Kubernetes, сетевые параметры
  • Дополнения – установленные и доступные аддоны (расширения)

Статистика

Раздел “Статистика” содержит две вкладки:

Группы и ноды:

  • Нагрузка на worker-группы – выбор группы через селектор
  • Нагрузка по отдельным нодам – с разбивкой по worker-группам
  • Количество подов (единиц развертывания) в разных статусах – с разбивкой по namespace (пространству имен)
  • Количество перезапусков контейнеров – с разбивкой по namespace

ControlPlane:

  • Нагрузка на CPU master-нод
  • Потребление RAM
  • Утилизация диска

Добавление worker-группы

Новая worker-группа нужна, когда текущих ресурсов не хватает или когда для нового типа нагрузки требуется другая конфигурация нод.

Через панель управления

  1. Перейдите в дашборд кластера → карточка “Worker-группы и ноды”
  2. Нажмите “Создать новую группу”
  3. Задайте параметры группы: название, количество нод, конфигурацию, метки и ограничения
  4. Подтвердите создание

Что произойдет

  • Время создания – примерно 1–2 минуты на ноду. Все ноды группы создаются одновременно
  • Планирование подов – новые поды будут автоматически размещаться на новых нодах согласно политикам taints/tolerations
  • Существующие поды – остаются на текущих нодах и не перемещаются
  • Влияние на кластер – добавление группы не затрагивает работу существующих нод и подов

После создания группы новые ноды появятся в кластере. Убедиться в этом можно командой:

kubectl get nodes

Новые ноды должны перейти в статус Ready.

Изменение конфигурации worker-группы

Вы можете изменить параметры существующей worker-группы: количество нод, метки, ограничения (taints).

Через панель управления

  1. Перейдите в дашборд кластера → карточка “Worker-группы и ноды”
  2. Нажмите на иконку редактирования (карандаш) напротив нужной группы
  3. Измените параметры
  4. Сохраните изменения

Изменение количества нод

Увеличение – в группу добавляются новые ноды с той же конфигурацией. Существующие поды продолжают работать без прерывания.

Уменьшение – перед удалением ноды происходит выселение подов (drain). Поды корректно переносятся на другие доступные ноды.

Обратите внимание!
Если в кластере используются PodDisruptionBudget (PDB), убедитесь, что разрешенное количество недоступных подов (maxUnavailable) больше 1. В противном случае процесс выселения не сможет завершиться, и нода не будет удалена.

Изменение конфигурации нод (CPU, RAM, диск)

Конфигурация нод поддерживает обновление на месте (in-place) для всей worker-группы:

  • CPU и RAM – можно увеличивать и уменьшать
  • Диск – можно только увеличивать

При изменении конфигурации поды выселяются с ноды для применения новых параметров. Чтобы избежать даунтайма (времени простоя) приложений:

  • Используйте более одной реплики для каждого приложения
  • Настройте Pod Anti-Affinity, чтобы реплики одного приложения не размещались на одном узле

Проверка результата

# Проверить количество и статус нод
kubectl get nodes

# Проверить метки ноды
kubectl get nodes --show-labels

# Проверить taints ноды
kubectl describe node <имя-ноды> | grep Taints

Изменение количества master-нод

После создания кластера вы можете изменить количество мастер нод, для этого: 

  • Перейдите в Дашборд своего k8s-кластера
  • Перейдите в раздел Настройки 
  • Выберите новую конфигурацию кластера (вы можете переключаться как с 1 мастер-ноды на 3, делая ваш кластер отказоустойчивым, так и обратно, 3 на 1 мастер-ноду).
  • Нажмите кнопку сохранить

Таким образом, вы можете подключать отказоустойчивость для своего кластера в необходимые для вас моменты времени. Например, вам требуется максимальная производительность сервиса в выходные дни, но в будние происходит спад нагрузки. Тем самым, вы можете включать 3 master-ноды в пятницу и отключить отказоустойчивость в понедельник, вернувшись обратно на 1 master-ноду. Это позволит лучше контролировать расходы и обеспечить отказоустойчивость и производительность. 

Обратите внимание!
Переключение числа мастер-нод может привести к кратковременной недоступности API.

Обновление версии Kubernetes

Обновление версии возможно только на более новую.

Через панель управления

  1. Перейдите в дашборд кластера → карточка “Настройки”
  2. В поле “Версия Kubernetes” выберите целевую версию
  3. Подтвердите обновление

Процесс обновления:

  1. Пересоздаются master-ноды – версия меняется с текущей на целевую
  2. После успешного обновления управляющего контура начинается обновление worker-групп
  3. Worker-группы обновляются последовательно, по одной группе за раз
  4. Внутри каждой группы ноды обновляются по одной, чтобы минимизировать влияние на работающие приложения
Обратите внимание!
Хранение данных — на данный момент, не рекомендуется строить хранилища данных на базе Managed Kubernetes: диски нод не являются внешними и при пересоздании нод данные будут безвозвратно удалены.

Релизный канал

Релизный канал — это стратегия обновления, которая определяет, до какой версии Kubernetes будет автоматически обновлен ваш кластер.

Доступны три канала:

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

Из чего состоит номер версии

Номер версии Kubernetes состоит из трех частей — например, 1.34.5:

  • 1 — мажорная версия. Меняется при кардинальных изменениях в продукте
  • 34 — минорная версия. В таких релизах добавляют новые функции, переводят старые опции в статус стабильных (GA) или объявляют их устаревшими
  • 5 — патч-версия. Исправляет критические ошибки и уязвимости без изменения логики работы

Релизный канал определяет, до какой минорной версии обновится кластер. Помимо этого кластер может обновляться при выходе новых патч-версий и внутренних версий платформы — такие обновления не меняют логику работы.

Обратите внимание!
Обновление минорной версии Kubernetes может повлиять на работу ваших сервисов — в новых релизах меняется поведение API и устаревшие опции удаляются.

Как изменить релизный канал

  1. Перейдите в дашборд кластера → карточка «Настройки»
  2. В поле «Релизный канал» выберите нужный вариант
  3. Сохраните изменения

Правила и ограничения

  • По умолчанию используется канал «Сбалансированный» — он дает наиболее оптимальную версию: достаточно свежую и при этом уже обкатанную
  • Выбранный канал применяется к последующим обновлениям — текущая версия кластера при смене канала не меняется
  • Обновления выполняются с учетом заданного окна обновления
  • За один раз кластер обновляется не более чем на одну минорную версию

Окно технического обслуживания

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

Период обновлений системы

  • В любое время — обновления применяются сразу, как только становятся доступны. Обычно обновление производится в ночное время по UTC+3.
  • В заданное время — обновления выполняются только внутри указанного вами окна При выборе «В заданное время» настраиваются:
  • День недели — один или несколько дней, в которые допустимы обновления. Чекбокс «Любой день» разрешает обновления в любой день недели
  • Временное окно — время начала работ и часовой пояс. Длительность окна фиксированная — 3 часа Обратите внимание!

Если работы не завершатся за 3 часа и их нельзя безопасно перенести, они будут завершены в любом случае — за пределами окна.

Как изменить окно обслуживания

  1. Перейдите в дашборд кластера → карточка «Настройки»
  2. В поле «Период обновлений системы» выберите «В любое время» или «В заданное время»
  3. Для варианта «В заданное время» укажите дни недели, время начала и часовой пояс
  4. Сохраните изменения

Рекомендации

  • Выбирайте часы минимальной нагрузки на ваши сервисы: во время обновления ноды пересоздаются последовательно, а поды выселяются на другие узлы
  • Держите более одной реплики приложения и настраивайте Pod Anti-Affinity, чтобы обновление проходило без даунтайма
  • Слишком узкое окно (например, один день в неделю) откладывает установку исправлений безопасности — учитывайте это при настройке

Проверка версии

# Версия API-сервера
kubectl version

# Версия kubelet на нодах
kubectl get nodes

В колонке VERSION отображается версия kubelet на каждой ноде. Если обновление еще в процессе, на разных нодах могут быть разные версии.

Аддоны (дополнения)

Аддоны – это дополнительные компоненты, которые упрощают администрирование Kubernetes-кластеров, добавляя: мониторинг, управление сертификатами, сетевые плагины и другие возможности.

Управление аддонами

  1. Перейдите в дашборд кластера → карточка “Дополнения”
  2. На странице отображается список доступных аддонов с описанием и статусом
  3. Для установки нажмите “Установить” на карточке аддона
  4. Для просмотра деталей или удаления – нажмите на карточку аддона

В карточке каждого аддона доступно:

  • Описание и назначение
  • Состав (какие компоненты устанавливаются)
  • Ссылки на документацию

Если вы хотите предложить добавление нового аддона – обратитесь в техническую поддержку.

Удаление кластера

Через панель управления

  1. Перейдите в дашборд кластера → карточка “Настройки”
  2. Внизу страницы нажмите “Удалить Kubernetes-кластер”
  3. Подтвердите удаление

Что произойдет

При удалении кластера удаляются:

  • Все балансировщики нагрузки, созданные через сервисы типа LoadBalancer
  • Все виртуальные машины worker-групп
  • Узлы управляющего контура (master-ноды)

Удаление происходит моментально.

Обратите внимание!
Удаление кластера – необратимая операция. Убедитесь, что все важные данные сохранены, прежде чем удалять кластер.

Все статьи раздела

  1. Kubernetes (K8s) – обзор сервиса Managed Kubernetes (управляемым Kubernetes)
  2. Основы Kubernetes – ключевые понятия: кластер, ноды, поды, сервисы
  3. Создание и настройка кластера – конфигурация master-нод, сеть и worker-группы
  4. Подключение к кластеру и работа с kubectl (консольный инструмент для управления Kubernetes) – kubeconfig (конфигурационный файл Kubernetes), подключение и первые команды
  5. Управление кластером – вы здесь
  6. Сеть и балансировщик нагрузки – сетевая модель, внешние и внутренние балансировщики
  7. Лимиты, квоты и ограничения – ограничения платформы, что можно и нельзя изменить

Если возникнут вопросы, напишите нам, пожалуйста, обращение в панели управления аккаунта (раздел “Помощь и поддержка”), а если вы захотите обсудить эту статью или наши продукты с коллегами по цеху и сотрудниками Beget – ждем вас в нашем сообществе в Telegram.