Расширение развертывания кластера VMware vSphere
В этом документе объясняется, как расширить базовое развертывание кластера VMware vSphere после успешного выполнения минимального рабочего процесса для одного дата-центра.
Содержание
СценарииПредварительные требованияДобавление второго NICРасширение с одного NIC до двух NICВозврат с двух NIC к одному NICВключение нескольких дата-центров и failure domainsДобавление дисков данныхМасштабирование узлов workerПроверкаДальнейшие действияСценарии
Используйте этот документ в следующих сценариях:
- Вам нужен второй NIC на узлах control plane или worker.
- Вы хотите распределить узлы по нескольким дата-центрам или зонам развертывания.
- Вы хотите добавить больше дисков данных.
- Вы хотите масштабировать пул worker.
Предварительные требования
Перед началом убедитесь, что выполнены следующие условия:
- Базовый рабочий процесс в Создание кластера VMware vSphere в глобальном Cluster успешно завершен.
- Вы проверили дополнительные параметры в Подготовка параметров для кластера VMware vSphere.
- Вы понимаете, какие манифесты определяют параметры сети, размещения и дисков в вашем развертывании.
Добавление второго NIC
Если узлам требуется дополнительная сеть управления, хранения или сервисов, расширьте манифесты в следующих ресурсах:
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:
Добавьте второй NIC в machine templates:
Если включены failure domains, обновите список сетей в VSphereFailureDomain.spec.topology.networks:
При определении значений второго NIC подготовьте следующие placeholders в checklist и манифестах:
<master_01_nic2_ip><master_02_nic2_ip><master_03_nic2_ip><worker_01_nic2_ip><worker_02_nic2_ip>— если вы также расширяете пул worker
При переходе от одного 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
Включение нескольких дата-центров и failure domains
Используйте несколько дата-центров и failure domains, если требуется размещать узлы в разных дата-центрах vCenter или вычислительных кластерах.
К таким принципам относятся следующие:
- Один кластер может определять несколько объектов
VSphereFailureDomain. - Каждый
VSphereDeploymentZoneссылается на одинVSphereFailureDomain. - Control plane использует
VSphereCluster.spec.failureDomainSelector. MachineDeploymentдля worker используетspec.template.spec.failureDomain, когда ему нужно целевое размещение в определенной зоне развертывания.
Подготовьте следующие placeholders для первого дата-центра:
<compute_cluster_1><default_datastore_1><resource_pool_path_1><fd_name_1><dz_name_1>
Подготовьте следующие placeholders для второго дата-центра:
<dc_name_2><fd_name_2><dz_name_2><compute_cluster_2><default_datastore_2><resource_pool_path_2>
Если вы добавляете третий дата-центр, продолжайте использовать тот же шаблон 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. Первому дата-центру также нужны VSphereFailureDomain и VSphereDeploymentZone, если включены failure domains:
Включите выбор control plane среди доступных failure domains, добавив failureDomainSelector в spec VSphereCluster в 10-cluster.yaml:
Пустой селектор {} соответствует каждой VSphereDeploymentZone, у которой controlPlane: true. Используйте match labels, чтобы ограничить control plane подмножеством зон.
Также добавьте блок [Labels] в ConfigMap CPI, чтобы vSphere CPI публиковал совпадающие метки зоны и региона на workload nodes. Ключи должны соответствовать значениям tagCategory, используемым в VSphereFailureDomain.spec.zone.tagCategory и VSphereFailureDomain.spec.region.tagCategory. Обновите данные vsphere.conf в 15-vsphere-cpi-clusterresourceset.yaml:
failureDomainSelector и блок [Labels] CPI должны включаться вместе. Если добавить только один из них, кластер окажется в несогласованном состоянии: узлы получат неразрешенные метки зоны или региона, либо control plane не сможет выбрать целевое размещение.
Задайте зону развертывания worker, если MachineDeployment для worker должен быть привязан к одной конкретной цели развертывания. Добавьте failureDomain в spec.template.spec в 30-workers-md-0.yaml:
Для <worker_failure_domain> используйте имя VSphereDeploymentZone, а не имя VSphereFailureDomain.
Рекомендация: Перед включением нескольких дата-центров убедитесь, что VM template, сети и datastores доступны в каждом целевом дата-центре.
Перед включением нескольких дата-центров также убедитесь в выполнении следующих предварительных условий:
- Template уже синхронизирован со всеми целевыми дата-центрами.
- Имена сетей разрешаются во всех целевых дата-центрах.
- Имена datastore разрешаются во всех целевых дата-центрах.
- Список дата-центров vSphere CPI охватывает все целевые дата-центры.
Добавление дисков данных
Базовое развертывание включает следующие обязательные диски данных:
- Узлы control plane:
var-cpaas,var-lib-containerdиvar-lib-etcd(3 диска на узел). Не удаляйте ни один из этих дисков. Для дискаvar-lib-etcdнужно задатьwipeFilesystem: true, чтобыkubeadm joinмог выполняться во время rolling updates. - Узлы worker:
var-cpaasиvar-lib-containerd(2 диска на узел). Не удаляйте ни один из этих дисков.
Если узлу нужны дополнительные диски данных сверх обязательного набора, добавьте новые записи в тот же список persistentDisks в соответствующем слоте узла VSphereMachineConfigPool. Особенно здесь важны следующие необязательные поля:
mountPath: если задан, диск форматируется и монтируется по указанному пути. Если не задан, диск подключается как raw device с символической ссылкой в/dev/disk/by-capv/<name>, что позволяет внешнему процессу управлять им во время выполнения.wipeFilesystem: если значениеtrue, содержимое диска стирается при первой загрузке новой VM. Обычные перезагрузки и ручные перезапуски службы на это не влияют. По умолчаниюfalse.
Масштабирование узлов worker
Масштабирование worker зависит от отношения между MachineDeployment.spec.replicas и доступными слотами узлов в machine config pool worker, VSphereMachineConfigPool.spec.configs[].
Применяйте следующие правила:
- Количество слотов узлов может быть больше, чем
replicas. - Неиспользуемые слоты не влияют на работающий кластер.
- Если
replicasпревышает количество доступных слотов, CAPV не сможет корректно назначить новые узлы worker.
Используйте следующий порядок при масштабировании worker:
- Добавьте новые слоты узлов worker в
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, и символическая ссылка создается заново. Диск никогда автоматически не форматируется и не монтируется — управление им во время выполнения выполняет приложение.
Затем обновите replicas worker:
Проверка
После каждого расширения проверяйте состояние кластера с помощью следующих команд:
Подтвердите следующие результаты:
- Новые определения размещения, NIC или дисков отражены в целевых ресурсах.
- Новые узлы worker переходят в состояние
Ready. - Существующие узлы остаются в исправном состоянии после изменения.
Дальнейшие действия
Применяйте по одному расширению за раз. Проверяйте результат перед тем, как объединять несколько изменений в одном кластере.