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

Обновление платформы

В Nova Container Platform обновление всех компонентов платформы выполняется с помощью одной команды nova-ctl cluster update. Администраторы платформы могут получать статус обновления в терминале, а также подтверждать готовность к обновлению каждого узла кластера Kubernetes.

Утилита nova-ctl содержит матрицу возможных обновлений платформы и выполняет необходимые проверки совместимости компонентов. Перед началом обновления nova-ctl проверяет доступность необходимых публичных сервисов (репозиториев) и актуальность лицензионной информации. Если платформа установлена в закрытом сетевом контуре с помощью сервера Nova Universe, то nova-ctl предварительно проверяет доступность новых версий в Git-репозиториях Gitea.

Для начала обновления администратор платформы должен иметь следующую информацию:

  • Иметь доступ в кластер Kubernetes с ролью cluster-admin

  • Иметь SSH-ключ для доступа к узлам кластера

  • Знать имя пользователя, под которым выполняется SSH-подключение к узлам кластера

  • Предоставить номер новой версии платформы, на которую необходимо выполнить обновление

  • Предоставить токен доступа к StarVault

  • (Опционально) Указать, требуется ли в процессе обновления кластера также выполнить обновление (перевыпуск) всех TLS-сертификатов Control Plane в Kubernetes

nova-ctl требует наличие конфигурационного файла для доступа к кластеру Kubernetes. По умолчанию путь к конфигурационному файлу берется из переменной окружения KUBECONFIG. Если переменная отсутствует либо файл не найден, то используется локальный файл kubeadmin.conf.

1. Стадии и этапы обновления

Обновление платформы начинается с момента, когда администратор выполняет команду nova-ctl cluster update и подтверждает запуск процесса обновления.

Процесс обновления глобально делится на две стадии, которые выполняются друг за другом:

  • Стадия 1: Обновление Core-компонентов платформы, используя сценарии Configuration Manager.

  • Стадия 2: Обновление платформенных сервисов (в том числе дополнительных модулей), используя службу непрерывного развертывания ПО FluxCD.

На первой стадии выполняются следующие этапы:

  1. Выполняются необходимые проверки, а именно:

    • Доступность необходимых репозиториев

    • Актуальность лицензионной информации, если платформа установлена с использованием сети Интернет

    • Проверка подключения к кластеру Kubernetes

    • Доступность ресурсов CRD Infrastructure[config.nova-platform.io] и ClusterVersion[config.nova-platform.io].

    • Проверка подключения к узлам кластера с помощью SSH

    • Проверка подключения к StarVault

  2. Выполняются подготовительные действия, в том числе настройка StarVault, и по очереди запускаются агенты Nova Host Agent.

  3. nova-ctl по очереди для каждого узла запрашивает у администратора подтверждение начала обновления.

  4. Агенты Nova Host Agent передают серверу Configuration Manager обновленные факты о себе, в том числе желаемую версию платформы. Сервер Configuration Manager в свою очередь направляет агентам обновленные сценарии для настройки. Результат выполнения сценария агентами передается в Configuration Manager в виде отчета.

    В среде Kubernetes на данном этапе выполняются следующие последовательные действия:

    • Устанавливается запрет на запуск сервисов (Cordon) и происходит эвакуация всех сервисов с узла кластера Kubernetes (Drain).

    • Выполняется обновление необходимых пакетов ОС, установка новых конфигураций, обновление компонентов Kubernetes.

    • В случае успешного обновления снимается запрет на запуск сервисов, после чего узел кластера становится доступным для аллокации сервисов.

    • nova-ctl приостанавливает процесс обновления и запрашивает подтверждение администратора на обновление следующего узла кластера Kubernetes.

На второй стадии Source-контроллер службы FluxCD переключается на новую версию Git-репозитория платформенных сервисов, и запускается процесс обновления данных сервисов в Kubernetes:

  1. nova-ctl активирует ресурсы Kustomization.

  2. Kustomize-контроллер службы FluxCD анализирует описание объектов в Git-репозитории и приводит в соответствие текущее состояние данных объектов в Kubernetes (процесс реконсиляции).

  3. Реконсиляция некоторых ресурсов Kustomization выполняется последовательно друг за другом согласно установленным зависимостям. Завершением реконсиляции ресурса является успешная Healthcheck-проверка обновляемого платформенного сервиса.

  4. nova-ctl ожидает завершения реконсиляции всех ресурсов Kustomization.

По завершении процесса обновления nova-ctl предоставляет администратору обновленные учетные данные (kubeadmin.conf), если выполнялся перевыпуск TLS-сертификатов.

В случае прерывания процесса обновления платформы на любом из этапов администратору достаточно повторно запустить команду nova-ctl cluster update. При повторном запуске будут обновлены только оставшиеся узлы.

2. Продолжительность обновления

Продолжительность обновления Nova Container Platform может меняться в зависимости от топологии кластера и специфики запущенных пользовательских сервисов. В данном разделе предоставлена информация, позволяющая понять и оценить факторы, влияющие на продолжительность обновления платформы в вашем окружении.

2.1. Влияющие факторы

Следующие факторы могут влиять на продолжительность обновления платформы:

Тип обновления платформы

Установка патч-релиза занимает меньшее количество времени, поскольку объем изменений и затрагиваемых компонентов, как правило, невелик. Минорные и мажорные релизы требуют больше времени в зависимости от количества обновляемых компонентов и сценариев обновления.

Количество узлов в кластере Kubernetes

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

  • Мастер-узлы: Продолжительность обновления одного узла достаточно предсказуема и занимает около 5 минут.

  • Инфраструктурные узлы: Продолжительность обновления зависит от количества установленных дополнительных модулей, перемещение которых на другие узлы занимает время. В среднем обновление одного инфраструктурного узла занимает до 10 минут.

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

  • Рабочие узлы: Продолжительность обновления зависит от количества размещаемых на узлах пользовательских сервисов. Примерное время обновления узла без учета эвакуации сервисов - 5 минут.

В Nova Container Platform процесс освобождения узла от каких-либо нагрузок имеет ограничение по времени - 5 минут. Если процессы Pod Eviction не завершаются за отведенный промежуток времени, то происходит принудительное освобождение узла от всех размещаемых на нем сервисов.

Количество установленных дополнительных модулей платформы

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

Обновление базового модуля платформы занимает до 10 минут, а каждого дополнительного модуля - около 5 минут.

Параметры пользовательских сервисов на рабочих узлах платформы

Если пользовательские сервисы имеют специфические либо некорректные настройки, влияющие на процессы их остановки, а также эвакуации с узла кластера (например, PreStop-хуки, Pod Disruption Budgets и т.п.), то такие сервисы могут блокировать операции освобождения узла от нагрузок. В данном случае, для каждого узла, где размещаются подобные сервисы, будет выделяться дополнительное ожидание в течение 5 минут до начала принудительного освобождения узла.

2.1.1. Расчет продолжительности обновления

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

Далее приведен сценарий расчета для типового кластера:

Цель Количество, шт Время, мин Итого, мин

Мастер узел

3

5

15

Инфраструктурный узел

3

10

30

Узел балансировки

2

5

10

Рабочий узел

6

10

60

Базовый модуль

1

10

10

Дополнительный модуль

2

5

10

Общее время

135

3. Обновление Nova Container Platform

Вы можете обновить кластер Nova Container Platform с помощью утилиты nova-ctl.

3.1. Каналы обновлений и релизы

В настоящий момент Nova Container Platform поддерживает 3 канала обновлений. Новый функционал выходит, в первую очередь, для последней мажорной версии Nova. При наличии обратной совместимости может быть добавлена в предыдущую мажорную версию Nova. Последняя поддерживаемая версия Nova получает патчи, направленные на устранение ошибок и уязвимостей.

Релизы платформы бывают следующих видов:

  • Патч (x.y.Z) - релиз, направленный на устранение мелких недочетов, ошибок конфигурации, обновление некоторых программных компонентов, в том числе патч-версии среды Kubernetes.

  • Минорный (x.Y.z) - релиз, в котором добавляется новый функционал Nova Container Platform.

  • Мажорный (X.y.z) - релиз, в котором повышается минорная версия Kubernetes.

Утилита nova-ctl автоматически проверяет текущую версию платформы и возможность обновления на запрашиваемую версию. nova-ctl имеет аналогичное версионирование релизов и поддерживает три последних минорных релиза Nova Container Platform.

Пример

У вас установлена Nova Container Platform версии v2.1.0. Вы можете использовать nova-ctl версии v2.4.0 для обновления кластеров платформы до версии v2.4.0.

Информация

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

В таблице указаны версии nova-ctl, с помощью которых можно выполнить обновление платформы до версии, равной версии nova-ctl.

4. Обновление ОС

В Nova Container Platform управление пакетами ОС выполняется независимо от самой платформы. Вам не потребуется использовать новые образы ОС, однако необходимо будет иметь доступ к публичным репозиториям производителя ОС либо к корпоративным зеркалам для загрузки пакетов.

При установке в Nova Container Platform используются собственные репозитории, которые включают только необходимое ПО. При установке платформы в закрытом сетевом контуре данные репозитории размещаются на сервере Nova Universe.

Перед установкой Nova Container Platform рекомендуется обновлять ОС до последней доступной и поддерживаемой версии.

Если необходимо добавить в ОС собственные пакеты, дополнительное ПО или выполнить обновление — исключите из списка следующие пакеты:

  • kubelet

  • kubectl

  • kubeadm

  • cri-tools

  • containerd.io

  • nova-storage-agent

  • iptables*

  • puppet*

  • vault

  • starvault

Вы можете проверить поддержку версии ОС в Nova Container Platform в разделе матриц совместимости и протестированных интеграций.

5. Обновление кластера в разных сетевых окружениях

В зависимости от выбранного сетевого окружения перейдите к инструкции по обновлению: