• Русский
  • Инфраструктурные ресурсы для Huawei DCS

    Обзор

    Перед созданием кластеров в Huawei DCS необходимо настроить инфраструктурные ресурсы, включая облачные учетные данные, IP-пулы и шаблоны машин.

    Управлять инфраструктурными ресурсами можно через веб-интерфейс или с помощью YAML-манифестов. Веб-интерфейс предоставляет пошаговый интерфейс с проверкой данных, а YAML обеспечивает возможности автоматизации.

    INFO

    Требование к namespace Все инфраструктурные ресурсы должны быть развернуты в namespace cpaas-system, чтобы обеспечить корректную интеграцию с платформой как бизнес-кластеры.

    Облачные учетные данные

    Облачные учетные данные хранят информацию о доступе к платформе DCS, необходимую для операций с кластером.

    Использование веб-интерфейса

    Предварительные требования

    Перед созданием облачных учетных данных проверьте следующие требования платформы DCS:

    Конфигурация пользователя:

    • Тип пользователя: должен быть Interface interconnection user
    • Роль: должна быть administrator

    Политика паролей: Перейдите в System ManagementRights ManagementRights Management Policy и проверьте:

    • Политика: Whether to modify the password of an interface interconnection user upon password resetting and first login
    • Значение: должно быть установлено в No

    Если установлено значение Yes, пароль пользователя будет принудительно изменен при первом входе в систему, что нарушит аутентификацию и приведет к сбоям при создании кластера.

    Создание облачных учетных данных

    Путь: Clusters → Cloud Credentials → Create Cloud Credential → Select Huawei DCS

    Поля формы:

    ПолеТипОбязательноОписание
    NametextYesУникальный идентификатор учетных данных (1–63 символа, только строчные буквы, цифры и дефисы)
    Display NametextNoПользовательское описание для удобства идентификации
    DCS EndpointURLYesАдрес API платформы DCS (должен начинаться с http:// или https://)
    UsernametextYesИмя пользователя для входа в API платформы DCS
    PasswordpasswordYesПароль пользователя для входа в API платформы DCS
    SitetextYesСайт, в котором расположены шаблоны ВМ (все ресурсы должны находиться в одном и том же site)

    Правила проверки:

    • Name должен содержать от 1 до 63 символов, только строчные буквы, цифры и дефисы, а также начинаться и заканчиваться буквой или цифрой
    • DCS Endpoint должен иметь корректный формат URL и начинаться с http:// или https://

    Управление облачными учетными данными

    Просмотр учетных данных: Перейдите в Clusters → Cloud Credentials, чтобы просмотреть все настроенные учетные данные с их типом, временем создания и автором.

    Обновление учетных данных: Нажмите Update для учетных данных, чтобы изменить Display Name. Обновление пароля в текущей версии не поддерживается (планируется в будущем выпуске).

    Удаление учетных данных: Нажмите Delete, чтобы удалить учетные данные. Подтвердите удаление в диалоговом окне.

    Использование YAML

    Создайте ресурс Secret для хранения информации аутентификации DCS:

    dcs-secret.yaml
    apiVersion: v1
    data:
      authUser: <base64-encoded-auth-user>
      authKey: <base64-encoded-auth-key>
      endpoint: <base64-encoded-endpoint>
    kind: Secret
    metadata:
      name: <auth-secret-name>
      namespace: cpaas-system
    type: Opaque

    Описание параметров:

    ПараметрОписание
    .data.authUserИмя пользователя для входа в API платформы DCS (в кодировке base64)
    .data.authKeyПароль пользователя для входа в API платформы DCS (в кодировке base64)
    .data.endpointАдрес API платформы DCS с протоколом http или https (в кодировке base64). Примечание: Порт API по умолчанию для платформы DCS — 7443 (а не 8443, как принято обычно). Если в вашей среде используется нестандартный порт, уточните это у администратора.

    Пример:

    # Encode credentials
    echo -n "admin" | base64
    echo -n "your-password" | base64
    echo -n "https://dcs.example.com:7443" | base64
    
    # Apply the Secret
    kubectl apply -f dcs-secret.yaml -n cpaas-system

    IP-пулы

    IP-пулы определяют сетевую конфигурацию (IP-адреса, маски подсети, шлюзы, DNS) для узлов кластера. Каждый пул может содержать несколько записей узлов, а каждый узел может иметь несколько конфигураций сетевых интерфейсов.

    Использование веб-интерфейса

    Предварительные требования

    • Облачные учетные данные созданы

    Создание IP-пула

    Путь: Clusters → Virtual Machine → IP Pools → Create IP Pool → Select Credential

    Структура формы:

    Форма IP Pool состоит из списка Pools. Каждый Pool представляет один узел и содержит:

    1. Node IP (обязательно, ровно один на Pool)
    2. Additional NIC IPs (необязательно, несколько на Pool)

    Поля Node IP:

    ПолеТипОбязательноОписание
    IPIP addressYesIP-адрес для узла Kubernetes
    Subnet MaskCIDRYesМаска подсети для сети
    GatewayIP addressYesIP-адрес шлюза
    DNSIP addressNoАдреса DNS-серверов (для нескольких значений через запятую)
    HostnametextNoИмя хоста для виртуальной машины
    Machine NametextNoИмя виртуальной машины на платформе DCS
    dvSwitch NamedropdownNoИмя виртуального коммутатора (из платформы DCS)
    Port Group NamedropdownNoИмя port group (из платформы DCS)

    Поля Additional NIC IPs:

    ПолеТипОбязательноОписание
    IPIP addressYesIP-адрес не для узла (например, сеть хранения)
    Subnet MaskCIDRYesМаска подсети для сети
    GatewayIP addressYesIP-адрес шлюза
    DNSIP addressNoАдреса DNS-серверов
    dvSwitch NamedropdownYesИмя виртуального коммутатора (из платформы DCS)
    Port Group NamedropdownYesИмя port group (из платформы DCS)

    Правила проверки:

    • IP-адреса должны быть уникальны в пределах одного IP Pool
    • IP-адреса должны иметь корректный формат IPv4
    • Маска подсети должна иметь корректный формат
    • IP-адрес должен находиться в пределах настроенного диапазона подсети
    • Шлюз должен быть корректным адресом IPv4 в пределах диапазона подсети

    Советы:

    • Необходимо указать как минимум одну запись узла
    • Для каждого узла требуется ровно одна конфигурация Node IP
    • Additional NIC IPs необязательны для сценариев с несколькими NIC (например, для разделения сети хранения)

    Управление IP-пулами

    Просмотр пулов: Перейдите в Clusters → Virtual Machine → IP Pools, чтобы просмотреть все настроенные пулы с их IP-адресами узлов и временем создания.

    Обновление пулов: Нажмите Update, чтобы добавить или удалить записи узлов и изменить сетевые конфигурации.

    Удаление пулов: Нажмите Delete, чтобы удалить пул. Подтвердите удаление в диалоговом окне.

    Использование YAML

    Создайте ресурс DCSIpHostnamePool:

    dcs-ippool.yaml
    apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
    kind: DCSIpHostnamePool
    metadata:
      name: <iphostname-pool-name>
      namespace: cpaas-system
    spec:
      pool:
      - ip: "<ip-1>"
        mask: "<mask>"
        gateway: "<gateway>"
        dns: "<dns>"
        hostname: "<hostname-1>"
        machineName: "<machine-name-1>"
      - ip: "<ip-2>"
        mask: "<mask>"
        gateway: "<gateway>"
        dns: "<dns>"
        hostname: "<hostname-2>"
        machineName: "<machine-name-2>"
      - ip: "<ip-3>"
        mask: "<mask>"
        gateway: "<gateway>"
        dns: "<dns>"
        hostname: "<hostname-3>"
        machineName: "<machine-name-3>"

    Описание параметров:

    ПараметрТипОписаниеОбязательно
    .spec.pool[].ipstringIP-адрес виртуальной машины, которая будет созданаYes
    .spec.pool[].maskstringМаска подсетиYes
    .spec.pool[].gatewaystringIP-адрес шлюзаYes
    .spec.pool[].dnsstringIP DNS-сервера (для нескольких серверов используйте ,)No
    .spec.pool[].machineNamestringИмя виртуальной машины на платформе DCSNo
    .spec.pool[].hostnamestringИмя хоста виртуальной машиныNo
    WARNING

    Необходимо настроить сведения о машинах для количества машин, большего либо равного числу узлов, которые вы планируете развернуть. Недостаточное количество записей помешает развертыванию узлов.


    Шаблоны машин

    Шаблоны машин определяют характеристики виртуальной машины (шаблон ВМ, CPU, память, диск, сеть) для узлов кластера. Каждый шаблон машины имеет Type, который определяет его назначение:

    • Control Plane: для узлов control plane
    • Worker Node: для worker-узлов

    Использование веб-интерфейса

    Предварительные требования

    • IP Pool создан
    • VM Template создан на платформе DCS с использованием образа MicroOS
    • YAML файла ConfigMap применен к глобальному кластеру

    VM Template и ConfigMap:

    Каждый выпуск MicroOS включает YAML-файл ConfigMap, который сопоставляет VM templates с версиями Kubernetes. Примените этот YAML перед созданием шаблонов машин:

    apiVersion: v1
    data:
      corednsTag: 1.12.4-v4.2.3
      etcdTag: v3.5.21-251117
      kubernetesVersion: v1.33.6
      vmImageVersion: MicroOS-5.5-v4.2.0
    kind: ConfigMap
    metadata:
      labels:
        cpaas.io/dcs-vm-template: microos5.5-4.2.0
        cpaas.io/distribution-version: v4.2.0
        cpaas.io/kubernetes-version: v1.33
      name: 420-dcs-vm-template
      namespace: cpaas-system

    Важно: Значение метки cpaas.io/dcs-vm-template должно совпадать с именем VM template на платформе DCS.

    Создание шаблона машины

    Путь: Clusters → Virtual Machine → Machine Templates → Create Machine Template → Select Credential

    Поля формы:

    ПолеТипОбязательноОписание
    NametextYesУникальный идентификатор шаблона (1–63 символа, только строчные буквы, цифры и дефисы)
    TypedropdownYesControl Plane или Worker Node
    VM Template NamedropdownYesИз ConfigMap, показывает версию ОС и версию Kubernetes
    LocationdropdownNoРасположение на платформе DCS (центр обработки данных, стойка и т. д.)
    ResourcedropdownNoПул ресурсов или кластер платформы DCS
    Specs-YesПараметры CPU и памяти
    Specs.CPUnumberYesЯдра CPU (целое число)
    Specs.MemnumberYesРазмер памяти в MB (в списке отображается в GB)
    Disk-YesКонфигурация диска (см. ниже)
    IP PooldropdownYesСсылка на существующий IP Pool

    Конфигурация дисков:

    Конфигурация дисков зависит от типа шаблона.

    Обязательные диски для Control Plane:

    Точка монтированияРазмер по умолчанию (GB)Можно удалить
    System Volume(значение по умолчанию шаблона)No
    /var/lib/etcd10No
    /var/lib/kubelet100No
    /var/lib/containerd100No
    /var/cpaas40No

    Обязательные диски для Worker Node:

    Точка монтированияРазмер по умолчанию (GB)Можно удалить
    System Volume(значение по умолчанию шаблона)No
    /var/lib/kubelet100No
    /var/lib/containerd100No
    /var/cpaas40No

    Вы можете добавить дополнительные диски, но все обязательные диски, перечисленные выше, должны быть сохранены.

    Описание полей диска:

    ПолеТипОписание
    Mount PathtextПуть каталога для монтирования диска
    Disk Sizenumber (GB)Размер диска
    DatastoredropdownТип: ClusterName или Name, затем выберите из платформы DCS

    Совет по выбору VM Template:

    TIP

    Если несколько VM Template имеют одну и ту же версию Kubernetes, выбирайте шаблон с самой новой версией ОС, чтобы получить последние обновления безопасности и улучшения системы.

    Управление шаблонами машин

    Просмотр шаблонов: Перейдите в Clusters → Virtual Machine → Machine Templates, чтобы просмотреть все шаблоны с их VM Template Name, Resource, Location, Specs и IP Pool.

    Обновление шаблонов: Нажмите Update, чтобы изменить параметры. Обратите внимание, что поле Name нельзя изменить после создания.

    Удаление шаблонов: Нажмите Delete, чтобы удалить шаблон. Подтвердите удаление в диалоговом окне.

    Использование YAML

    Создайте ресурс DCSMachineTemplate:

    dcs-machinetemplate.yaml
    apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
    kind: DCSMachineTemplate
    metadata:
      name: <machine-template-name>
      namespace: cpaas-system
    spec:
      template:
        spec:
          vmTemplateName: <vm-template-name>
          location:
            type: folder
            name: <folder-name>
          resource: # Optional, if not specified, uses template defaults
            type: cluster # cluster | host
            name: <cluster-name>
          vmConfig:
            dvSwitchName: <dv-switch-name> # Optional
            portGroupName: <port-group-name> # Optional
            dcsMachineCpuSpec:
              quantity: <cpu-cores>
            dcsMachineMemorySpec: # MB
              quantity: <memory-mb>
            dcsMachineDiskSpec: # GB
            - quantity: 0
              datastoreClusterName: <datastore-cluster-name>
              systemVolume: true
            - quantity: 10
              datastoreClusterName: <datastore-cluster-name>
              path: /var/lib/etcd
              format: xfs
            - quantity: 100
              datastoreClusterName: <datastore-cluster-name>
              path: /var/lib/kubelet
              format: xfs
            - quantity: 100
              datastoreClusterName: <datastore-cluster-name>
              path: /var/lib/containerd
              format: xfs
            - quantity: 40
              datastoreClusterName: <datastore-cluster-name>
              path: /var/cpaas
              format: xfs
          ipHostPoolRef:
            name: <iphostname-pool-name>

    Описание параметров:

    ПараметрТипОписаниеОбязательно
    .spec.template.spec.vmTemplateNamestringИмя шаблона виртуальной машины DCSYes
    .spec.template.spec.locationobjectРасположение, в котором будет создана ВМ (если не указано, выбирается автоматически)No
    .spec.template.spec.location.typestringТип расположения создания ВМ (в настоящее время поддерживается только "folder")Yes*
    .spec.template.spec.location.namestringИмя папки создания ВМYes*
    .spec.template.spec.resourceobjectВыбор вычислительного ресурса для создания ВМ (если не указано, выбирается автоматически)No
    .spec.template.spec.resource.typestringТип вычислительного ресурса: cluster или hostYes*
    .spec.template.spec.resource.namestringИмя вычислительного ресурсаYes*
    .spec.template.spec.vmConfigobjectКонфигурация виртуальной машиныYes
    .spec.template.spec.vmConfig.dvSwitchNamestringИмя виртуального коммутатора (если не указано, используется значение по умолчанию шаблона)No
    .spec.template.spec.vmConfig.portGroupNamestringИмя port group (должна принадлежать указанному коммутатору, иначе используется шаблон)No
    .spec.template.spec.vmConfig.dcsMachineCpuSpec.quantityintПараметр CPU ВМ (ядра)Yes
    .spec.template.spec.vmConfig.dcsMachineMemorySpec.quantityintРазмер памяти ВМ в MBYes
    .spec.template.spec.vmConfig.dcsMachineDiskSpec[]objectКонфигурация дисков ВМYes
    .spec.template.spec.vmConfig.dcsMachineDiskSpec[].quantityintРазмер диска в GB (0 для системного диска использует размер шаблона)Yes
    .spec.template.spec.vmConfig.dcsMachineDiskSpec[].datastoreClusterNamestringИмя кластера datastore для дискаYes
    .spec.template.spec.vmConfig.dcsMachineDiskSpec[].systemVolumeboolЯвляется ли диск системным (true может быть только у одного диска)No
    .spec.template.spec.vmConfig.dcsMachineDiskSpec[].pathstringКаталог монтирования диска (если не указан, диск монтироваться не будет)No
    .spec.template.spec.vmConfig.dcsMachineDiskSpec[].formatstringФормат файловой системыNo
    .spec.template.spec.ipHostPoolRef.namestringСсылка на имя DCSIpHostnamePoolYes

    *Обязательно, если указано родительское поле

    WARNING

    Требования к хранилищу

    Кросс-хостовый доступ к datastore Кластеры datastore (datastoreClusterName) должны поддерживать кросс-хостовый доступ на всех физических машинах платформы DCS. Если datastore доступен только на отдельных хостах, создание ВМ завершится ошибкой, когда платформа DCS попытается разместить ВМ на другом хосте.

    Общее хранилище для Ignition Если ваше хранилище не поддерживает прямую загрузку файлов (это требуется для конфигураций Ignition), необходимо предоставить решение с общим хранилищем (например, NFS), поддерживающее монтирование с нескольких хостов.

    Правила конфигурации дисков Вы можете добавлять пользовательские диски, но обязательные системные и рабочие диски, показанные в примере (systemVolume, /var/lib/kubelet, /var/lib/containerd, /var/cpaas), должны быть сохранены.


    Связи между ресурсами

    Инфраструктурные ресурсы имеют следующие зависимости:

    Cloud Credential
    
    IP Pool
    
    Machine Template → references IP Pool
    
    Cluster Creation

    Повторное использование ресурсов:

    • Одни Cloud Credential можно использовать для нескольких кластеров
    • Можно создать несколько IP Pool для разных сетевых сегментов
    • Можно создать несколько Machine Template для разных типов узлов и спецификаций

    Следующие шаги

    После настройки инфраструктурных ресурсов: