Обновление Kubernetes: запуск, режимы и переходы между версиями

Где запускать обновление

Обновление кластера (включая версию Kubernetes) запускается в GUI на дашборде кластера — кластера управления или клиентского кластера или с помощью команд в CLI.


Где посмотреть доступные версии

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

Полная карта — Карта версий обновлений.

Скриншот: управление обновлением на дашборде

Блок обновления кластера

Нажмите Управлять для перехода к выбору версии и настройки сценариев обновления.

Запуск обновления кластера

В CLI доступные версии можно посмотреть в ресурсе ShturvalUpdateChannel.


Рекомендации перед обновлением

  1. Ознакомьтесь с release notes целевой версии — там могут быть breaking changes и миграционные шаги.
  2. Создайте резервную копию кластера управления перед обновлением.
  3. Проверьте карту версий — убедитесь, что прямой переход поддерживается. Если нет — спланируйте обновление через промежуточную версию.

Обновляйте клиентские кластеры только после обновления кластера управления!


Режимы обновления

Обновление запускается вручную — через графический интерфейс или kubectl.

  1. Выберите кластер в левом меню.
  2. На дашборде найдите блок «Обновление» (рядом с текущей версией кластера).
  3. Нажмите Управлять.
  4. В модальном окне выберите версию из списка доступных.
  5. Нажмите Обновить.

Если отображается «Обновлений нет» — у вас последняя доступная версия для текущего канала.

Скриншот: окно выбора версии для обновления кластера

Окно выбора версии для обновления кластера

Укажите целевую версию в ресурсе ShturvalUpdate:

kubectl -n shturval-update-system patch su shturval-update --type=merge -p '{"spec":{"version":"X.Y.Z"}}'

Замените X.Y.Z на нужную версию.

Пример — обновление до версии 2.14.0:

kubectl -n shturval-update-system patch su shturval-update --type=merge -p '{"spec":{"version":"2.14.0"}}'

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

  1. Дашборд кластера → блок «Обновление»Управлять.
  2. Нажмите + рядом с «Настройка отложенного обновления».
  3. Укажите:
    • Расписание — в формате cron (значения через пробел);
    • Длительность окна обновления — сколько времени может использоваться для обновления (по умолчанию 24 часа, минимум 30 минут);
    • Поведение при превышении окна: остановиться (UpdatePaused) или продолжить;
    • Разрешить минорные версии — если нет, автоматически обновляются только патч-версии.
  4. Нажмите Добавить.
Скриншот: окно создания расписания для обновления кластера

Окно создания расписания обновления кластера

Создайте манифест и примените его:

apiVersion: update.shturval.tech/v1beta1
kind: ShturvalUpdateSchedule
metadata:
  name: update-schedule
  namespace: shturval-update-system
spec:
  allowMinorVersion: true
  pauseIfUpdatePeriodExceed: false
  schedule: "0 8 26 9 *"
  updatePeriod: "10h0m0s"
Параметр Описание
schedule Расписание в формате cron
updatePeriod Длительность окна обновления (например, 24h0m0s)
pauseIfUpdatePeriodExceed Остановить обновление при превышении окна (true) или продолжить (false)
allowMinorVersion Разрешить автоматическое обновление до минорных версий

Чтобы запускать обновление по расписанию, укажите имя ShturvalUpdateSchedule в ShturvalUpdate:

kubectl -n shturval-update-system patch su shturval-update --type=merge -p '{"spec":{"followSchedule":"update-schedule"}}'

Изменение и удаление расписания

  • Изменить — выберите расписание в модальном окне и настройте заново. Если обновление уже идёт, будет применён новый сценарий.
  • Удалить — возможно только если обновление по этому расписанию ещё не начато.

Этапы обновления

После запуска обновление проходит следующие этапы (отображаются на дашборде):

  1. Обновление модуля shturval-update — обновление самого модуля обновления.
  2. Принудительное удаление устаревших сервисов — этап может быть пропущен при отсутствии таких сервисов.
  3. Обновление shturval-node-config — модуль управления конфигурациями узлов.
  4. Обновление версии Kubernetes — обновление компонентов Kubernetes в кластере.
  5. Обновление системных сервисов — обновление версий сервисов платформы (мониторинг, логирование и др.).

Статусы этапов

Цветовая индикация на дашборде:

  • Зелёный — этап успешно завершён;
  • Жёлтый — этап выполняется;
  • Серый — этап не инициализирован.

При использовании отложенного обновления: если обновление не успело завершиться в указанное окно и настроено поведение «остановиться», отображается статус UpdatePaused. Для возобновления нажмите Продолжить вне расписания.


Кастомные ресурсы

Ресурс Назначение
ShturvalUpdate Задаёт версию обновления, отображает статус
ShturvalUpdateChannel Канал обновления (в платформе доступен только стабильный)
ShturvalUpdateSchedule Параметры отложенного обновления по расписанию

Общий обзор этих и других кастомных ресурсов платформы приведён на странице «Кастомные ресурсы в платформе».


Особые шаги для отдельных переходов

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


Обновление узлов кластера

В процессе обновления происходит замена версии только на созданных в кластере узлах. Новые создаваемые узлы будут иметь старую версию. Это обусловлено версией, определенной в InfraMachineTemplate. После завершения обновления необходимо создать новый шаблон ВМ на стороне провайдера инфраструктуры и заменить InfraMachineTemplate в группах узлов. Подробнее: Узлы и шаблоны ВМ.