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

    Обзор

    Перед тем как писать YAML для кластера Huawei Cloud Stack (HCS), сначала подготовьте все необходимые входные данные HCS. На этой странице перечислены значения, источники и ограничения, которые должны быть готовы до заполнения любого манифеста Secret, HCSMachineConfigPool, HCSMachineTemplate, KubeadmControlPlane или HCSCluster.

    Используйте эту страницу как контрольный список подготовки. После завершения перейдите к Создание кластеров в Huawei Cloud Stack и Управление узлами в Huawei Cloud Stack для рабочего процесса с манифестами.

    INFO

    Требование к Namespace

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

    Перед написанием YAML

    Подготовьте следующие входные данные, прежде чем создавать или редактировать какие-либо манифесты кластера:

    Входные данныеИспользуется вИсточникТребуется до YAMLПримечания
    Имя кластераCluster, KubeadmControlPlane, HCSCluster, шаблоны, пулыВаш план именования кластераДаИспользуйте одно и то же имя кластера последовательно во всех связанных ресурсах
    Версия Kubernetes и базовый уровень компонентовCluster, KubeadmControlPlaneОдобренный базовый уровень релиза; Матрица поддержки ОС — только для перечисленных в ней версий компонентовДаПодготовьте проверенную версию Kubernetes, репозиторий образа, репозиторий образа DNS и тег, тег образа etcd, версию Kube-OVN, Pod CIDR, Service CIDR и Kube-OVN join CIDR
    accessKey и secretKeySecret с учетными данными HCSHCS My Settings > Access KeysДаПеред применением Secret закодируйте эти значения в Base64
    projectIDSecret с учетными данными HCSHCS My Settings > Resource SpacesДаИспользуйте ID Resource Space, а не отображаемое имя
    externalGlobalDomainSecret с учетными данными HCSДомен доступа к платформе HCSДаИспользуйте домен платформы HCS, к которому должен обращаться провайдер
    regionSecret с учетными данными HCSАдминистратор HCSДаАдминистраторы арендатора не могут получить это значение из UI HCS
    imageNameHCSMachineTemplateИнвентарь образов HCSДаИспользуйте проверенное имя образа HCS для выбранного образа MicroOS
    flavorNameHCSMachineTemplateАдминистратор HCSДаИспользуйте значение API HCS, распознаваемое провайдером и сопоставленное с Flavor.Name, а не отображаемое имя в UI арендатора
    availabilityZoneHCSMachineTemplateАдминистратор HCSДаИспользуйте значение API HCS, распознаваемое провайдером и сопоставленное с ZoneName, а не отображаемое имя в UI арендатора
    Схема корневых и data volumeHCSMachineTemplateПлан хранения кластераДаЗаранее спланируйте размеры дисков и точки монтирования перед написанием шаблона. При необходимости включите /var/lib/etcd, /var/lib/kubelet, /var/lib/containerd и /var/cpaas
    Имя VPC и имя группы безопасностиHCSClusterИнвентарь сети HCSДаУбедитесь, что указанные VPC и группа безопасности уже существуют и доступны
    Инвентарь подсетей кластераHCSCluster, HCSMachineConfigPool, ELB control planeИнвентарь сети HCSДаПодготовьте имя подсети, ID подсети, метаданные подсети, связанные с ELB, CIDR, шлюз, значения DNS и планируемый диапазон свободных IP для каждой подсети, которую будет использовать кластер
    Имена хостов и статические IP-адреса control plane и workerHCSMachineConfigPoolПланирование подсетей HCSДа для рабочих процессов со статическими IPПодготовьте как минимум одну запись на каждую планируемую реплику
    vipAddress и vipSubnetNameHCSCluster.spec.controlPlaneLoadBalancerПлан адресов ELB HCSДаvipAddress должен принадлежать vipSubnetName
    elbVirsubnetL4Ips и elbVirsubnetL7IpsHCSCluster.spec.controlPlaneLoadBalancerПлан адресов ELB HCSДаКаждая запись L4 или L7 должна содержать ровно два IP-адреса
    vipDomainNameHCSCluster.spec.controlPlaneLoadBalancerЧастные зоны HCS Cloud DNSРекомендуетсяНастройте домен так, чтобы он уже разрешался в vipAddress
    controlPlaneEndpointCluster.status / производный endpoint кластераУправляется контроллеромНетНе подготавливайте и не указывайте это поле в манифестах создания; контроллер заполнит его после готовности ELB

    Входные данные для Secret с учетными данными

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

    Ключ SecretЗначениеГде получить
    accessKeyID ключа доступа HCSHCS My Settings > Access Keys
    secretKeyСекретный ключ доступа HCSHCS My Settings > Access Keys
    projectIDID Resource SpaceHCS My Settings > Resource Spaces
    externalGlobalDomainДомен доступа к платформе HCSДомен платформы HCS, предоставленный для API-доступа
    regionЗначение API региона HCS, используемое провайдеромАдминистратор HCS

    Примечание: Администраторы арендатора не могут получить region из UI HCS. Получите точное значение, распознаваемое провайдером, у администратора HCS до кодирования Secret.

    Вычисляемые значения

    Подготовьте VM image, flavor, availability zone и схему дисков перед написанием HCSMachineTemplate.

    Входные данныеРекомендации
    imageNameИспользуйте проверенное имя образа HCS для образа MicroOS, который вы хотите развернуть
    flavorNameИспользуйте значение API HCS, распознаваемое провайдером и сопоставленное с Flavor.Name. Не используйте отображаемое имя в UI арендатора
    availabilityZoneИспользуйте значение API HCS, распознаваемое провайдером и сопоставленное с ZoneName. Не используйте отображаемое имя в UI арендатора
    Корневые и data volumesЗаранее спланируйте системные диски и диски данных. Шаблоны control plane обычно требуют /var/lib/etcd, /var/lib/kubelet, /var/lib/containerd и /var/cpaas. Шаблоны worker обычно требуют /var/lib/kubelet, /var/lib/containerd и /var/cpaas

    Примечание: Администраторы арендатора не могут получить значения flavorName и availabilityZone, распознаваемые провайдером, из UI HCS. Получите точные значения API у администратора HCS перед написанием манифеста.

    Базовый уровень версии и компонентов

    Используйте Матрицу поддержки ОС только для тех версий компонентов, которые она явно перечисляет, таких как Kubernetes, coredns, etcd и версии pause для поддерживаемых образов MicroOS.

    Матрица поддержки ОС не является полным источником для всех значений манифеста HCS. Перед написанием YAML также получите одобренный базовый уровень релиза для таких значений, как репозиторий образов контейнеров, репозиторий образов DNS, версия Kube-OVN, Kube-OVN join CIDR, Pod CIDR и Service CIDR. Если ваш релиз еще не публикует полный источник базового уровня, используйте значения, проверенные для вашей среды платформой или владельцем релиза.

    Инвентарь сети

    Подготовьте полный сетевой инвентарь кластера перед тем, как писать ресурсы HCSCluster или HCSMachineConfigPool.

    Ваш сетевой план должен включать:

    • Имя целевого VPC
    • Имя целевой группы безопасности
    • Имя каждой подсети, которую будет использовать кластер
    • ID подсети и метаданные подсети, связанные с ELB, для каждой подсети
    • CIDR каждой подсети
    • Значение gateway и DNS для каждой подсети
    • Планируемые диапазоны свободных IP-адресов для узлов control plane, worker, VIP ELB и виртуальных IP подсетей ELB L4/L7

    Если один кластер использует несколько подсетей, эти подсети должны принадлежать одной и той же VPC и должны позволять узлам кластера связываться друг с другом.

    Важно: HCSCluster.spec.network.subnets — это инвентарь подсетей кластера. Каждое subnetName, на которое ссылаются HCSMachineConfigPool, vipSubnetName, elbVirsubnetL4Ips[].subnetName и elbVirsubnetL7Ips[].subnetName, должно уже существовать в этом списке.

    Для первоначального сценария создания кластера контроллер может разрешать существующие подсети по имени до того, как кластер станет Ready. Для существующего Ready-кластера не добавляйте только имя подсети. Добавляйте полный объект подсети, включая как минимум name, id и, если подсеть используется ELB control plane, neutronSubnetId. Сохраняйте в инвентаре также cidr, gatewayIp, primaryDNS и secondaryDNS, чтобы список подсетей кластера оставался полным.

    Ограничения Multi-NIC

    Несколько NIC объявляются в HCSMachineConfigPool.spec.configs[].networks[]. Каждый элемент networks[] выбирает только подсеть и статический IP-адрес для одной NIC.

    Текущий провайдер не позволяет задавать:

    • Роль или назначение каждой NIC, например трафик управления, сервисный или storage
    • Gateway по умолчанию для конкретной NIC
    • Статические маршруты или метрики маршрутов
    • Параметры DNS для каждой NIC

    Рассматривайте текущую возможность Multi-NIC как подключение NIC плюс выбор подсети и статического IP-адреса.

    План адресов ELB control plane

    Провайдер HCS автоматически создает Elastic Load Balance (ELB) для control plane. Спланируйте входные данные ELB перед тем, как писать HCSCluster.

    В этой документации используется рабочий процесс ELB с фиксированным адресом. Подготовьте все адреса, связанные с ELB, перед написанием HCSCluster:

    • vipSubnetName
    • vipAddress
    • elbVirsubnetL4Ips с ровно двумя IP-адресами L4
    • elbVirsubnetL7Ips с ровно двумя IP-адресами L7
    • Необязательный vipDomainName

    Если вы задаете vipDomainName, настройте HCS Cloud DNS Private Zones так, чтобы домен уже разрешался в vipAddress.

    Операционные ограничения

    • Провайдер создает ELB и включает Hybrid Load Balancing, чтобы узлы кластера могли обращаться к API server через адрес ELB.
    • Не отключайте Hybrid Load Balancing на ELB HCS после создания кластера.
    • Не указывайте spec.controlPlaneEndpoint в манифесте создания. Контроллер заполнит это поле после готовности ELB.

    План пула статических IP-адресов

    Эта страница сосредоточена на рабочем процессе со статическими IP-адресами.

    Подготовьте следующее перед созданием ресурсов HCSMachineConfigPool:

    • Имена хостов и статические IP-адреса control plane
    • Имена хостов и статические IP-адреса worker, если worker создаются
    • Достаточное количество записей для покрытия начального количества реплик

    Для control plane со статическими IP-адресами и как минимум тремя репликами рекомендуемый путь обновления использует KubeadmControlPlane.spec.rolloutStrategy.rollingUpdate.maxSurge: 0. Такой подход с уменьшением, а затем увеличением количества обычно не требует дополнительных IP-адресов control plane. Если вы планируете топологию только для создания с одним control plane (replicas: 1), не копируйте этот параметр rollout в манифест создания. Подготавливайте дополнительные слоты для хостнеймов и IP только тогда, когда планируете увеличить число реплик control plane или задать maxSurge больше 0.

    Сопоставление значений с YAML

    Используйте следующее сопоставление после завершения контрольного списка подготовки:

    Подготовленные входные данныеПоля YAML
    accessKey, secretKey, projectID, externalGlobalDomain, regionSecret.data.*
    imageName, flavorName, availabilityZone, схема дисковHCSMachineTemplate.spec.template.spec.*
    Имена хостов и статические IP-адреса control plane и workerHCSMachineConfigPool.spec.configs[]
    Имя VPC, инвентарь подсетей, имя группы безопасностиHCSCluster.spec.network.*
    vipAddress, vipSubnetName, vipDomainName, elbVirsubnetL4Ips, elbVirsubnetL7IpsHCSCluster.spec.controlPlaneLoadBalancer.*
    Версия Kubernetes и базовый уровень компонентовKubeadmControlPlane.spec.version, Cluster.spec.clusterNetwork.*, аннотации кластера и связанные параметры bootstrap

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

    После завершения контрольного списка подготовки: