Обновление платформы
В 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
|
|
1. Стадии и этапы обновления
Обновление платформы начинается с момента, когда администратор выполняет команду nova-ctl cluster update и подтверждает запуск процесса обновления.
Процесс обновления глобально делится на две стадии, которые выполняются друг за другом:
-
Стадия 1: Обновление Core-компонентов платформы, используя сценарии Configuration Manager.
-
Стадия 2: Обновление платформенных сервисов (в том числе дополнительных модулей), используя службу непрерывного развертывания ПО FluxCD.
На первой стадии выполняются следующие этапы:
-
Выполняются необходимые проверки, а именно:
-
Доступность необходимых репозиториев
-
Актуальность лицензионной информации, если платформа установлена с использованием сети Интернет
-
Проверка подключения к кластеру Kubernetes
-
Доступность ресурсов CRD Infrastructure[config.nova-platform.io] и ClusterVersion[config.nova-platform.io].
-
Проверка подключения к узлам кластера с помощью SSH
-
Проверка подключения к StarVault
-
-
Выполняются подготовительные действия, в том числе настройка StarVault, и по очереди запускаются агенты Nova Host Agent.
-
nova-ctlпо очереди для каждого узла запрашивает у администратора подтверждение начала обновления. -
Агенты Nova Host Agent передают серверу Configuration Manager обновленные факты о себе, в том числе желаемую версию платформы. Сервер Configuration Manager в свою очередь направляет агентам обновленные сценарии для настройки. Результат выполнения сценария агентами передается в Configuration Manager в виде отчета.
В среде Kubernetes на данном этапе выполняются следующие последовательные действия:
-
Устанавливается запрет на запуск сервисов (Cordon) и происходит эвакуация всех сервисов с узла кластера Kubernetes (Drain).
-
Выполняется обновление необходимых пакетов ОС, установка новых конфигураций, обновление компонентов Kubernetes.
-
В случае успешного обновления снимается запрет на запуск сервисов, после чего узел кластера становится доступным для аллокации сервисов.
-
nova-ctlприостанавливает процесс обновления и запрашивает подтверждение администратора на обновление следующего узла кластера Kubernetes.
-
На второй стадии Source-контроллер службы FluxCD переключается на новую версию Git-репозитория платформенных сервисов, и запускается процесс обновления данных сервисов в Kubernetes:
-
nova-ctlактивирует ресурсы Kustomization. -
Kustomize-контроллер службы FluxCD анализирует описание объектов в Git-репозитории и приводит в соответствие текущее состояние данных объектов в Kubernetes (процесс реконсиляции).
-
Реконсиляция некоторых ресурсов Kustomization выполняется последовательно друг за другом согласно установленным зависимостям. Завершением реконсиляции ресурса является успешная Healthcheck-проверка обновляемого платформенного сервиса.
-
nova-ctlожидает завершения реконсиляции всех ресурсов Kustomization.
По завершении процесса обновления nova-ctl предоставляет администратору обновленные учетные данные (kubeadmin.conf), если выполнялся перевыпуск TLS-сертификатов.
|
В случае прерывания процесса обновления платформы на любом из этапов администратору достаточно повторно запустить команду |
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. Вы можете использовать версии v2.4.0 для обновления кластеров платформы до версии v2.4.0.nova-ctl
Информация
Минорный и мажорные релизы могут включать также изменения, направленные на устранение мелких недочетов, ошибок конфигурации, обновление некоторых программных компонентов.
В таблице указаны версии nova-ctl, с помощью которых можно выполнить обновление платформы до версии, равной версии nova-ctl.
4. Обновление ОС
В Nova Container Platform управление пакетами ОС выполняется независимо от самой платформы. Вам не потребуется использовать новые образы ОС, однако необходимо будет иметь доступ к публичным репозиториям производителя ОС либо к корпоративным зеркалам для загрузки пакетов.
При установке в Nova Container Platform используются собственные репозитории, которые включают только необходимое ПО. При установке платформы в закрытом сетевом контуре данные репозитории размещаются на сервере Nova Universe.
Перед установкой Nova Container Platform рекомендуется обновлять ОС до последней доступной и поддерживаемой версии.
|
Если необходимо добавить в ОС собственные пакеты, дополнительное ПО или выполнить обновление — исключите из списка следующие пакеты:
|
|
Вы можете проверить поддержку версии ОС в Nova Container Platform в разделе матриц совместимости и протестированных интеграций. |