• Русский
  • Провайдер Huawei DCS

    Обзор

    Провайдер инфраструктуры Huawei DCS обеспечивает неизменяемую инфраструктуру на платформе Huawei Datacenter Virtualization Solution (DCS).

    DCS (Datacenter Virtualization Solution) — это платформа виртуализации Huawei, которая предоставляет возможности виртуализации корпоративного уровня. Провайдер DCS интегрируется с DCS для управления виртуальными машинами, сетями и ресурсами хранения для кластеров Kubernetes.

    INFO

    Версия

    Постоянные диски, управляемые пулом, впервые поддерживаются в провайдере 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 Provider1.0.13 или новее. Если рабочий процесс UI использует постоянные диски, управляемые пулом, используйте провайдер DCS v1.0.16 или новее. В v1.0.16 объявление постоянного диска в DCSIpHostnamePool по-прежнему выполняется только через YAML.

    Управление через UI (Fleet Essentials)

    WARNING

    UI Fleet Essentials не поддерживает обновления кластера ACP 4.3

    Рабочий процесс UI Fleet Essentials не был адаптирован к механизму Cluster Version Operator (CVO), представленному в ACP 4.3. Не используйте UI Fleet Essentials для обновления кластеров DCS на ACP 4.3.

    Два поддерживаемых альтернативных варианта:

    Создание кластера и управление пулами узлов через 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 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.locationtype: 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.

    Понятие платформы DCSПохожий по названию ресурс Cluster APIПочему это не одно и то же
    DCS ClusterDCSCluster (CRD)DCS Cluster — это пул физических хостов на платформе DCS. DCSCluster — это пользовательский ресурс Cluster API, который представляет инфраструктурную сторону кластера Kubernetes, работающего поверх платформы DCS. Один DCS Cluster может размещать виртуальные машины одного или многих кластеров Kubernetes.
    DCS HostKubernetes NodeDCS Host — это физический сервер, зарегистрированный на платформе DCS. Kubernetes Node — это рабочий узел внутри кластера Kubernetes, на котором работает kubelet. Провайдер не предоставляет DCS Hosts в Kubernetes; связь между Kubernetes Node и DCS Host, на котором он работает, определяется планировщиком DCS и не представлена ни в одном пользовательском ресурсе.
    DCS VM TemplateDCSMachineTemplate (CRD)DCS VM Template — это шаблон образа ОС, подготовленный администратором DCS на платформе DCS. DCSMachineTemplate — это ресурс Cluster API, который ссылается на этот шаблон по имени и добавляет конфигурацию, специфичную для Kubernetes (CPU, memory, disks, network). DCSMachineTemplate не содержит данных образа; он указывает на DCS VM Template через vmTemplateName.
    DCS VolumeKubernetes PersistentVolumeDCS Volume — это объект хранения платформы DCS, подключаемый на уровне гипервизора. Kubernetes PersistentVolume — это объект API Kubernetes, представляющий хранилище, доступное для pod. Провайдер создает DCS Volumes (на основе DCSIpHostnamePool.spec.pool[].persistentDisk[]); ресурсы Kubernetes PersistentVolume управляются независимо CSI-драйвером рабочей нагрузки.
    DCS Cloud CredentialKubernetes Secret (на который ссылается DCSCluster.spec.credentialSecretRef)DCS Cloud Credential — это пара user/key, выданная администратором платформы DCS. Она передается провайдеру как Secret Kubernetes с ключами authUser, authKey, endpoint и site.

    Следующее понятие не пересекается ни с одним ресурсом Cluster API, но внутренне может вызывать путаницу из-за слова "cluster":

    Понятие платформы DCSС чем можно перепутать внутри документацииПочему это не одно и то же
    DCS Datastore ClusterDCS ClusterDCS Datastore Cluster — это группа DCS Datastores (хранилище). DCS Cluster — это пул DCS Hosts (вычисления). Эти два понятия содержат слово "cluster", но относятся к разным уровням платформы DCS.

    Понятия хранения: 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

    ПолеПонятие платформы DCSИсточник значения
    spec.siteDCS SiteSite ID, предоставленный администратором платформы DCS.
    spec.credentialSecretRefDCS Cloud CredentialИмя Secret Kubernetes в том же namespace, которое содержит пользователя DCS, ключ, endpoint и site.

    Поля DCSMachineTemplate / DCSMachine

    ПолеПонятие платформы DCSИсточник значения
    spec.template.spec.vmTemplateNameDCS VM TemplateИмя шаблона, зарегистрированного на платформе DCS (видно в портале DCS).
    spec.template.spec.locationtype: folder)DCS VM FolderИмя существующего VM Folder на платформе DCS. Folder должен быть сначала создан на стороне DCS.
    spec.template.spec.locationtype: cluster)DCS ClusterИмя существующего DCS Cluster. Используется только тогда, когда home cluster шаблона и целевой cluster различаются. См. Infrastructure → Advanced: Multi-Cluster Deployment.
    spec.template.spec.vmConfig.dvSwitchNameDCS DVSИмя существующего DCS Distributed Virtual Switch.
    spec.template.spec.vmConfig.portGroupNameDCS Port GroupИмя port group, который принадлежит указанному DCS DVS.
    spec.template.spec.vmConfig.portGroupUrnDCS Port GroupURN существующего DCS Port Group. Взаимоисключающе с portGroupName.
    spec.template.spec.vmConfig.dcsMachineDiskSpec[].datastoreNameDCS DatastoreИмя конкретного DCS Datastore.
    spec.template.spec.vmConfig.dcsMachineDiskSpec[].datastoreClusterNameDCS Datastore ClusterИмя DCS Datastore Cluster, который содержит один или несколько Datastores. Взаимоисключающе с datastoreName.
    spec.template.spec.vmConfig.dcsMachineDiskSpec[].datastoreUrnDCS DatastoreURN существующего DCS Datastore. Внутренне определяется из datastoreName.
    spec.template.spec.vmConfig.cdRomDatastoreNameDCS DatastoreИмя DCS Datastore, который будет хранить Ignition ISO.
    spec.template.spec.vmConfig.cdRomDatastoreClusterNameDCS Datastore ClusterИмя DCS Datastore Cluster, из которого выбирается Datastore для Ignition ISO.

    Поля DCSIpHostnamePool

    ПолеПонятие платформы DCSИсточник значения
    spec.pool[].ip / mask / gateway / dns / hostnameСетевая идентичность на стороне кластера (не понятие DCS)Объявляется оператором кластера; записывается в виртуальную машину через cloud-init или Ignition.
    spec.pool[].dvSwitchNameDCS DVSПереопределение DVS на уровне конкретного IP для дополнительных NIC. Если не указано, используется DVS на уровне шаблона.
    spec.pool[].portGroupName / portGroupUrnDCS Port GroupПереопределение port group на уровне конкретного IP для дополнительных NIC.
    spec.pool[].persistentDisk[].datastoreNameDCS DatastoreИмя DCS Datastore, который будет хранить постоянный диск.
    spec.pool[].persistentDisk[].datastoreClusterNameDCS Datastore ClusterИмя DCS Datastore Cluster, на котором создается постоянный диск. Взаимоисключающе с datastoreName.
    spec.pool[].persistentDisk[] (сама запись)Создает DCS VolumeDCS Volume создается провайдером через POST /service/sites/{siteId}/volumes и подключается к виртуальной машине через действие attachvol.

    Требования

    • Платформа 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 см. в следующих разделах: