Расширение развертывания кластера VMware vSphere
В этом документе объясняется, как расширить базовое развертывание кластера VMware vSphere после успешного запуска минимального workflow для одного datacenter.
Содержание
СценарииПредварительные условияДобавление второго NICРасширение с одного NIC до двух NICВозврат с двух NIC к одному NICВключение нескольких datacenter и failure domainsДобавление дисков данныхМасштабирование worker nodesПроверкаДальнейшие действияСценарии
Используйте этот документ в следующих сценариях:
- Вам нужен второй NIC на control plane или worker nodes.
- Вы хотите распределить узлы между несколькими datacenter или зонами развертывания.
- Вы хотите добавить больше дисков данных.
- Вы хотите масштабировать пул worker.
Предварительные условия
Перед началом убедитесь, что выполнены следующие условия:
- Базовый workflow в Creating a VMware vSphere Cluster in the global Cluster успешно завершен.
- Вы проверили дополнительные параметры в Preparing Parameters for a VMware vSphere Cluster.
- Вы понимаете, какие manifests в вашем развертывании отвечают за настройки сети, размещения и дисков.
Добавление второго NIC
Когда узлам требуется дополнительная сеть управления, хранения или сервисная сеть, расширьте manifests в следующих ресурсах:
02-vspheremachineconfigpool-control-plane.yaml03-vspheremachineconfigpool-worker.yaml20-control-plane.yaml30-workers-md-0.yaml04-failure-domains.yaml, если включены failure domains
Каждый слот узла задает свою конфигурацию NIC в network.primary и network.additional. Основной NIC используется для определения kubelet node-ip и остается основным идентификатором узла; дополнительные NIC объединяются после него в указанном порядке.
Добавьте второй NIC в каждый слот control plane в machine config pools:
Примените тот же шаблон к слотам worker nodes:
Добавьте второй NIC в machine templates:
Если включены failure domains, обновите список сетей в VSphereFailureDomain.spec.topology.networks:
Когда вы задаете значения для второго NIC, подготовьте следующие placeholders в checklist и manifests:
<master_01_nic2_ip><master_02_nic2_ip><master_03_nic2_ip><worker_01_nic2_ip><worker_02_nic2_ip>, если вы также расширяете worker pool
При переходе между одним NIC и двумя NIC применяйте следующие правила:
Расширение с одного NIC до двух NIC
Обновите все следующие поля одновременно:
VSphereMachineConfigPool.spec.configs[].network.additional(добавьте вторую запись NIC;network.primaryоставьте без изменений)VSphereMachineTemplate.spec.template.spec.network.devicesVSphereFailureDomain.spec.topology.networks, если включены failure domains
Возврат с двух NIC к одному NIC
Удалите блок второго NIC из всех следующих полей:
- Вторая запись NIC в
VSphereMachineConfigPool.spec.configs[].network.additional(оставьте список пустым или полностью удалите ключadditional) - Вторая запись устройства в
VSphereMachineTemplate.spec.template.spec.network.devices - Второе имя сети в
VSphereFailureDomain.spec.topology.networks
Включение нескольких datacenter и failure domains
Используйте несколько datacenter и failure domains, когда требуется размещать узлы в разных datacenter vCenter или compute clusters.
Применяются следующие принципы:
- Один кластер может определять несколько объектов
VSphereFailureDomain. - Каждый
VSphereDeploymentZoneссылается на одинVSphereFailureDomain. - control plane использует
VSphereCluster.spec.failureDomainSelector. - worker
MachineDeploymentиспользуетspec.template.spec.failureDomain, когда его нужно привязать к определенной зоне развертывания.
Подготовьте следующие placeholders для первого datacenter:
<compute_cluster_1><default_datastore_1><resource_pool_path_1><fd_name_1><dz_name_1>
Подготовьте следующие placeholders для второго datacenter:
<dc_name_2><fd_name_2><dz_name_2><compute_cluster_2><default_datastore_2><resource_pool_path_2>
Если вы добавляете третий datacenter, продолжайте использовать тот же шаблон placeholders:
<dc_name_3><fd_name_3><dz_name_3><compute_cluster_3><default_datastore_3><resource_pool_path_3>
Создайте объекты failure-domain в 04-failure-domains.yaml. Первому datacenter также нужны VSphereFailureDomain и VSphereDeploymentZone, если включены failure domains:
Включите выбор control plane среди доступных failure domains, добавив failureDomainSelector в spec VSphereCluster в 10-cluster.yaml:
Укажите зону развертывания worker, когда worker MachineDeployment должен быть закреплен за одним target развертывания. Добавьте failureDomain в spec.template.spec в 30-workers-md-0.yaml:
Используйте имя VSphereDeploymentZone для <worker_failure_domain>, а не имя VSphereFailureDomain.
Рекомендация: Перед включением нескольких datacenter убедитесь, что VM template, сети и datastores доступны в каждом целевом datacenter.
Перед включением нескольких datacenter также убедитесь в выполнении следующих prerequisites:
- Template уже синхронизирован с каждым целевым datacenter.
- Имена сетей разрешаются в каждом целевом datacenter.
- Имена datastore разрешаются в каждом целевом datacenter.
- Список datacenter для vSphere CPI охватывает каждый целевой datacenter.
Добавление дисков данных
Базовое развертывание включает следующие обязательные диски данных:
- Control plane nodes:
var-cpaas,var-lib-containerdиvar-lib-etcd(3 диска на узел). Не удаляйте ни один из этих дисков. Для дискаvar-lib-etcdнеобходимо задатьwipeFilesystem: true, чтобы разрешитьkubeadm joinво время rolling updates. - Worker nodes:
var-cpaasиvar-lib-containerd(2 диска на узел). Не удаляйте ни один из этих дисков.
Если узлу нужны дополнительные диски данных сверх обязательного набора, добавьте больше записей в тот же список persistentDisks в соответствующем слоте узла VSphereMachineConfigPool. Здесь особенно важны следующие необязательные поля:
mountPath: если задан, диск форматируется и монтируется по указанному пути. Если не задан, диск подключается как raw device с symlink в/dev/disk/by-capv/<name>, что позволяет внешнему процессу управлять им во время выполнения.wipeFilesystem: если значениеtrue, содержимое диска стирается при первой загрузке новой VM. Обычные перезагрузки и ручные перезапуски служб не затрагиваются. По умолчанию —false.
Масштабирование worker nodes
Масштабирование worker зависит от соотношения между MachineDeployment.spec.replicas и доступными слотами узлов в worker machine config pool, VSphereMachineConfigPool.spec.configs[].
Применяйте следующие правила:
- Количество слотов узлов может быть больше, чем
replicas. - Неиспользуемые слоты не влияют на работающий кластер.
- Если
replicasпревышает число доступных слотов, CAPV не сможет корректно назначить новые worker nodes.
Используйте следующий порядок при масштабировании worker:
- Добавьте новые слоты worker nodes в
03-vspheremachineconfigpool-worker.yaml. - Увеличьте
MachineDeployment.spec.replicasв30-workers-md-0.yaml.
Следующий пример добавляет новый слот worker:
Чтобы подключить raw disk без форматирования или монтирования (например, когда диском управляет само приложение), опустите mountPath и fsFormat:
Диск будет доступен внутри guest OS по пути /dev/disk/by-capv/app-data. При rolling updates тот же VMDK повторно подключается к новой VM, и symlink создается заново. Диск никогда не форматируется и не монтируется автоматически — за его управление во время выполнения отвечает приложение.
Затем обновите количество worker replicas:
Проверка
После каждого расширения проверьте состояние кластера с помощью следующих команд:
Подтвердите следующие результаты:
- Новые настройки размещения, NIC или дисков отражены в целевых ресурсах.
- Новые worker nodes переходят в состояние
Ready. - Существующие узлы остаются в рабочем состоянии после изменения.
Дальнейшие действия
Применяйте одно расширение за раз. Проверяйте результат, прежде чем объединять несколько изменений в одном кластере.