Управление узлами на Huawei DCS
В этом документе объясняется, как управлять рабочими узлами с помощью ресурсов Cluster API Machine.
Содержание
Предварительные требованияОбзорРазвертывание рабочих узловШаг 1. Настройте IP-Hostname PoolШаг 2. Настройте Machine TemplateШаг 3. Настройте Bootstrap TemplateШаг 4. Настройте Machine DeploymentОперации управления узламиМасштабирование рабочих узловДобавление рабочих узловУдаление рабочих узловОбновление инфраструктуры MachineОбновление Bootstrap TemplatesОбновление версии KubernetesУправление Node Pools через Web UIПросмотр Node PoolsДобавление worker node poolУдаление worker node poolПросмотр Conditions (только Control Plane)Следующие шагиПредварительные требования
Важные предварительные требования
- Перед выполнением операций с узлами необходимо развернуть control plane. См. Create Cluster для инструкций по настройке.
- Убедитесь, что у вас есть надлежащий доступ к платформе DCS и необходимые разрешения.
Рекомендации по конфигурации При работе с конфигурациями в этом документе:
- Изменяйте только значения, заключенные в скобки
<> - Заменяйте значения-заполнители настройками, соответствующими вашей среде
- Сохраняйте все остальные конфигурации по умолчанию, если иное явно не требуется
Обзор
Рабочие узлы управляются через ресурсы Cluster API Machine, что обеспечивает декларативное и автоматизированное управление жизненным циклом узлов. Процесс развертывания включает:
- Конфигурация IP-Hostname Pool - сетевые настройки для рабочих узлов
- Настройка шаблона Machine - спецификации VM
- Bootstrap-конфигурация - инициализация узла и настройки присоединения
- Развертывание Machine - оркестрация создания и управления узлами
Развертывание рабочих узлов
Шаг 1. Настройте IP-Hostname Pool
IP-Hostname Pool определяет сетевую конфигурацию для виртуальных машин рабочих узлов. Перед развертыванием необходимо спланировать и настроить IP-адреса, имена хостов, DNS-серверы и другие сетевые параметры.
Требование к размеру пула Пул должен содержать не меньше записей, чем количество рабочих узлов, которое вы планируете развернуть. Недостаточное число записей не позволит выполнить развертывание узлов.
Пример:
Создайте DCSIpHostnamePool с именем <worker-iphostname-pool-name>:
Ключевые параметры:
Шаг 2. Настройте Machine Template
DCSMachineTemplate определяет спецификации виртуальных машин рабочих узлов, включая шаблоны VM, вычислительные ресурсы, конфигурацию хранилища и сетевые настройки.
Требуемые конфигурации дисков Следующие точки монтирования дисков обязательны. Не удаляйте их:
- Системный том (
systemVolume: true) /var/lib/kubelet- каталог данных Kubelet/var/lib/containerd- данные контейнерного runtime/var/cpaas- данные, специфичные для платформы
Можно добавлять дополнительные диски, но эти обязательные конфигурации должны быть сохранены.
Пример:
Создайте DCSMachineTemplate с именем <worker-dcs-machine-template-name>:
Ключевые параметры:
*Обязательно, если указанный родительский объект существует
Шаг 3. Настройте Bootstrap Template
KubeadmConfigTemplate определяет bootstrap-конфигурацию для рабочих узлов, включая учетные записи пользователей, SSH-ключи, системные файлы и параметры kubeadm join.
Оптимизация шаблона Шаблон включает заранее оптимизированные конфигурации для безопасности и производительности. Изменяйте только те параметры, которые требуется адаптировать под вашу среду.
Пример:
Шаг 4. Настройте Machine Deployment
MachineDeployment координирует создание и управление рабочими узлами, используя ранее настроенные ресурсы DCSMachineTemplate и KubeadmConfigTemplate. Он управляет требуемым количеством узлов и выполняет rolling updates.
Пример:
Ключевые параметры:
Операции управления узлами
В этом разделе описаны распространенные операционные задачи по управлению рабочими узлами, включая масштабирование, обновления, upgrade и изменение шаблонов.
Фреймворк Cluster API Операции управления узлами основаны на фреймворке Cluster API. Для подробной информации см. официальную документацию Cluster API.
Масштабирование рабочих узлов
Масштабирование рабочих узлов позволяет изменять емкость кластера в зависимости от нагрузки. Cluster API автоматически управляет жизненным циклом узлов через ресурс MachineDeployment.
Добавление рабочих узлов
Увеличьте число рабочих узлов, чтобы обработать возросшую нагрузку или добавить новую емкость.
Сценарий использования: Масштабирование кластера вверх для добавления вычислительных ресурсов
Предварительные требования:
- Проверьте, что в IP pool достаточно свободных IP-адресов для новых узлов
- Убедитесь, что на платформе DCS достаточно ресурсов для выделения новых VM
Процедура:
-
Проверьте текущее состояние узлов
Просмотрите текущие машины в кластере:
-
Расширьте IP pool
Перед масштабированием вверх добавьте в пул новые IP-конфигурации для дополнительных узлов.
INFOРасширение IP pool IP pool должен содержать не меньше записей, чем желаемое число реплик. Добавьте новые IP-записи для каждого дополнительного рабочего узла, который вы планируете развернуть.
Добавьте IP-записи в пул:
Сначала экспортируйте текущую конфигурацию пула, чтобы сохранить существующие записи:
Затем используйте следующую команду, чтобы добавить новые IP-конфигурации. Массив
poolдолжен включать все существующие записи плюс новые записи:WARNINGВажные замечания
- Массив
poolдолжен включать все существующие записи плюс новые записи, которые вы хотите добавить - Скопируйте существующие записи из экспортированного YAML, чтобы избежать потери данных
- Убедитесь, что каждая новая запись имеет уникальные значения
ip,hostnameиmachineName - Сетевые параметры (
mask,gateway,dns) обычно совпадают с существующими записями
Пример: добавление 2 новых узлов в существующий пул из 3 узлов
- Массив
-
Проверьте емкость IP pool
После расширения IP pool проверьте, что в нем достаточно записей для желаемого числа реплик:
Убедитесь, что пул содержит не меньше записей, чем желаемое число реплик.
-
Масштабируйте MachineDeployment вверх
Обновите поле
replicasдо желаемого числа узлов:Пример: масштабирование с 3 до 5 узлов
-
Отслеживайте процесс масштабирования
Наблюдайте за процессом создания машин:
Контроллер Cluster API автоматически создаст новые машины на основе шаблона MachineDeployment.
-
Проверьте, что узлы присоединились к кластеру
Переключитесь на контекст целевого кластера и проверьте новые узлы:
Новые узлы должны появиться в списке и перейти в состояние
Ready.
Поведение rolling update При масштабировании вверх новые узлы создаются немедленно и не затрагивают существующие узлы. Это обеспечивает масштабирование без простоя.
Удаление рабочих узлов
Уменьшите число рабочих узлов, чтобы сократить емкость кластера или удалить недостаточно используемые ресурсы. Cluster API поддерживает две стратегии удаления:
- Случайное удаление: при уменьшении числа реплик платформа случайным образом выбирает и удаляет машины
- Целевое удаление: помечаете конкретные машины для удаления, затем уменьшаете число реплик (рекомендуется для восстановления IP)
Сценарий восстановления IP Когда требуется повторно использовать IP-адреса конкретных машин (например, для переназначения или управления IP pool), используйте метод целевого удаления. Аннотация удаления гарантирует, что платформа удалит именно помеченные машины, а не случайные.
Предупреждение о потере данных При уменьшении масштаба удаляются узлы и связанные с ними диски. Убедитесь, что:
- Рабочие нагрузки устойчивы к потере узлов благодаря корректной репликации
- На удаляемых узлах не хранится критически важные данные
- Приложения спроектированы для горизонтального масштабирования
Случайное удаление
Сценарий использования: уменьшение кластера, когда можно удалить любой узел (нет специфических требований к IP)
Процедура:
-
Определите текущее состояние машин
Просмотрите текущие машины в MachineDeployment:
-
Масштабируйте MachineDeployment вниз
Обновите поле
replicas, чтобы уменьшить число узлов:Пример: масштабирование с 5 до 3 узлов
Контроллер Cluster API случайным образом выберет и удалит машины, чтобы привести число к желаемому количеству реплик.
-
Отслеживайте процесс удаления
Наблюдайте за процессом удаления машин:
Контроллер Cluster API:
- Выполнит drain выбранных узлов (по возможности evict pods)
- Удалит базовые VM на платформе DCS
- Удалит ресурсы machine
-
Проверьте, что узлы удалены
Переключитесь на контекст целевого кластера:
Удаленные узлы больше не должны отображаться в списке.
Целевое удаление
Сценарий использования: удалить конкретные машины (например, для восстановления IP, замены неисправных узлов)
Процедура:
-
Определите машины для удаления
Просмотрите текущие машины:
Запишите
<machine-name>машин, которые требуется удалить. -
Добавьте аннотацию удаления для машин
Пометьте конкретные машины для удаления:
Повторите для каждой машины, которую нужно удалить.
Пример: удалить две конкретные машины
-
Масштабируйте MachineDeployment вниз
После добавления аннотаций уменьшите число реплик:
INFOЧисло реплик должно соответствовать количеству помеченных машин Уменьшите число реплик ровно на количество помеченных машин.
- Если уменьшить меньше, удалятся не все помеченные машины
- Если уменьшить больше, дополнительные машины будут выбраны случайным образом для удаления
Пример: если вы пометили 2 машины, уменьшите число реплик ровно на 2 (например, с 5 до 3)
Платформа удалит помеченные машины, а не выбранные случайным образом.
-
Отслеживайте процесс удаления
Наблюдайте за процессом удаления машин:
-
Проверьте, что узлы удалены
Переключитесь на контекст целевого кластера:
Удаленные узлы больше не должны отображаться в списке.
Обновление инфраструктуры Machine
Чтобы обновить спецификации worker machine (CPU, память, диск, VM template), выполните следующие шаги:
-
Создайте новый шаблон Machine
- Скопируйте существующий
DCSMachineTemplate, на который ссылается вашMachineDeployment - Измените необходимые значения (CPU, память, диск, VM template и т. д.)
- Дайте новому шаблону уникальное имя
- Примените новый
DCSMachineTemplateк кластеру
- Скопируйте существующий
-
Обновите Machine Deployment
- Измените ресурс
MachineDeployment - Обновите поле
spec.template.spec.infrastructureRef.name, чтобы оно указывало на новый шаблон - Примените изменения
- Измените ресурс
-
Rolling update
- Система автоматически запустит rolling update
- Рабочие узлы будут заменены на новые, с обновленными спецификациями
- Отслеживайте ход обновления через статус MachineDeployment
Обновление Bootstrap Templates
Bootstrap templates (KubeadmConfigTemplate) используются ресурсами MachineDeployment и MachineSet. Изменения существующих шаблонов не запускают автоматический rollout существующих машин; только новые машины используют обновленный шаблон.
Процесс обновления:
-
Экспортируйте существующий шаблон
-
Измените конфигурацию
- Обновите нужные поля в экспортированном YAML
- Измените
metadata.nameна новое уникальное имя - Удалите лишние поля метаданных (
resourceVersion,uid,creationTimestampи т. д.)
-
Создайте новый шаблон
-
Обновите MachineDeployment
- Измените ресурс MachineDeployment
- Обновите
spec.template.spec.bootstrap.configRef.name, чтобы он ссылался на новый шаблон - Примените изменения, чтобы запустить rolling update
Поведение rollout шаблона Существующие машины продолжают использовать старую bootstrap-конфигурацию. Только вновь созданные машины (во время масштабирования или rolling updates) будут использовать обновленный шаблон.
Обновление версии Kubernetes
Для обновления Kubernetes на Huawei DCS см. Upgrading Kubernetes on Huawei DCS. Это руководство описывает требуемый порядок обновления, workflow на YAML для ресурсов MachineDeployment и workflow в web UI для обновления Node Pool.
Управление Node Pools через Web UI
Node pools предоставляют декларативный способ управления группами узлов с идентичными конфигурациями. Вы можете просматривать, добавлять и удалять worker node pools через web UI.
Требование к версии: Этот workflow требует Fleet Essentials и Alauda Container Platform DCS Infrastructure Provider 1.0.13 или более поздней версии. Если версия provider ниже 1.0.13, используйте описанные в этом документе workflow управления node pool через YAML.
Навигация: Clusters → Clusters → Select cluster → Node Pools Tab
Просмотр Node Pools
Node Pools Tab отображает все node pools в кластере:
Node Pool control plane:
- Фиксирован на 3 репликах для обеспечения высокой доступности
- Отображает версию Kubernetes с индикатором обновления, если он доступен
- Показывает ссылку Conditions для подробного статуса
Worker Node Pools:
- Настраиваемое число реплик
- Индивидуальное управление версией Kubernetes
- Операции масштабирования и обновления
Информация на карточке Node Pool:
Добавление worker node pool
Навигация: Node Pools Tab → Нажмите Add Worker Node Pool
Поля формы:
Проверки:
- Имя пула должно быть уникальным в пределах кластера
- В IP Pool должно быть достаточно свободных IP-адресов (≥ Replicas)
- Должны соблюдаться ограничения
maxSurge/maxUnavailable
Совет: Чтобы избежать конфликтов имен, добавляйте к имени пула имя кластера, разделенное дефисом (например, mycluster-worker-1).
После создания новые узлы появятся во вкладке Nodes. Количество узлов будет равно заданному значению Replicas.
Удаление worker node pool
Шаги:
- Нажмите значок удаления на карточке Worker Node Pool
- Подтвердите удаление в диалоговом окне
Удаление worker node pool навсегда удаляет все связанные узлы и машины. Убедитесь, что рабочие нагрузки могут выдержать потерю этих узлов благодаря корректной репликации.
Просмотр Conditions (только Control Plane)
Нажмите ссылку Conditions на карточке Control Plane Node Pool, чтобы просмотреть подробную информацию о статусе.
Список Conditions: