Масштабирование кластера
В Stackland состав узлов кластера можно менять после установки: добавлять новые узлы и выводить существующие. Масштабирование и обновление кластера — операции, которые не могут выполняться одновременно.
Ресурс StacklandHostConfig
Каждый узел кластера описывается отдельным экземпляром кастомного ресурса StacklandHostConfig в пространстве имен stackland-install. Существующие узлы получают соответствующие ресурсы в процессе установки или обновления кластера. Ресурс содержит:
spec.role— роль узла:control-plane,workerилиcombined.spec.disksConfig— список дисков узла. Обязательно указывается установочный диск.spec.networkConfig— параметры сетевого подключения: интерфейсы, адреса, маршруты, DNS-серверы, NTP-серверы.spec.features— дополнительные возможности узла, например поддержка GPU.
Поля, не заданные явно в ресурсе, наследуются из шаблона StacklandClusterConfig, заданного при установке кластера.
Создание ресурса инициирует подключение нового узла к кластеру. Удаление ресурса инициирует вывод узла: узел закрывается от новой нагрузки (cordon), эвакуируется (drain), удаляется из Kubernetes, после чего его операционная система переводится в режим обслуживания (Maintenance mode). За счет финализатора ресурс не удаляется до фактического завершения операции.
Жизненный цикл узла
Состояние узла отражается в поле status.phase ресурса StacklandHostConfig:
Pending— ресурс создан, операция ожидает запуска.Installing— выполняется подключение узла к кластеру.Installed— узел подключен и работает в кластере.Removing— выполняется вывод узла из кластера.Failed— операция завершилась с ошибкой.
Роли узлов
Роль узла задается в поле spec.role и определяет назначение узла:
control-plane— узел управляющего слоя. Обеспечивает работу API Kubernetes, etcd и контроллеров.worker— узел рабочей нагрузки. Запускает поды пользовательских приложений.combined— узел совмещает обе роли. Используется в небольших кластерах.
Для отказоустойчивости управляющего слоя рекомендуется поддерживать нечетное число узлов control-plane, минимум три.
Роль существующего узла нельзя изменить. Чтобы сменить роль, удалите узел и добавьте его заново с новой ролью.
Связь с другими ресурсами
StacklandClusterConfig— шаблон конфигурации кластера, который задается при установке. Из него наследуются значения по умолчанию дляStacklandHostConfig.PlatformConfig— конфигурация платформы. Определяет режим работы кластера, в том числе политики обработки узлов.TargetInstallationState— состояние установки и обновления кластера. Масштабирование не выполняется, если кластер находится в стадии обновления на новую версию. Запрошенное в этот момент масштабирование запускается автоматически после завершения обновления.