Обновить кластер
Обновите кластер Stackland до новой версии с помощью ресурса Kubernetes TargetInstallationState. Обновление выполняется постепенно с эвакуацией нагрузки и перезагрузкой узлов.
Перед началом работы
-
Убедитесь, что у вас есть доступ к кластеру с правами администратора.
-
Проверьте текущую версию кластера:
kubectl get targetinstallationstate main -o jsonpath='{.status.currentVersion}' -
Узнайте, какие версии доступны для обновления. Список доступных версий зависит от того, подключен ли ваш кластер к интернету:
- Кластер с доступом в интернет — доступные версии загружаются автоматически из реестра контейнеров Stackland.
- Изолированный кластер — доступные версии определяются образами, загруженными в локальный реестр.
Выбрать релизный канал
Релизный канал определяет, какие версии Stackland доступны для обновления. По умолчанию используется канал stable.
Доступные каналы:
stable— стабильные релизы для production-использования. Доступен всем клиентам по умолчанию.alpha— ранние релизы для тестирования новых функций. Доступ предоставляется по запросу.
Чтобы изменить релизный канал, отредактируйте ресурс PlatformConfig:
kubectl edit platformconfig main
В спецификации укажите нужный канал:
spec:
releaseChannel: "stable" # или "alpha"
Если кластер не имеет доступа в интернет, необходимо предварительно загрузить образы новой версии в локальный реестр через CLI.
-
В левом меню выберите Настройки.
-
В подменю выберите Обновление.
-
Нажмите ссылку Обновление для перехода на страницу обновления кластера.
-
На странице «Обновление кластера» в блоке «Текущий статус обновления» проверьте текущее состояние:
- Target version — целевая версия обновления;
- Phase — фаза обновления;
- Message — сообщение о текущем состоянии.
-
В разделе «Доступные обновления» укажите версию для обновления.
-
Нажмите Запустить обновление.
Инструкции CLI зависят от того, имеет ли кластер доступ в интернет.
Кластер с доступом в интернет
Если кластер имеет доступ в интернет, образы новой версии загружаются автоматически из реестра контейнеров Stackland.
Подготовка к обновлению
Дождитесь появления нового релиза в ресурсе AvailableReleases. Проверить доступные релизы можно командой:
kubectl get availablereleases main -o yaml
Пример вывода:
apiVersion: stackland.yandex.cloud/v1alpha1
kind: AvailableReleases
metadata:
name: main
status:
releases:
- version: "26.1.0"
ready: true
- version: "26.1.1"
ready: true
Когда нужная версия появится в списке со статусом ready: true, можно запускать обновление.
Запустить обновление
-
Создайте файл манифеста. Например, с помощью команды
touch upgrade.yaml. -
Откройте файл и вставьте конфигурацию:
apiVersion: stackland.yandex.cloud/v1alpha1 kind: TargetInstallationState metadata: name: main spec: targetVersion: "<версия>" installationTimeout: "2h"Где:
targetVersion— целевая версия для обновления. Укажите значение изavailablereleases[main].status.releases[<желаемый_релиз>].version.installationTimeout— максимальное время выполнения обновления.
-
Примените манифест:
kubectl apply -f upgrade.yaml
Изолированный кластер
Если кластер не имеет доступа в интернет, необходимо предварительно загрузить образы новой версии в локальный реестр.
Скачать утилиту SLADM
На машине с доступом в интернет скачайте свежую версию утилиты sladm, как при первоначальной установке.
Загрузить образы на машине с интернетом
На машине с доступом в интернет выполните команду:
sladm pull --image-bundle full
Где:
--image-bundle— тип пакета образов (fullдля полного набора).
Примечание
Для обновления образов отдельно лицензируемых компонентов, таких как SpeechSense, дополнительно выполните загрузку с --image-bundle speechsense. Подробнее см. в разделе Загрузить образы SpeechSense.
Перенести артефакты во внутренний контур
Перенесите на машину с доступом к локальному реестру кластера:
- бинарный файл
sladm; - файл
release.yaml; - папку
<имя_релиза>-oci.
Загрузить образы в локальный реестр
На машине с доступом к кластеру выполните команду:
sladm push --local-registry --kubeconfig=<путь_к_kubeconfig> --image-bundle-folder <имя_папки>-oci
Где:
--local-registry— указывает на использование локального реестра кластера;--kubeconfig— путь к файлу kubeconfig для доступа к кластеру;--image-bundle-folder— путь к папке с образами.
Дождаться появления релиза
После загрузки образов дождитесь появления нового релиза в ресурсе AvailableReleases:
kubectl get availablereleases main -o yaml
Когда нужная версия появится в списке со статусом ready: true, можно запускать обновление.
Запустить обновление
-
Создайте файл манифеста. Например, с помощью команды
touch upgrade.yaml. -
Откройте файл и вставьте конфигурацию:
apiVersion: stackland.yandex.cloud/v1alpha1 kind: TargetInstallationState metadata: name: main spec: targetVersion: "<версия>" installationTimeout: "2h"Где:
targetVersion— целевая версия для обновления. Укажите значение изavailablereleases[main].status.releases[<желаемый_релиз>].version.installationTimeout— максимальное время выполнения обновления.
-
Примените манифест:
kubectl apply -f upgrade.yaml
Проверить статус обновления
После применения манифеста вы можете отслеживать статус обновления:
kubectl get targetinstallationstate main
Пример вывода:
NAME TARGET VERSION CURRENT VERSION PHASE MESSAGE AGE
main 26.1.1 26.1.0 Running Running upgrade to version 26.1.1 5m
Получить подробную информацию
Выполните команду:
kubectl describe targetinstallationstate main
В поле status отображается:
currentVersion— текущая установленная версия.phase— фаза обновления:Pending— обновление ожидает запуска.Running— обновление выполняется.Completed— обновление выполнено.Failed— обновление завершилось с ошибкой.
message— сообщение о текущем состоянии.jobName— имя задания Kubernetes, выполняющего обновление.lastUpdateTime— время последнего обновления статуса.
Просмотреть логи обновления
Чтобы просмотреть логи задания обновления, выполните команду:
kubectl logs -n stackland-system job/<имя_задания>
Имя задания можно получить из поля status.jobName ресурса TargetInstallationState.