Управление узлами
В этом документе описывается, как управлять рабочими узлами с помощью ресурсов Cluster API Machine.
Содержание
Предварительные требованияОбзорРазвертывание рабочих узловШаг 1: Настройка пула IP-имён хостовШаг 2: Настройка шаблона машиныШаг 3: Настройка шаблона BootstrapШаг 4: Настройка развертывания машинОперации управления узламиМасштабирование рабочих узловДобавление рабочих узловУдаление рабочих узловОбновление инфраструктуры машинОбновление шаблонов BootstrapОбновление версии KubernetesПредварительные требования
Важные предварительные требования
- Контрольная плоскость должна быть развернута до выполнения операций с узлами. Инструкции по настройке см. в разделе Create Cluster.
- Убедитесь, что у вас есть правильный доступ к платформе DCS и необходимые разрешения.
Рекомендации по конфигурации При работе с конфигурациями в этом документе:
- Изменяйте только значения, заключённые в скобки
<> - Заменяйте значения-заполнители на параметры, соответствующие вашей среде
- Сохраняйте все остальные настройки по умолчанию, если явно не требуется их изменить
Обзор
Рабочие узлы управляются через ресурсы Cluster API Machine, что обеспечивает декларативное и автоматизированное управление жизненным циклом узлов. Процесс развертывания включает:
- Настройка пула IP-имён хостов — сетевые параметры для рабочих узлов
- Настройка шаблона машины — спецификации виртуальной машины
- Конфигурация Bootstrap — инициализация узла и параметры присоединения
- Развертывание машин — оркестрация создания и управления узлами
Развертывание рабочих узлов
Шаг 1: Настройка пула IP-имён хостов
Пул IP-имён хостов определяет сетевую конфигурацию для виртуальных машин рабочих узлов. Необходимо спланировать и настроить IP-адреса, имена хостов, DNS-серверы и другие сетевые параметры перед развертыванием.
Требование к размеру пула Пул должен содержать не менее записей, чем количество рабочих узлов, которые вы планируете развернуть. Недостаточное количество записей не позволит развернуть узлы.
Пример:
Создайте DCSIpHostnamePool с именем <worker-iphostname-pool-name>:
Основные параметры:
Шаг 2: Настройка шаблона машины
DCSMachineTemplate определяет спецификации виртуальных машин рабочих узлов, включая шаблоны ВМ, вычислительные ресурсы, конфигурацию хранилища и сетевые настройки.
Обязательные конфигурации дисков Следующие точки монтирования дисков обязательны. Не удаляйте их:
- Системный том (
systemVolume: true) /var/lib/kubelet— каталог данных kubelet/var/lib/containerd— данные контейнерного рантайма/var/cpaas— данные, специфичные для платформы
Допускается добавление дополнительных дисков, но эти обязательные конфигурации должны сохраняться.
Пример:
Создайте DCSMachineTemplate с именем <worker-dcs-machine-template-name>:
Основные параметры:
*Обязательно при указании родительского объекта
Шаг 3: Настройка шаблона Bootstrap
KubeadmConfigTemplate определяет конфигурацию bootstrap для рабочих узлов, включая учётные записи пользователей, SSH-ключи, системные файлы и параметры присоединения kubeadm.
Оптимизация шаблона Шаблон включает предварительно оптимизированные настройки для безопасности и производительности. Изменяйте только те параметры, которые требуют настройки под вашу среду.
Пример:
Шаг 4: Настройка развертывания машин
MachineDeployment организует создание и управление рабочими узлами, ссылаясь на ранее настроенные ресурсы DCSMachineTemplate и KubeadmConfigTemplate. Он управляет желаемым количеством узлов и выполняет поэтапные обновления.
Пример:
Основные параметры:
Операции управления узлами
В этом разделе описываются распространённые операции управления рабочими узлами, включая масштабирование, обновления, апгрейды и изменения шаблонов.
Фреймворк Cluster API Операции управления узлами основаны на фреймворке Cluster API. Для подробной информации обратитесь к официальной документации Cluster API.
Масштабирование рабочих узлов
Масштабирование рабочих узлов позволяет регулировать ёмкость кластера в зависимости от нагрузки. Cluster API автоматически управляет жизненным циклом узлов через ресурс MachineDeployment.
Добавление рабочих узлов
Увеличьте количество рабочих узлов для обработки возросшей нагрузки или добавления новой ёмкости.
Сценарий использования: масштабирование кластера для добавления вычислительных ресурсов
Предварительные условия:
- Проверьте, что пул IP содержит достаточное количество доступных IP-адресов для новых узлов
- Убедитесь, что на платформе DCS достаточно ресурсов для создания новых ВМ
Процедура:
-
Проверьте текущий статус узлов
Просмотрите текущие машины в кластере:
-
Расширьте пул IP
Перед масштабированием добавьте новые IP-конфигурации в пул для дополнительных узлов.
INFOРасширение пула IP Пул IP должен содержать не менее записей, чем желаемое количество реплик. Добавьте новые IP-записи для каждого дополнительного рабочего узла, который планируете развернуть.
Добавьте IP-записи в пул:
Сначала экспортируйте текущую конфигурацию пула, чтобы сохранить существующие записи:
Затем используйте следующую команду для добавления новых IP-конфигураций. Массив
poolдолжен содержать все существующие записи плюс новые:WARNINGВажные замечания
- Массив
poolдолжен содержать все существующие записи и новые, которые вы хотите добавить - Скопируйте существующие записи из экспортированного YAML, чтобы избежать потери данных
- Убедитесь, что у каждой новой записи уникальные значения
ip,hostnameиmachineName - Сетевые параметры (
mask,gateway,dns) обычно совпадают с существующими записями
Пример: Добавление 2 новых узлов к существующему пулу из 3 узлов
- Массив
-
Проверьте ёмкость пула IP
После расширения пула проверьте, что в нём достаточно записей для желаемого количества реплик:
Убедитесь, что пул содержит не менее записей, чем желаемое количество реплик.
-
Масштабируйте MachineDeployment
Обновите поле
replicasдо нужного количества узлов:Пример: Масштабирование с 3 до 5 узлов
-
Отслеживайте процесс масштабирования
Наблюдайте за созданием машин:
Контроллер Cluster API автоматически создаст новые машины на основе шаблона MachineDeployment.
-
Проверьте, что узлы присоединились к кластеру
Переключитесь на контекст целевого кластера и проверьте новые узлы:
Новые узлы должны появиться в списке и перейти в статус
Ready.
Поведение при поэтапном обновлении При масштабировании вверх новые узлы создаются сразу, не влияя на существующие. Это обеспечивает масштабирование без простоев.
Удаление рабочих узлов
Уменьшите количество рабочих узлов для снижения ёмкости кластера или удаления неиспользуемых ресурсов. Cluster API поддерживает два способа удаления:
- Случайное удаление: уменьшение количества реплик, платформа случайным образом выбирает и удаляет машины
- Целенаправленное удаление: пометка конкретных машин для удаления, затем уменьшение количества реплик (рекомендуется для восстановления IP)
Сценарий восстановления IP Если необходимо перераспределить IP конкретных машин (например, для повторного использования или управления пулом IP), используйте целенаправленное удаление. Аннотация удаления гарантирует, что платформа удалит именно помеченные машины, а не случайные.
Предупреждение о потере данных При масштабировании вниз узлы и связанные с ними диски удаляются. Убедитесь, что:
- Рабочие нагрузки могут переносить потерю узлов благодаря правильной репликации
- Критичные данные не хранятся только на удаляемых узлах
- Приложения рассчитаны на горизонтальное масштабирование
Случайное удаление
Сценарий использования: масштабирование вниз, когда можно удалить любой узел (без требований к IP)
Процедура:
-
Определите текущий статус машин
Просмотрите машины в MachineDeployment:
-
Масштабируйте MachineDeployment вниз
Обновите поле
replicas, уменьшив количество узлов:Пример: Масштабирование с 5 до 3 узлов
Контроллер Cluster API случайным образом выберет и удалит машины, чтобы соответствовать желаемому количеству реплик.
-
Отслеживайте процесс удаления
Наблюдайте за удалением машин:
Контроллер Cluster API выполнит:
- Дрейн выбранных узлов (эвакуация подов, если возможно)
- Удаление ВМ с платформы DCS
- Удаление ресурсов машин
-
Проверьте, что узлы удалены
Переключитесь на контекст целевого кластера:
Удалённые узлы больше не должны отображаться в списке.
Целенаправленное удаление
Сценарий использования: удаление конкретных машин (например, для восстановления IP, замены неисправных узлов)
Процедура:
-
Определите машины для удаления
Просмотрите текущие машины:
Запомните
<machine-name>машин, которые хотите удалить. -
Добавьте аннотацию удаления к машинам
Пометьте конкретные машины для удаления:
Повторите для каждой машины, которую хотите удалить.
Пример: Удаление двух конкретных машин
-
Масштабируйте MachineDeployment вниз
После добавления аннотаций уменьшите количество реплик:
INFOКоличество реплик должно соответствовать количеству аннотированных машин Уменьшите количество реплик ровно на число аннотированных машин.
- Если уменьшить меньше, не все аннотированные машины будут удалены
- Если уменьшить больше, дополнительные машины будут выбраны случайно для удаления
Пример: Если вы аннотировали 2 машины, уменьшите реплики ровно на 2 (например, с 5 до 3)
Платформа удалит аннотированные машины, а не случайно выбранные.
-
Отслеживайте процесс удаления
Наблюдайте за удалением машин:
-
Проверьте, что узлы удалены
Переключитесь на контекст целевого кластера:
Удалённые узлы больше не должны отображаться в списке.
Обновление инфраструктуры машин
Для обновления спецификаций рабочих машин (CPU, память, диск, шаблон ВМ) выполните следующие шаги:
-
Создайте новый шаблон машины
- Скопируйте существующий
DCSMachineTemplate, на который ссылается вашMachineDeployment - Измените необходимые значения (CPU, память, диск, шаблон ВМ и т.д.)
- Присвойте новому шаблону уникальное имя
- Примените новый
DCSMachineTemplateв кластере
- Скопируйте существующий
-
Обновите развертывание машин
- Измените ресурс
MachineDeployment - Обновите поле
spec.template.spec.infrastructureRef.name, чтобы ссылаться на новый шаблон - Примените изменения
- Измените ресурс
-
Поэтапное обновление
- Система автоматически запустит поэтапное обновление
- Рабочие узлы будут заменены на новые с обновлёнными спецификациями
- Отслеживайте прогресс обновления через статус MachineDeployment
Обновление шаблонов Bootstrap
Шаблоны Bootstrap (KubeadmConfigTemplate) используются ресурсами MachineDeployment и MachineSet. Изменения в существующих шаблонах не вызывают автоматического обновления уже созданных машин; обновления применяются только к новым машинам.
Процесс обновления:
-
Экспортируйте существующий шаблон
-
Измените конфигурацию
- Обновите необходимые поля в экспортированном YAML
- Измените
metadata.nameна новое уникальное имя - Удалите лишние поля метаданных (
resourceVersion,uid,creationTimestampи т.д.)
-
Создайте новый шаблон
-
Обновите MachineDeployment
- Измените ресурс
MachineDeployment - Обновите
spec.template.spec.bootstrap.configRef.name, чтобы ссылаться на новый шаблон - Примените изменения для запуска поэтапного обновления
- Измените ресурс
Поведение при обновлении шаблона Существующие машины продолжают использовать старую конфигурацию bootstrap. Только новые машины (при масштабировании или поэтапных обновлениях) будут использовать обновлённый шаблон.
Обновление версии Kubernetes
Обновление версии Kubernetes требует согласованных изменений как в MachineDeployment, так и в базовом шаблоне ВМ для обеспечения совместимости.
Совместимость версий
Убедитесь, что версия Kubernetes в шаблоне ВМ совпадает с версией, указанной в MachineDeployment. Несовпадение версий приведёт к ошибкам при присоединении узлов.
Процесс обновления:
-
Обновите шаблон машины
- Создайте новый
DCSMachineTemplateс обновлённымvmTemplateName, поддерживающим целевую версию Kubernetes - Убедитесь, что шаблон ВМ содержит правильные бинарники и зависимости Kubernetes
- Создайте новый
-
Обновите MachineDeployment
- Измените ресурс
MachineDeploymentследующим образом:- Обновите
spec.template.spec.versionдо целевой версии Kubernetes - Обновите
spec.template.spec.infrastructureRef.nameдля ссылки на новый шаблон машины - При необходимости обновите
spec.template.spec.bootstrap.configRef.nameдля изменений в bootstrap-конфигурации
- Обновите
- Измените ресурс
-
Отслеживайте обновление
- Система выполнит поэтапное обновление рабочих узлов
- Проверьте, что новые узлы присоединяются к кластеру с правильной версией Kubernetes
- Следите за состоянием кластера в процессе обновления