Стадия жизненного цикла модуля: Experimental
HuaweiCloudClusterConfiguration
Version: deckhouse.io/v1
Описывает конфигурацию облачного кластера в Huawei Cloud.
Используется облачным провайдером, если управляющий слой кластера размещён в облаке.
Выполните следующую команду, чтобы изменить конфигурацию в работающем кластере:
d8 system edit provider-cluster-configuration
Пример:
apiVersion: deckhouse.io/v1
kind: HuaweiCloudClusterConfiguration
layout: Standard
sshPublicKey: "<SSH_PUBLIC_KEY>"
zones:
- eu-3a
standard:
externalNetworkName: external-network
provider:
domainName: "<DOMAIN_NAME>"
region: eu-3
accessKey: "<USERNAME>"
secretKey: "<PASSWORD>"
masterNodeGroup:
replicas: 1
instanceClass:
flavorName: m1.large
rootDiskSize: 50
imageName: debian-11-genericcloud-amd64-20220911-1135
volumeTypeMap:
eu-1a: fast-eu-1a
eu-1b: fast-eu-1b
nodeGroups:
- name: front
replicas: 2
instanceClass:
flavorName: m1.large
imageName: debian-11-genericcloud-amd64-20220911-1135
rootDiskSize: 50
volumeTypeMap:
eu-1a: fast-eu-1a
eu-1b: fast-eu-1b
- строкаapiVersion
Обязательный параметр
Допустимые значения:
deckhouse.io/v1 - строкаkind
Обязательный параметр
Допустимые значения:
HuaweiCloudClusterConfiguration - строкаlayout
Обязательный параметр
Название схемы размещения.
Возможные схемы размещения провайдера описаны на странице Схемы размещения.
- masterNodeGroup
Обязательный параметр
Спецификация для описания NodeGroup master-узлов.
Чтобы изменения вступили в силу, после изменения параметров секции
masterNodeGroupвыполните командуdhctl converge.- объектmasterNodeGroup.instanceClass
Обязательный параметр
Частичное содержимое полей HuaweiCloudInstanceClass.
- целочисленныйmasterNodeGroup.instanceClass.etcdDiskSizeGb
Размер диска для etcd. Значение указывается в гигабайтах.
По умолчанию:
10Пример:
etcdDiskSizeGb: 10 - строкаmasterNodeGroup.instanceClass.flavorName
Обязательный параметр
Тип заказываемых виртуальных машин.
- строкаmasterNodeGroup.instanceClass.imageName
Обязательный параметр
Имя образа виртуальной машины, который будет использоваться для инстанса.
Список поддерживаемых Deckhouse ОС и их версий можно найти на странице Поддерживаемые версии Kubernetes и ОС (учитывайте используемую версию Deckhouse).
- целочисленныйmasterNodeGroup.instanceClass.rootDiskSize
Размер root-диска. Значение указывается в гигабайтах.
Параметр также влияет на тип диска.
По умолчанию:
50Пример:
rootDiskSize: 50
- целочисленныйmasterNodeGroup.replicas
Обязательный параметр
Количество создаваемых master-узлов. Для обеспечения кворума важно, чтобы оно было нечетным.
Допустимые значения:
1 <= X - объектmasterNodeGroup.serverGroup
ServerGroup объединяет инстансы в группу. Инстансы в такой группе будут размещены на одном гипервизоре (affinity) или на разных гипервизорах (anti-affinity). Это позволяет повысить отказоустойчивость кластера.
- строкаmasterNodeGroup.serverGroup.policy
Обязательный параметр
Политика распределения инстансов:
AntiAffinity— размещает инстансы на разных гипервизорах. Данной политикой управляет Deckhouse.
Допустимые значения:
AntiAffinity
- объектmasterNodeGroup.volumeTypeMap
Обязательный параметр
Словарь, сопоставляющий зонам доступности типы дисков для worker-узлов группы.
Формат записи:
<ЗОНА ДОСТУПНОСТИ>: <ТИП ДИСКА>(см. пример).Если указан параметр
rootDiskSize, тот же тип диска используется для загрузочного диска виртуальной машины.Рекомендуется использовать самые быстрые типы дисков, доступные у провайдера.
Если свойство
volumeTypeMapне задано для группы узлов, для этой группы в качестве значения по умолчанию используетсяvolumeTypeMapизmasterNodeGroup.Если значение
replicasпревышает число записей в словаре, назначение типов выполняется по кругу (с начала словаря). Например, приreplicas: 5для группыfrontи словаре, где первым указанfast-eu-1a, а вторым —fast-eu-1b, узлы front-0, front-2, front-4 получатfast-eu-1a, а front-1 и front-3 —fast-eu-1b.Пример:
volumeTypeMap: eu-1a: fast-eu-1a eu-1b: fast-eu-1b
- массив объектовnodeGroups
Массив дополнительных NodeGroup для создания статических узлов (например, для выделенных frontend-узлов или шлюзов).
- объектnodeGroups.instanceClass
Обязательный параметр
Частичное содержимое полей HuaweiCloudInstanceClass.
- целочисленныйnodeGroups.instanceClass.etcdDiskSizeGb
Размер диска для etcd. Значение указывается в гигабайтах.
По умолчанию:
10Пример:
etcdDiskSizeGb: 10 - строкаnodeGroups.instanceClass.flavorName
Обязательный параметр
Тип заказываемых виртуальных машин.
- строкаnodeGroups.instanceClass.imageName
Обязательный параметр
Имя образа виртуальной машины, который будет использоваться для инстанса.
Список поддерживаемых Deckhouse ОС и их версий можно найти на странице Поддерживаемые версии Kubernetes и ОС (учитывайте используемую версию Deckhouse).
- целочисленныйnodeGroups.instanceClass.rootDiskSize
Размер root-диска. Значение указывается в гигабайтах.
Параметр также влияет на тип диска.
По умолчанию:
50Пример:
rootDiskSize: 50
- строкаnodeGroups.name
Обязательный параметр
Имя NodeGroup, которое будет использоваться для генерации имен узлов.
- nodeGroups.nodeTemplate
Настройки Node-объектов в Kubernetes, которые будут добавлены после регистрации узлов.
- объектnodeGroups.nodeTemplate.annotations
Аналогично стандартному полю
metadata.annotations.Пример:
annotations: ai.fleet.com/discombobulate: 'true' - объектnodeGroups.nodeTemplate.labels
Список лейблов, которые будут прикреплены ко всем ресурсам кластера (если они это поддерживают).
Аналогично стандартному полю
metadata.labels.Если поменять лейблы в рабочем кластере, после применения изменений необходимо пересоздать все машины.
Пример:
labels: environment: production app: warp-drive-ai - массив объектовnodeGroups.nodeTemplate.taints
Аналогично полю
.spec.taintsиз объекта Node.Доступны только поля
effect,key,values.Пример:
taints: - effect: NoExecute key: ship-class value: frigate- строкаnodeGroups.nodeTemplate.taints.effect
Допустимые значения:
NoSchedule,PreferNoSchedule,NoExecute - строкаnodeGroups.nodeTemplate.taints.key
- строкаnodeGroups.nodeTemplate.taints.value
- целочисленныйnodeGroups.replicas
Обязательный параметр
Количество узлов.
- объектnodeGroups.volumeTypeMap
Словарь типов дисков для рабочих узлов группы.
Формат элементов словаря:
<ЗОНА ДОСТУПНОСТИ>: <ТИП ДИСКА>(см. пример).Если указан параметр
rootDiskSize, этот же тип диска будет использован в качестве загрузочного диска виртуальной машины.Всегда рекомендуется использовать самые быстрые диски, предоставляемые провайдером.
Если свойство
volumeTypeMapне указано для группы узлов, будет использовано значениеvolumeTypeMapизmasterNodeGroupв качестве запасного варианта для этой группы узлов.Если значение, указанное в
replicas, превышает количество элементов в словаре, узлы, чьи номера превышают длину словаря, получают значения, начиная с начала словаря. Если для словаря из примера для группы front указаноreplicas: 5, с типом дискаfast-eu-1aбудут front-0, front-2 и front-4, а с типом дискаfast-eu-1bбудут front-1 и front-3.Пример:
volumeTypeMap: eu-1a: fast-eu-1a eu-1b: fast-eu-1b
- строкаprovider.accessKey
Обязательный параметр
Ключ доступа к облаку Huawei Cloud.
- строкаprovider.authURL
URL-адрес аутентификации личности.
- строкаprovider.cloud
Обязательный параметр
Конечная точка поставщика облачных услуг.
- строкаprovider.domainName
Имя учетной записи IAM для охвата.
- строкаprovider.enterpriseProjectID
Идентификатор подпроекта.
- булевыйprovider.insecure
Доверять самоподписанным SSL-сертификатам.
- строкаprovider.projectID
Идентификатор проекта.
- строкаprovider.region
Обязательный параметр
Регион Huawei Cloud, в котором будет развернут кластер.
- строкаprovider.secretKey
Обязательный параметр
Секретный ключ облака Huawei Cloud.
- строкаsshPublicKey
Обязательный параметр
Публичный ключ для доступа на узлы.
- булевыйstandard.enableEIP
Включите Elastic IP для мастер узлов.
Шаблон:
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$ - строкаstandard.internalNetworkCIDR
Обязательный параметр
Адресация для внутренней сети узлов кластера.
Шаблон:
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$ - массив строкstandard.internalNetworkDNSServers
Список адресов рекурсивных DNS внутренней сети.
- строкаЭлемент массива
Шаблон:
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$
- булевыйstandard.internalNetworkSecurity
Флаг, который определяет необходимость настройки SecurityGroups на портах внутренней сети.
По умолчанию:
true
- строкаvpcPeering.internalNetworkCIDR
Обязательный параметр
Адресация для внутренней сети узлов кластера.
Шаблон:
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$ - массив строкvpcPeering.internalNetworkDNSServers
Список адресов рекурсивных DNS внутренней сети узлов кластера.
- строкаЭлемент массива
Шаблон:
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$
- булевыйvpcPeering.internalNetworkSecurity
Флаг, который определяет необходимость настройки SecurityGroups на портах внутренней сети.
По умолчанию:
true - строкаvpcPeering.subnet
Имя подсети в сети VPC.
- массив строкzones
Необязательный параметр.
Глобальное ограничение набора зон, с которыми работает данный облачный провайдер.