Провайдер Huawei DCS
Содержание
ОбзорОсновные возможностиВозможности управления кластеромУправление через UI (Fleet Essentials)Управление на основе YAMLПоддерживаемые версии KubernetesАрхитектураКонцепции и терминологияИерархия объектов платформы DCSПонятия платформы DCSDCS SiteDCS ClusterDCS HostDCS VM FolderDCS Cluster FolderDCS VM TemplateDCS DatastoreDCS Datastore ClusterDCS Distributed Virtual Switch (DVS)DCS Port GroupDCS VolumeDCS Cloud CredentialСопоставление ресурсов Cluster APIПонятия хранения: Datastore, Datastore Cluster и VolumeСетевые понятия: DVS, Port Group и IP IdentityСопоставление полей с понятиямиПоляDCSClusterПоля DCSMachineTemplate / DCSMachineПоля DCSIpHostnamePoolТребованияДокументацияОбзор
Провайдер инфраструктуры Huawei DCS обеспечивает неизменяемую инфраструктуру на платформе Huawei Datacenter Virtualization Solution (DCS).
DCS (Datacenter Virtualization Solution) — это платформа виртуализации Huawei, которая предоставляет возможности виртуализации корпоративного уровня. Провайдер DCS интегрируется с DCS для управления виртуальными машинами, сетями и ресурсами хранения для кластеров Kubernetes.
Версия
Постоянные диски, управляемые пулом, впервые поддерживаются в провайдере DCS v1.0.16.
В v1.0.16 параметр DCSIpHostnamePool.spec.pool[].persistentDisk управляется только через YAML; веб-интерфейс не предоставляет эту конфигурацию.
Основные возможности
- Управление виртуальными машинами: создание и управление VM на платформе DCS
- Настройка сети: поддержка конфигураций с несколькими NIC и настраиваемыми параметрами сети
- Управление хранилищем: гибкая конфигурация дисков с шаблонными дисками и постоянными дисками на основе IP-слотов в нескольких хранилищах данных
- Высокая доступность: встроенная поддержка развертываний управляющей плоскости с высокой доступностью
- Пошаговые обновления: автоматизированные rolling update без простоя
- Сохранение данных при обновлении: объявленные постоянные диски могут быть отсоединены от старых VM и повторно подключены к VM-замене во время пошаговых обновлений, чтобы сохранённые локальные данные узла не потерялись вместе с системным диском
Возможности управления кластером
Провайдер DCS всегда поддерживает управление кластером на основе YAML через манифесты Cluster API.
Он также поддерживает управление кластером через UI, если установлены Fleet Essentials и версия Alauda Container Platform DCS Infrastructure Provider — 1.0.13 или новее. Если рабочий процесс UI использует постоянные диски, управляемые пулом, используйте провайдер DCS v1.0.16 или новее. В v1.0.16 объявление постоянного диска в DCSIpHostnamePool по-прежнему выполняется только через YAML.
Управление через UI (Fleet Essentials)
UI Fleet Essentials не поддерживает обновления кластера ACP 4.3
Рабочий процесс UI Fleet Essentials не был адаптирован к механизму Cluster Version Operator (CVO), представленному в ACP 4.3. Не используйте UI Fleet Essentials для обновления кластеров DCS на ACP 4.3.
Два поддерживаемых альтернативных варианта:
- Путь YAML — следуйте процедуре обновления на основе YAML в Обновление Kubernetes на Huawei DCS.
- UI управления кластерами ACP Core — используйте двухэтапный поток обновления, встроенный в платформу ACP Core; см. Запросить обновление глобального кластера или Запросить обновление кластеров рабочей нагрузки.
Создание кластера и управление пулами узлов через UI Fleet Essentials не затрагиваются этим ограничением.
Fleet Essentials предоставляет точки расширения UI, которые позволяют Alauda Container Platform DCS Infrastructure Provider динамически добавлять страницы, специфичные для DCS.
Когда установлен Fleet Essentials и версия провайдера 1.0.13 или новее, вы можете управлять кластерами DCS через веб-интерфейс. Сценарии с постоянными дисками, управляемыми пулом, требуют провайдера DCS v1.0.16 или новее, но в v1.0.16 объявление persistentDisk в DCSIpHostnamePool по-прежнему должно управляться через YAML-манифесты:
Управление инфраструктурными ресурсами:
- Cloud Credentials — хранение учетных данных для доступа к платформе DCS
- IP Pools — управление выделением IP-адресов и настройками нескольких NIC. В
v1.0.16постоянные диски IP-слотов, такие как/var/cpaas, по-прежнему управляются через YAML - Machine Templates — определение спецификаций VM для Control Plane и Worker Nodes, за исключением постоянных дисков, управляемых пулом
Жизненный цикл кластера:
- Создание кластеров — пошаговый мастер из 5 этапов для создания кластера
- Просмотр сведений о кластере на вкладках Overview, Nodes, Node Pools и Aligned Extensions
- Обновление кластеров — двухфазное обновление: Distribution Version → Kubernetes
- Удаление кластеров с диалогами подтверждения
Управление пулом узлов:
- Просмотр пулов узлов Control Plane и Worker Node
- Добавление пулов Worker Node с настраиваемым количеством реплик и стратегиями rollout
- Удаление пулов Worker Node
- Обновление версии Kubernetes для каждого пула узлов
- Просмотр подробных Conditions для пула узлов Control Plane
Управление на основе YAML
Для автоматизации и рабочих процессов GitOps вы можете управлять кластерами DCS с помощью YAML-манифестов. Этот рабочий процесс не зависит от Fleet Essentials:
- Определение инфраструктурных ресурсов (Secret, DCSIpHostnamePool, DCSMachineTemplate)
- Создание ресурсов кластера (KubeadmControlPlane, DCSCluster, Cluster)
- Управление рабочими узлами (MachineDeployment, KubeadmConfigTemplate)
- Выполнение пошаговых обновлений и апгрейдов с сохранением объявленных постоянных дисков при замене узлов
См. Создание кластеров на Huawei DCS для инструкций на основе YAML.
Поддерживаемые версии Kubernetes
Провайдер DCS поддерживает версии Kubernetes, определенные в OS Support Matrix. Каждый выпуск Alauda OS включает конкретную версию Kubernetes, и шаблоны VM должны создаваться с использованием соответствующих образов Alauda OS.
Архитектура
Провайдер DCS реализует спецификацию провайдера инфраструктуры Cluster API:
- DCSCluster: представляет инфраструктурный кластер DCS
- DCSMachine: представляет отдельные виртуальные машины
- DCSMachineTemplate: определяет шаблоны VM для создания машин
- DCSIpHostnamePool: управляет выделением IP и hostname для машин
Концепции и терминология
Некоторые понятия платформы Huawei DCS имеют названия, которые очень похожи на имена пользовательских ресурсов Cluster API. Два из них заслуживают особого внимания, потому что совпадение названий полное: DCS Cluster (пул физических хостов платформы DCS) — это не тот же объект, что и пользовательский ресурс DCSCluster (инфраструктурный ресурс Cluster API, который представляет кластер Kubernetes поверх DCS). Если считать их одним и тем же, это приводит к неверной конфигурации DCSMachineTemplate и DCSCluster.
В этом разделе перечислены понятия платформы DCS, на которые ссылается провайдер, сопоставлено каждое понятие с ресурсом или полем Cluster API, которое на него ссылается, и поясняется сетевой и хранилищный уровни, которые чаще всего становятся источником ошибок конфигурации.
Иерархия объектов платформы DCS
Платформа DCS организует свои объекты в иерархию. Провайдер работает со следующими уровнями (сверху вниз):
- DCS Site — верхнеуровневая область действия одного развертывания DCS. Идентифицируется по site ID, например
EC1C108C. - Внутри site:
- DCS Clusters — пулы физических хостов. Один site содержит один или несколько DCS Clusters.
- DCS VM Folders и DCS Cluster Folders — организационные метки (логические группы) для виртуальных машин и кластеров соответственно.
- DCS Datastores и DCS Datastore Clusters — контейнеры хранения и группы контейнеров хранения.
- DCS Distributed Virtual Switches (DVS) — виртуальные коммутаторы, охватывающие site.
- Внутри DCS Cluster:
- DCS Hosts — физические серверы (например,
CNA-01,CNA-02).
- DCS Hosts — физические серверы (например,
- Внутри DCS DVS:
- DCS Port Groups — записи сетевой конфигурации, к которым подключаются NIC виртуальных машин.
- Независимо от иерархии размещения:
- DCS VM Templates — виртуальные машины, помеченные как шаблоны, используемые как исходный образ для клонирования.
- DCS Volumes — постоянные диски, созданные на DCS Datastores.
Провайдер не владеет ни одним из этих объектов. Он ссылается на них по имени или URN из полей пользовательских ресурсов.
Понятия платформы DCS
DCS Site
Верхнеуровневый контейнер одного развертывания DCS. Site ID задается в DCSCluster.spec.site и также хранится в Secret учетных данных облака. Все пути API DCS, используемые провайдером, включают site ID (/service/sites/{siteId}/...).
DCS Cluster
Пул физических хостов на платформе DCS. Планировщик DCS размещает виртуальные машины на хостах, которые принадлежат одному DCS Cluster. Один site может содержать один или несколько DCS Clusters; один DCS Cluster содержит один или несколько DCS Hosts. Имена DCS Cluster отображаются в портале DCS и возвращаются API GET /service/sites/{siteId}/clusters.
Имя DCS Cluster совпадает с пользовательским ресурсом Cluster API DCSCluster. См. ниже Сопоставление ресурсов Cluster API.
DCS Host
Один физический сервер, зарегистрированный в DCS Cluster. Имена следуют локальной конвенции на платформе DCS (например, CNA-01). Виртуальные машины работают на хостах; планировщик DCS выбирает, какой хост получит новую виртуальную машину, исходя из политик уровня кластера (DRS, правила anti-affinity) и доступной емкости хоста. Провайдер не закрепляет виртуальные машины за конкретным DCS Host; ресурс DCSMachineTemplate не предоставляет поля привязки к хосту.
DCS VM Folder
Организационная метка внутри DCS Site, которая группирует виртуальные машины. VM Folder не влияет на размещение вычислительных ресурсов; виртуальная машина, сгруппированная в VM Folder foo, по-прежнему работает на DCS Host, принадлежащем некоторому DCS Cluster. Провайдер запрашивает VM Folders через GET /service/sites/{siteId}/folder?type=1.
VM Folders должны быть созданы на платформе DCS до того, как на них можно будет сослаться из DCSMachineTemplate.spec.template.spec.location (с type: folder).
DCS Cluster Folder
Организационная метка, которая группирует сами DCS Clusters; возвращается тем же endpoint /folder, но с другим параметром type. Провайдер не запрашивает и не использует DCS Cluster Folders. Это понятие приведено здесь только для того, чтобы не путать его с DCS VM Folder.
DCS VM Template
Виртуальная машина на платформе DCS, которая была помечена как шаблон (isTemplate=true). Провайдер клонирует этот шаблон для создания узлов кластера. VM Template идентифицируется по имени (значение DCSMachine.spec.vmTemplateName); провайдер преобразует имя в URN путем запроса GET /service/sites/{siteId}/vms?isTemplate=true&name=<name>.
VM Template содержит собственный диск на DCS Datastore и собственную сетевую конфигурацию. Провайдер перезаписывает сетевую конфигурацию (порт-группа NIC, customization) при клонировании; тип хранилища диска он не перезаписывает. Клонированная виртуальная машина по умолчанию наследует DCS Cluster, на котором находится шаблон; см. Infrastructure → Advanced: Multi-Cluster Deployment для использования между кластерами.
DCS Datastore
Контейнер хранения на платформе DCS, в котором хранятся диски виртуальных машин. Datastore может быть основан на SAN, IPSAN, NAS, FusionStorage или локальном диске. Бэкенд хранения определяет, виден ли datastore одному DCS Cluster или нескольким DCS Clusters: SAN, IPSAN, NAS и FusionStorage обычно поддерживают доступ между кластерами; локальный диск — нет.
На Datastore ссылаются из спецификаций дисков либо по datastoreName, либо по datastoreUrn; провайдер преобразует имя в URN перед отправкой запроса клонирования.
DCS Datastore Cluster
Группа DCS Datastores. Когда спецификация диска ссылается на Datastore Cluster (через datastoreClusterName), планировщик DCS выбирает член Datastore с доступной емкостью. Это рекомендуемый способ объявления хранилища, когда администратор DCS настроил datastore cluster, поскольку он устойчив к исчерпанию емкости отдельного Datastore.
DCS Datastore Cluster — это не DCS Cluster. Эти два названия совпадают только словом "cluster", но лежащие в основе понятия различны: DCS Cluster — это пул хостов, а DCS Datastore Cluster — это пул Datastore. Учитывайте это совпадение при чтении документации платформы или при общении с администраторами DCS.
DCS Distributed Virtual Switch (DVS)
Виртуальный коммутатор на платформе DCS, который охватывает один или несколько DCS Hosts. NIC виртуальных машин подключаются к DCS Port Group, который, в свою очередь, принадлежит DCS DVS. Провайдер запрашивает DVS через GET /service/sites/{siteId}/dvswitchs.
DCS Port Group
Запись сетевой конфигурации на DCS DVS. Каждый port group содержит конфигурацию VLAN, политики безопасности и другие сетевые параметры. Провайдер запрашивает port groups через GET {dvSwitchUri}/portgroups (используя URI родительского DVS) и ссылается на них по имени (portGroupName) или URN (portGroupUrn).
NIC виртуальной машины должен быть подключен ровно к одному DCS Port Group. Дополнительные NIC требуют дополнительных ссылок на port group.
DCS Volume
Постоянный диск на платформе DCS. Volumes размещаются на DCS Datastores и идентифицируются по URN, например urn:sites:EC1C108C:volumes:9841. Провайдер создает volumes через POST /service/sites/{siteId}/volumes, когда DCSIpHostnamePool.spec.pool[].persistentDisk[] объявляет диски, которые должны пережить замену виртуальной машины; затем он подключает полученный volume к виртуальной машине через действие attachvol.
DCS Volume концептуально отличается от Kubernetes PersistentVolume. DCS Volume — это объект хранения платформы DCS, подключаемый на уровне гипервизора; Kubernetes PersistentVolume — это объект API Kubernetes, который представляет хранилище, доступное для pod. Провайдер управляет только DCS Volumes; ресурсы PersistentVolume внутри кластера управляются отдельно CSI-драйвером рабочей нагрузки.
DCS Cloud Credential
Материал аутентификации, используемый провайдером для вызова DCS REST API. Провайдер получает токен сессии, отправляя заголовки X-Auth-User и X-Auth-Key в POST /service/session, и использует возвращаемый заголовок X-Auth-Token в последующих запросах. Учетные данные хранятся как Secret Kubernetes, на который ссылается DCSCluster.spec.credentialSecretRef. Secret содержит ключи authUser, authKey, endpoint и site.
Сопоставление ресурсов Cluster API
Следующая таблица позволяет различать понятия платформы DCS, названия которых похожи на пользовательские ресурсы Cluster API.
Следующее понятие не пересекается ни с одним ресурсом Cluster API, но внутренне может вызывать путаницу из-за слова "cluster":
Понятия хранения: Datastore, Datastore Cluster и Volume
Платформа DCS предоставляет три связанных со storage понятия, на которые провайдер ссылается отдельно:
- DCS Datastore — это отдельный контейнер хранения. Диск виртуальной машины закрепляется за одним DCS Datastore.
- DCS Datastore Cluster — это группа DCS Datastores. Диск виртуальной машины, который ссылается на DCS Datastore Cluster, размещается на одном из Datastore участников с доступной емкостью; выбор делает планировщик DCS.
- DCS Volume — это объект постоянного диска, который находится на DCS Datastore (или на Datastore-участнике DCS Datastore Cluster). Volumes создаются и подключаются к виртуальным машинам через провайдер, когда
DCSIpHostnamePoolобъявляет постоянные диски; они переживают замену виртуальной машины.
Связь между этими тремя понятиями:
DCSMachineTemplateобъявляет один или несколько дисков вvmConfig.dcsMachineDiskSpec[]. Каждый диск привязывается либо к конкретномуdatastoreName, либо кdatastoreClusterName. Эти диски на уровне шаблона создаются и удаляются вместе с виртуальной машиной.- Запись
DCSIpHostnamePoolможет объявлять один или несколько элементовpersistentDisk[]. Каждый элемент привязывается либо к конкретномуdatastoreName, либо кdatastoreClusterName, и провайдер создает соответствующий DCS Volume, который переживает замену виртуальной машины.
Видимость между кластерами определяется базовым storage backend. Datastore на базе SAN, IPSAN, NAS и FusionStorage обычно видны нескольким DCS Clusters; Datastore на локальном диске видны только одному DCS Cluster. Именно эта видимость определяет, может ли один DCS VM Template быть клонирован более чем в один DCS Cluster.
Сетевые понятия: DVS, Port Group и IP Identity
Настройка сети в кластере Kubernetes, основанном на DCS, разделена на два уровня:
- Сетевая инфраструктура на стороне DCS (уровень 2): NIC виртуальной машины должен подключаться к DCS Port Group, который принадлежит DCS Distributed Virtual Switch. DVS и Port Group — это объекты платформы DCS, создаваемые и администрируемые на стороне DCS. Провайдер ссылается на них по имени (
dvSwitchName,portGroupName) или по URN (portGroupUrn). - Сетевая идентичность на стороне кластера (уровень 3): IP-адрес, маска подсети, шлюз, DNS-сервер и hostname, назначенные виртуальной машине, не являются объектами платформы DCS. Они объявляются в записях
DCSIpHostnamePool.spec.pool[](ресурс Cluster API, которым владеет оператор кластера) и записываются в виртуальную машину через cloud-init или Ignition во время bootstrap.
Это разделение имеет два практических следствия:
- Команда платформы DCS отвечает за определения DVS и Port Group. Оператор кластера отвечает за план IP-адресов и hostname. Эти две стороны координируются через ресурс
DCSIpHostnamePool, который ссылается на port group на стороне DCS и одновременно объявляет сетевую идентичность на стороне кластера. - Провайдер не вызывает API DCS для выделения или резервирования IP-адресов. Конфликты адресов должен предотвращать оператор кластера при создании записей
DCSIpHostnamePool.
Ресурс Cluster API DCSIpHostnamePool и port group платформы DCS — это разные объекты. На платформе DCS нет нативного понятия "IP pool"; ресурс DCSIpHostnamePool — это единственное место, где фиксируется сетевая идентичность на уровне каждой виртуальной машины.
Сопоставление полей с понятиями
Следующие таблицы сопоставляют наиболее часто используемые поля пользовательских ресурсов с понятиями платформы DCS, на которые они ссылаются, и источником значения.
Поля DCSCluster
Поля DCSMachineTemplate / DCSMachine
Поля DCSIpHostnamePool
Требования
-
Платформа DCS с доступом к API
-
Пользователь с ролью администратора DCS, один из следующих:
Interface interconnection user(по умолчанию), илиDomain user(на основе LDAP/AD; требует настроенной аутентификации домена DCS вашим администратором DCS).
См. Credential User Types для критериев выбора и требований на стороне DCS.
-
Шаблоны виртуальных машин с образами Alauda OS
-
Шаблоны DCS VM версии
4.2.1или новее, если вы используете постоянные диски, управляемые пулом, поскольку безопасное завершение работы и отсоединение диска зависят от guest tools -
Общее хранилище с возможностью доступа между хостами
Документация
Подробные инструкции по использованию провайдера DCS см. в следующих разделах: