Стадия жизненного цикла модуля: General Availability
Ниже представлен пример конфигурации cloud-провайдера Yandex Cloud.
Пример конфигурации модуля
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
name: cloud-provider-yandex
spec:
version: 1
enabled: true
settings:
additionalExternalNetworkIDs:
- enp6t4snovl2ko4p15em
Использование зоны ru-central1-f
Чтобы размещать узлы в зоне ru-central1-f, явно укажите её в параметре zones вместо одной из зон по умолчанию. В zones можно указать не более четырёх зон.
- Выберите одну из зон по умолчанию, которую заменит
ru-central1-f. -
Укажите
ru-central1-fи остальные выбранные зоны в параметреzonesресурса YandexClusterConfiguration. Пример:apiVersion: deckhouse.io/v1 kind: YandexClusterConfiguration layout: Standard nodeNetworkCIDR: 10.241.32.0/20 sshPublicKey: ssh-rsa AAAAB3Nza... zones: - ru-central1-a - ru-central1-b - ru-central1-d - ru-central1-fВ примере исключена зона
ru-central1-e.Deckhouse Platform создаёт подсеть в
ru-central1-f, используя частьnodeNetworkCIDR, закреплённую за исключённой зоной. В работающем кластере с зонами по умолчанию заменаru-central1-eнаru-central1-fудаляет подсеть вru-central1-eи создаёт новую вru-central1-f. Подсети остальных выбранных зон сохраняются.
Использование существующих подсетей
Если задан параметр existingZoneToSubnetIDMap, Deckhouse Platform использует указанные в параметре подсети, не создавая и не удаляя их. Ограничение в четыре зоны на existingZoneToSubnetIDMap не распространяется. Если zones не задан, узлы размещаются во всех зонах existingZoneToSubnetIDMap, включая зоны вне набора по умолчанию.
Изменение зон в работающем кластере
Чтобы добавить ru-central1-f, обновите параметр zones.
При добавлении ru-central1-f Deckhouse Platform удаляет подсети исключённых зон по умолчанию. При замене [ru-central1-a, ru-central1-b] на [ru-central1-a, ru-central1-b, ru-central1-f] удаляются подсети в ru-central1-d и ru-central1-e. В ru-central1-f создаётся подсеть с диапазоном адресов одной из удалённых подсетей.
При изменении списка зон возможен конфликт диапазонов. Он возникает, если подсеть добавляемой зоны по умолчанию должна использовать диапазон подсети ru-central1-f. Deckhouse Platform отклоняет такое изменение с ошибкой. Чтобы устранить конфликт, примените изменения в два этапа:
- Удалите
ru-central1-fизzonesи примените изменения. Deckhouse Platform удалит подсеть вru-central1-f. - Укажите итоговый список зон с
ru-central1-fи повторно примените изменения.
Например, такой конфликт возможен при замене ru-central1-d на ru-central1-e с сохранением ru-central1-f в списке.
Если конфликта нет, список зон можно изменить напрямую. Подсеть ru-central1-f сохраняет свой диапазон адресов.
Если в схеме WithNATInstance подсети NAT-инстанса не заданы явно, его размещение определяется по списку zones:
| Список зон | Размещение NAT-инстанса |
|---|---|
| Содержит только зоны по умолчанию | NAT-инстанс остаётся в ru-central1-a |
Содержит зону вне набора по умолчанию, а ru-central1-a исключена |
NAT-инстанс пересоздаётся в первой по алфавиту зоне из списка zones |
Исходящий трафик кластера прерывается на время пересоздания NAT-инстанса.
Пример custom resource YandexInstanceClass
apiVersion: deckhouse.io/v1
kind: YandexInstanceClass
metadata:
name: test
spec:
cores: 4
memory: 8192
LoadBalancer
Аннотации объекта Service
В кластере заданы значения по умолчанию для размещения ресурсов балансировщиков (сеть для целевой группы и подсеть для Listener). Эти значения выставляются автоматически во время развёртывания кластера и могут быть переопределены аннотациями на уровне конкретного Service.
Поведение по умолчанию (внешний или внутренний LB) зависит от конфигурации кластера. Для явного выбора типа используйте аннотацию
yandex.cpi.flant.com/loadbalancer-external.
В Yandex Cloud Controller Manager поддерживаются следующие аннотации:
yandex.cpi.flant.com/target-group-network-id— указывает NetworkID, в котором будет создана целевая группа для данного Service. Переопределяет соответствующее значение по умолчанию.yandex.cpi.flant.com/listener-subnet-id— задаёт SubnetID для Listener’ов создаваемого LB для данного Service. Переопределяет соответствующее значение по умолчанию.yandex.cpi.flant.com/listener-address-ipv4— задаёт предопределённый IPv4-адрес для Listener’ов (поддерживаются и внутренние, и внешние LB).yandex.cpi.flant.com/loadbalancer-external— включает создание внешнего (external) LB для данного Service (используйте, если нужно явно создать внешний балансировщик). Переопределяет поведение по умолчанию.yandex.cpi.flant.com/target-group-name-prefix— задаёт префикс имени целевой группы, которую использует LoadBalancer. Аннотация на Service определяет целевую группу, но не выбирает узлы. Чтобы включить узлы в целевую группу, задайте аннотацию с тем же значением в параметреspec.nodeTemplate.annotationsресурса NodeGroup. Yandex Cloud Controller Manager включает в целевую группу все подходящие узлы с таким значением аннотации независимо от их NodeGroup. Имя целевой группы формируется как<ANNOTATION_VALUE><YANDEX_CLOUD_CLUSTER_NAME><NETWORK_ID>. Подробнее — в разделе «Использование отдельной целевой группы для NodeGroup».
Если для control plane или master-узлов создаются отдельные целевые группы, добавьте на master-узлы лейбл node.kubernetes.io/exclude-from-external-load-balancers: "". Это предотвратит попытки контроллера автоматически добавлять master-узлы в новые целевые группы для балансировщиков.
Если вы создаёте собственный балансировщик для master-узлов и хотите, чтобы YCC также мог размещать свои балансировщики на master-узлах, заранее создайте целевую группу с именем по маске ${CLUSTER-NAME}${VPC.ID}.
Проверки состояния целевой группы
Параметры healthcheck’ов (для создаваемых целевых групп балансировщика):
yandex.cpi.flant.com/healthcheck-interval-seconds— как часто запускать проверку, в секундах (по умолчанию 2).yandex.cpi.flant.com/healthcheck-timeout-seconds— сколько ждать ответа от эндпоинта, в секундах. Если за это время ответ не получен, проверка считается неуспешной (по умолчанию 1).yandex.cpi.flant.com/healthcheck-unhealthy-threshold— сколько подряд неуспешных проверок нужно, чтобы пометить эндпоинт как неработоспособный (unhealthy) и исключить его из балансировки (по умолчанию 2).yandex.cpi.flant.com/healthcheck-healthy-threshold— сколько подряд успешных проверок нужно, чтобы вернуть эндпоинт в статус работоспособный (healthy) и снова включить его в балансировку (по умолчанию 2).