Облачная платформаAdvanced

Настройка расширенных функций балансировки нагрузки с использованием аннотаций

Язык статьи: Русский
Показать оригинал
Страница переведена автоматически и может содержать неточности. Рекомендуем сверяться с английской версией.

Вы можете добавить аннотации к файлу YAML, чтобы использовать некоторые расширенные функции CCE. Этот раздел описывает доступные аннотации при создании службы типа LoadBalancer.

Индекс

Связь с ELB

Таблица 1 Аннотации для связи с ELB

Параметр

Тип

Описание

Поддерживаемая версия кластера

kubernetes.io/elb.class

Строка

Выберите подходящий тип балансировщика нагрузки. Этот параметр нельзя изменить после создания ресурса.

Опции:

  • union: общий балансировщик нагрузки
  • performance: выделенный балансировщик нагрузки, который можно использовать только в кластерах версии v1.17 и выше.

Значение по умолчанию является union.

v1.9 или более поздняя версия

kubernetes.io/elb.id

Строка

Обязательный при связывании с существующим балансировщиком нагрузки. Этот параметр нельзя изменить после создания ресурса.

Идентификатор балансировщика нагрузки.

Как получить:

Войдите в консоль ELB и щелкните имя балансировщика нагрузки. На вкладке Краткие сведения страницы подробностей балансировщика нагрузки найдите поле ID и скопируйте его.

Примечание:

Система предпочтительно подключается к балансировщику нагрузки на основе поля kubernetes.io/elb.id. Если это поле не указано, используется поле spec.loadBalancerIP (необязательно и доступно только в версиях 1.23 и ранее).

Не используйте поле spec.loadBalancerIP для подключения к балансировщику нагрузки. Это поле будет отброшено Kubernetes. Для получения дополнительной информации см. Устаревшие элементы.

v1.9 или более поздняя версия

kubernetes.io/elb.autocreate

Обязателен при автоматическом создании балансировщиков нагрузки. Этот параметр невозможно изменить после создания ресурса.

ВНИМАНИЕ:

kubernetes.io/elb.id и kubernetes.io/elb.autocreate не могут быть указаны одновременно.

Если оба эти аннотации указаны в службе, то CCE использует существующий балансировщик нагрузки вместо автоматического создания нового. При удалении этой службы существующий балансировщик нагрузки считается автоматически созданным. Если с балансировщиком нагрузки больше не связаны другие ресурсы, он также будет удалён.

Пример:

  • Автоматически созданный выделенный балансировщик нагрузки с привязанным EIP:

    '{"type":"public","bandwidth_name":"cce-bandwidth-1741230802502","bandwidth_chargemode":"bandwidth","bandwidth_size":5,"bandwidth_sharetype":"PER","eip_type":"5_bgp","available_zone":["*****"],"elb_virsubnet_ids":["*****"],"l7_flavor_name":"","l4_flavor_name":"L4_flavor.elb.pro.max","vip_subnet_cidr_id":"*****"}'

  • Автоматически созданный выделенный балансировщик нагрузки без привязанного EIP:

    '{"type":"inner","available_zone":["*****"],"elb_virsubnet_ids":["*****"],"l7_flavor_name":"","l4_flavor_name":"L4_flavor.elb.pro.max","vip_subnet_cidr_id":"*****"}'

  • Автоматически созданный общий балансировщик нагрузки с привязанным EIP:

    '{"type":"public","bandwidth_name":"cce-bandwidth-1551163379627","bandwidth_chargemode":"bandwidth","bandwidth_size":5,"bandwidth_sharetype":"PER","eip_type":"5_bgp","name":"james"}'

  • Автоматически созданный общий балансировщик нагрузки без привязанного EIP:

    {"type":"inner","name":"A-location-d-test"}

v1.9 или более поздняя версия

kubernetes.io/elb.enterpriseID

Строка

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

Данный параметр доступен в кластерах версии v1.15 и выше. В кластерах версий ниже v1.15 балансировщики нагрузки создаются в проекте по умолчанию.

Этот параметр указывает идентификатор проекта предприятия, в котором будет создан балансировщик нагрузки ELB.

Если этот параметр не указан или установлен как 0, ресурсы будут привязаны к проекту предприятия по умолчанию.

Как получить:

Войдите в консоль EPS, щелкните имя целевого проекта предприятия. На странице сведений о проекте предприятия найдите поле ID и скопируйте ID.

v1.15 или выше

kubernetes.io/elb.subnet-id

String

Необязательно при автоматическом создании балансировщиков нагрузки.

Идентификатор подсети, где расположен кластер. Значение может содержать от 1 до 100 символов.

  • Обязательный параметр при автоматической генерации кластера версии v1.11.7-r0 или более ранней.
  • Необязательный параметр для версий кластеров позже v1.11.7-r0.

Обязателен для кластеров версии ранее v1.11.7-r0

Отсутствует в версиях кластеров после v1.11.7-r0

kubernetes.io/elb.lb-algorithm

String

Задает алгоритм балансировки нагрузки группы серверов бэкенда. Значение по умолчанию – ROUND_ROBIN.

Варианты:

  • ROUND_ROBIN: взвешенный круговой алгоритм
  • LEAST_CONNECTIONS: алгоритм наименьших соединений с учетом веса
  • SOURCE_IP: алгоритм хеширования источника IP-адреса
Примечание:

Если этот параметр установлен как SOURCE_IP, то настройка весового коэффициента (weight поле) серверов бэкенда, связанных с группой серверов бэкенда, становится недействительной, а сессия с устойчивым соединением не может быть включена.

v1.9 или выше

Ниже показано, как использовать указанные аннотации:

  • Подключение существующего балансировщика нагрузки. Подробности см. в разделе Создание службы с использованием kubectl (использование существующего балансировщика нагрузки).
    apiVersion: v1
    kind: Service
    metadata:
    name: nginx
    annotations:
    kubernetes.io/elb.id: <your_elb_id>kubernetes.io/elb.id: <your_elb_id> # Идентификатор балансировщика нагрузки. Замените его реальным значением.
    kubernetes.io/elb.class: performancekubernetes.io/elb.class: performance # Тип балансировщика нагрузки
    kubernetes.io/elb.lb-algorithm: ROUND_ROBIN # Алгоритм балансировщика нагрузки
    spec:
    selector:
    app: nginx
    ports:
    - name: service0
    port: 80
    protocol: TCP
    targetPort: 80
    type: LoadBalancer
  • Автоматическое создание балансировщика нагрузки. Подробнее см. раздел Создание службы с использованием kubectl (автоматическое создание балансировщика нагрузки).

    Совместный балансировщик нагрузки:

    apiVersion: v1
    kind: Service
    metadata:
    annotations:
    kubernetes.io/elb.class: unionkubernetes.io/elb.class: union
    kubernetes.io/elb.autocreate:kubernetes.io/elb.autocreate: '{
    "type": "public",
    "bandwidth_name": "cce-bandwidth-1551163379627",
    "bandwidth_chargemode": "bandwidth",
    "bandwidth_size": 5,
    "bandwidth_sharetype": "PER",
    "eip_type": "5_bgp"
    }'
    kubernetes.io/elb.enterpriseID: '0' # ID проекта предприятия, которому принадлежит балансировщик нагрузки
    kubernetes.io/elb.lb-algorithm: ROUND_ROBIN # Алгоритм балансировщика нагрузки
    labels:
    app: nginx
    name: nginx
    spec:
    ports:
    - name: service0
    port: 80
    protocol: TCP
    targetPort: 80
    selector:
    app: nginx
    type: LoadBalancer

    Выделенный балансировщик нагрузки:

    apiVersion: v1
    kind: Service
    metadata:
    name: nginx
    labels:
    app: nginx
    namespace: default
    annotations:
    kubernetes.io/elb.class: performancekubernetes.io/elb.class: performance
    kubernetes.io/elb.autocreatekubernetes.io/elb.autocreate: '{
    "type": "public",
    "bandwidth_name": "cce-bandwidth-1626694478577",
    "bandwidth_chargemode": "bandwidth",
    "bandwidth_size": 5,
    "bandwidth_sharetype": "PER",
    "eip_type": "5_bgp",
    "available_zone": ["available_zone": [
    "" ""
    ] ],
    "l4_flavor_name": "L4_flavor.elb.s1.small""l4_flavor_name": "L4_flavor.elb.s1.small"
    }'
    kubernetes.io/elb.enterpriseID: '0' # ID проекта предприятия, которому принадлежит балансировщик нагрузки
    kubernetes.io/elb.lb-algorithm: ROUND_ROBIN # Алгоритм балансировщика нагрузки
    spec:
    selector:
    app: nginx
    ports:
    - name: cce-service-0
    targetPort: 80
    nodePort: 0
    port: 80
    protocol: TCP
    type: LoadBalancer

Сессия с устойчивым соединением

Таблица 2 Аннотации для сессии с привязкой к клиенту

Параметр

Тип

Описание

Поддерживаемая версия кластера

kubernetes.io/elb.session-affinity-mode

Строка

Сессия с привязкой к источнику IP-адреса означает, что запросы доступа от одного и того же адреса передаются одному и тому же серверу бэкенда.

  • Чтобы отключить сессию с привязкой к клиенту, оставьте этот параметр незаполненным.
  • Для включения сессии с привязкой добавьте этот параметр и установите его равным SOURCE_IP, указывая, что сессия основана на адресе источника.
ПРИМЕЧАНИЕ:

Когда kubernetes.io/elb.lb-algorithm установлено как SOURCE_IP (хэш-сумма IP-адреса источника), включение сессии с привязкой невозможно.

v1.9 или новее

kubernetes.io/elb.session-affinity-option

Время ожидания сессии с привязкой.

v1.9 или новее

Ниже показано, как использовать указанные выше аннотации:

apiVersion: v1
kind: Service
metadata:
name: nginx
annotations:
kubernetes.io/elb.id: <your_elb_id> # Идентификатор балансировщика нагрузки. Замените его реальным значением.
kubernetes.io/elb.class: union # Тип балансировщика нагрузки
kubernetes.io/elb.session-affinity-mode: SOURCE_IPkubernetes.io/elb.session-affinity-mode: SOURCE_IP # Тип сессии с привязкой – адрес источника.
kubernetes.io/elb.session-affinity-option: '{"persistence_timeout": "30"}'kubernetes.io/elb.session-affinity-option: '{"persistence_timeout": "30"}' # Продолжительность привязки, измеряется в минутах
spec:
selector:
app: nginx
ports:
- name: service0
port: 80
protocol: TCP
targetPort: 80
type: LoadBalancer

Проверка работоспособности

Таблица 3 Аннотации для проверки работоспособности

Параметр

Тип

Описание

Поддерживаемая версия кластера

kubernetes.io/elb.health-check-flag

Строка

Нужно ли включать проверку работоспособности ELB.

  • Включение проверки работоспособности: Оставьте этот параметр пустым или установите его в on.
  • Отключение проверки работоспособности: Установите этот параметр в off.

Если этот параметр установлен в on, вы должны указать kubernetes.io/elb.health-check-option или kubernetes.io/elb.health-check-options.

v1.9 или новее

kubernetes.io/elb.health-check-option

Элементы конфигурации проверки работоспособности ELB.

v1.9 или новее

kubernetes.io/elb.health-check-options

Элементы конфигурации проверки работоспособности ELB. Каждый порт службы LoadBalancer может быть настроен отдельно, а также можно настроить только некоторые порты.

ПРИМЕЧАНИЕ:

Можно настроить либо kubernetes.io/elb.health-check-option либо kubernetes.io/elb.health-check-options.

v1.19.16-r5 или новее

v1.21.8-r0 или новее

v1.23.6-r0 или новее

v1.25.2-r0 или новее

  • Ниже показано, как использовать kubernetes.io/elb.health-check-option:
    apiVersion: v1
    kind: Service
    metadata:
    name: nginx
    annotations:
    kubernetes.io/elb.id: <your_elb_id> # Идентификатор балансировщика нагрузки. Замените его реальным значением.
    kubernetes.io/elb.class: union # Тип балансировщика нагрузки
    kubernetes.io/elb.health-check-flag: 'on'kubernetes.io/elb.health-check-flag: 'on' # Включает проверку работоспособности ELB.
    kubernetes.io/elb.health-check-option: '{kubernetes.io/elb.health-check-option: '{
    "protocol":"TCP", "protocol":"TCP",
    "delay":"5", "delay":"5",
    "timeout":"10", "timeout":"10",
    "max_retries":"3" "max_retries":"3"
    }' }'
    spec:
    selector:
    app: nginx
    ports:
    - name: service0
    port: 80
    protocol: TCP
    targetPort: 80
    type: LoadBalancer
  • Подробности о том, как использовать kubernetes.io/elb.health-check-options, см. Настройка проверки работоспособности на нескольких портах службы LoadBalancer.

Возможность прозрачной передачи

Таблица 4 Аннотации для возможности прозрачной передачи

Параметр

Тип

Описание

Поддерживаемая версия кластера

kubernetes.io/elb.pass-through

Строка

Проходят ли запросы на доступ к Сервису из кластера через балансировщик нагрузки ELB?

v1.19 или новее

Для получения подробной информации о сценариях использования и примерах применения см.Настройка сквозного сетевого подключения для сервиса LoadBalancer.

Теги ресурса

Таблица 5 Аннотации

Параметр

Тип

Описание

Поддерживаемая версия кластера

kubernetes.io/elb.tags

Строка

Добавление тегов ресурса к балансировщику нагрузки. Этот параметр можно настроить только при автоматическом создании балансировщика нагрузки.

Тег имеет формат «ключ=значение». Несколько тегов разделяются запятыми (,).

v1.23.11-r0, v1.25.6-r0, v1.27.3-r0 или новее

Для получения подробной информации о сценариях использования и примерах применения см.Использование kubectl для создания сервиса (автоматическое создание балансировщика нагрузки).

Изменение пользовательского EIP

Таблица 6 Аннотации для изменения пользовательского EIP

Параметр

Тип

Описание

Поддерживаемая версия кластера

kubernetes.io/elb.custom-eip-id

Строка

Идентификатор настраиваемого EIP, который виден в консоли EIP.

EIP должен быть привязываемым.

v1.23.18-r0, v1.25.13-r0, v1.27.10-r0, v1.28.8-r0, v1.29.4-r0, v1.30.1-r0 или новее

Для получения подробной информации о сценариях использования и примерах применения см.Изменение пользовательского EIP для сервиса LoadBalancer.

HTTP или HTTPS

Таблица 7 Аннотации для использования HTTP или HTTPS

Параметр

Тип

Описание

Поддерживаемая версия кластера

kubernetes.io/elb.protocol-port

Строка

Если сервис совместим с HTTP/HTTPS, укажите протокол и номер порта в формате "протокол:порт".

где,

  • протокол: указывает используемый протокол прослушивающего порта. Значение может быть http или https.
  • порты: порты службы, указанные в spec.ports[].port.

v1.19.16 или новее

kubernetes.io/elb.cert-id

Строка

Идентификатор сертификата ELB, который используется как сертификат сервера HTTPS.

Как получить: войдите в консоль ELB и выберите Сертификаты. В списке сертификатов скопируйте идентификатор под именем целевого сертификата.

v1.19.16 или новее

Для получения подробной информации о сценариях использования и примерах применения см.Настройка HTTP/HTTPS для сервиса LoadBalancer.

SNI

Таблица 8 Аннотации для использования SNIs

Параметр

Тип

Описание

Поддерживаемая версия кластера

kubernetes.io/elb.tls-certificate-ids

Строка

В ELB идентификаторы сертификатов SNI, которые обязательно содержат имя домена, разделены запятыми (,).

Как получить: войдите в консоль ELB и выберите Сертификаты. В списке сертификатов скопируйте идентификатор под именем целевого сертификата.

v1.23.13-r0, v1.25.8-r0, v1.27.5-r0, v1.28.3-r0 или новее

Необходимо включить HTTPS. Для деталей смотрите Настройка SNI для сервиса LoadBalancer.

HTTP/2

Таблица 9 Аннотации для использования HTTP/2

Параметр

Тип

Описание

Поддерживаемая версия кластера

kubernetes.io/elb.http2-enable

Строка

Определяет, включен ли HTTP/2. Использование HTTP/2 для пересылки запросов улучшает производительность доступа между вашим приложением и балансировщиком нагрузки. Однако балансировщик нагрузки продолжает использовать HTTP/1.x для перенаправления запросов на сервер back-end.

Варианты:

  • true: включено
  • false: отключено (значение по умолчанию)

Примечание: HTTP/2 можно включать или отключать только тогда, когда слушатель использует HTTPS. Данный параметр недействителен и принимает значение по умолчанию false, если протокол слушателя — HTTP.

v1.23.13-r0, v1.25.8-r0, v1.27.5-r0, v1.28.3-r0 или новее

Для получения подробной информации о сценариях использования и примерах применения см.Настройка HTTP/2 для сервиса LoadBalancer.

Динамическая корректировка веса бэкенда ECS

Таблица 10 Аннотации для динамической настройки веса бэкенда ECS

Параметр

Тип

Описание

Поддерживаемая версия кластера

kubernetes.io/elb.adaptive-weight

Строка

Динамически регулирует вес бэкенда балансировщика нагрузки на основе количества подов на сервере. Таким образом запросы, получаемые каждым подом, распределяются более равномерно.

  • true: включено
  • false: отключено

v1.21 или выше

Note

Этот параметр недействителен в режиме сквозной передачи сети, где в кластере CCE Turbo используются выделенные балансировщики нагрузки.

Следующий пример показывает, как использовать предыдущие аннотации:

apiVersion: v1
kind: Service
metadata:
name: nginx
annotations:
kubernetes.io/elb.id: <your_elb_id> # Идентификатор балансировщика нагрузки. Замените его реальным значением.
kubernetes.io/elb.class: union # Тип балансировщика нагрузки
kubernetes.io/elb.adaptive-weight: 'true'kubernetes.io/elb.adaptive-weight: 'true' # Включает динамическую регулировку веса бэкенда ECS.
spec:
selector:
app: nginx
ports:
- name: service0
port: 80
protocol: TCP
targetPort: 80
type: LoadBalancer

Blocklist/Trustlist

Таблица 11 Аннотации для контроля доступа к ELB

Параметр

Тип

Описание

Поддерживаемая версия кластера

kubernetes.io/elb.acl-id

Строка

  • Если этот параметр не указан, CCE не изменяет контроль доступа на ELB.
  • Если этот параметр оставлен пустым, доступ ко всем адресам IP разрешен.
  • Если этот параметр установлен на идентификатор группы адресов IP балансировщика нагрузки, то контроль доступа включен, и вам необходимо настроить блоклист или доверенный список адресов IP для балансировщика нагрузки. Кроме того, вы должны указать оба параметра kubernetes.io/elb.acl-status и kubernetes.io/elb.acl-type.
    ПРИМЕЧАНИЕ:

    Для кластеров версий v1.25.16-r10, v1.27.16-r10, v1.28.15-r0, v1.29.10-r0, v1.30.6-r0, v1.31.1-r0 или выше, когда используется выделенный балансировщик нагрузки, можно выбрать максимум пять групп адресов IP одновременно, разделенных запятыми (,).

    Как получить:

    Войдите в консоль ELB, выберите Elastic Load Balance > Группы адресов IP, скопируйте ID целевой группы адресов IP.

v1.23.12-r0, v1.25.7-r0, v1.27.4-r0, v1.28.2-r0 или выше

kubernetes.io/elb.acl-status

Строка

Данный параметр обязателен при настройке блоклиста или доверенного списка адресов IP для балансировщика нагрузки. Возможности:

  • on или true: контроль доступа включен.
  • off или false: контроль доступа выключен.

v1.23.12-r0, v1.25.7-r0, v1.27.4-r0, v1.28.2-r0 или выше

kubernetes.io/elb.acl-type

Строка

Данный параметр является обязательным при настройке блоклиста или доверенного списка адресов IP для балансировщика нагрузки. Варианты:

  • black: обозначает блоклист. Выбранная группа адресов IP не может получить доступ к балансировщику нагрузки.
  • white: обозначает доверенный список. Только выбранная группа адресов IP может получить доступ к балансировщику нагрузки.

v1.23.12-r0, v1.25.7-r0, v1.27.4-r0, v1.28.2-r0 или выше

Следующий пример демонстрирует использование предыдущих аннотаций:

apiVersion: v1
kind: Service
metadata:
name: nginx
annotations:
kubernetes.io/elb.id: <your_elb_id> # Идентификатор балансировщика нагрузки. Замените его реальным значением.
kubernetes.io/elb.class: performance # Тип балансировщика нагрузки
kubernetes.io/elb.acl-id: <your_acl_id>kubernetes.io/elb.acl-id: <your_acl_id> # ID группы адресов IP для доступа к балансировщику нагрузки
kubernetes.io/elb.acl-status: 'on'kubernetes.io/elb.acl-status: 'on' # Включить контроль доступа.
kubernetes.io/elb.acl-type: 'white'kubernetes.io/elb.acl-type: 'white' # Доверенный список для контроля доступа
spec:
selector:
app: nginx
ports:
- name: service0
port: 80
protocol: TCP
targetPort: 80
type: LoadBalancer

Подробнее о сценариях применения и примерах использования см. Настройка политики доступа Blocklist/Trustlist для службы LoadBalancer.

Сеть хоста

Таблица 12 Аннотация для хост-сети

Параметр

Тип

Описание

Поддерживаемая версия кластера

kubernetes.io/hws-hostNetwork

Строка

Эта аннотация может использоваться службой только в случае, если под использует сеть хоста. После использования этой аннотации ELB направляет запросы в сеть хоста.

Варианты:

  • true: enabled
  • false (default): disabled

v1.9 или новее

Следующий раздел показывает, как использовать указанные выше аннотации:

apiVersion: v1
kind: Service
metadata:
name: nginx
annotations:
kubernetes.io/elb.id: <your_elb_id> # Идентификатор балансировщика нагрузки. Замените его фактическим значением.
kubernetes.io/elb.class: union # Тип балансировщика нагрузки
kubernetes.io/hws-hostNetwork: 'true'kubernetes.io/hws-hostNetwork: 'true' # Балансировщик нагрузки перенаправляет запрос в хост-сеть.
spec:
selector:
app: nginx
ports:
- name: service0
port: 80
protocol: TCP
targetPort: 80
type: LoadBalancer

Timeout

Таблица 13 Аннотация для настройки тайм-аута

Параметр

Тип

Описание

Поддерживаемая версия кластера

kubernetes.io/elb.keepalive_timeout

Строка

Тайм-аут клиентских соединений. Если в течение этого периода запросы не поступают на балансировщик нагрузки, он отключает соединение от клиента и устанавливает новое соединение при поступлении нового запроса.

Значение:

  • Для слушателей TCP допустимые значения находятся в диапазоне от 10 до 4000 (в секундах). Значение по умолчанию равно 300.
  • Для слушателей HTTP, HTTPS и TERMINATED_HTTPS диапазон значений находится между 0 и 4000 (в секундах). Значение по умолчанию равно 60.
  • Для слушателей UDP (поддерживаются только выделенными балансировщиками нагрузки) диапазон значений составляет от 10 до 4000 (в секундах). Значение по умолчанию равно 300.

Выделенные балансировщики нагрузки: v1.19.16-r30, v1.21.10-r10, v1.23.8-r10, v1.25.3-r10 или более поздние версии

Совместно используемые балансировщики нагрузки: v1.23.13-r0, v1.25.8-r0, v1.27.5-r0, v1.28.3-r0 или более поздние версии

kubernetes.io/elb.client_timeout

Строка

Тайм-аут ожидания запроса от клиента. Возможны два случая:

  • Если клиент не отправит заголовок запроса на балансировщик нагрузки за этот период времени, запрос будет прерван.
  • Если интервал между двумя последовательными телами запросов, достигающими балансировщика нагрузки, превышает продолжительность тайм-аута, соединение будет разорвано.

Диапазон значений от 1 до 300 (в секундах). Значение по умолчанию равно 60.

v1.23.13-r0, v1.25.8-r0, v1.27.5-r0, v1.28.3-r0 или более поздняя версия

kubernetes.io/elb.member_timeout

Строка

Продолжительность, в течение которой ожидается получение ответа от бэкэнд-сервера. После того, как запрос был переадресован на бэкэнд-сервер, если сервер не отвечает в течение указанного срока, балансировщик прекращает ожидание и возвращает ошибку HTTP 504 Gateway Timeout.member_timeout, балансировщик нагрузки прекратит ожидание и вернет ошибку HTTP 504 Gateway Timeout.

Значения варьируются от 1 до 300 (в секундах). Значение по умолчанию равно 60.

v1.23.13-r0, v1.25.8-r0, v1.27.5-r0, v1.28.3-r0 или более поздняя версия

Подробности о сценариях применения и примерах использования см. в разделе Настройка тайм-аута службы LoadBalancer.

Настройка заголовка HTTP/HTTPS

Таблица 14 Аннотации для настройки заголовков HTTP/HTTPS

Параметр

Тип

Описание

Поддерживаемая версия кластера

kubernetes.io/elb.x-forwarded-port

Строка

Балансировщик нагрузки может получить номер порта слушателя через X-Forwarded-Port и передать номер порта пакетам бэкэнд-сервера.

  • true: Включить функцию получения номера порта слушателя.
  • false: Отключить функцию получения номера порта слушателя.

v1.23.13-r0, v1.25.8-r0, v1.27.5-r0, v1.28.3-r0 или более поздняя версия

kubernetes.io/elb.x-forwarded-for-port

Строка

Балансировщик нагрузки может получать номер порта клиента для запросов с использованием X-Forwarded-For-Port и передавать номер порта пакетам бэкэнд-сервера.

  • true: Включить функцию получения номера порта клиента для запросов.
  • false: Отключить функцию получения номера порта клиента для запросов.

kubernetes.io/elb.x-forwarded-host

Строка

  • true: Включить функцию перезаписи X-Forwarded-Host. Затем X-Forwarded-Host заголовок будет переписан с использованием заголовка запроса клиента и передан на серверы бэкенда.Host
  • false: Отключает функцию перезаписи X-Forwarded-Host.X-Forwarded-HostТогда заголовок X-Forwarded-Host клиентского запроса будет передан на серверы бэкенда.

Для получения дополнительной информации о сценариях применения и примерах использования см.Configuring an HTTP/HTTPS Header for a LoadBalancer Service.

Enabling GZIP

Таблица 15 Аннотации для включения GZIP

Параметр

Тип

Описание

Поддерживаемая версия кластера

kubernetes.io/elb.gzip-enabled

Строка

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

Если эта функция включена, определенные файлы будут сжаты. Если она отключена, файлы сжиматься не будут. По умолчанию сжатие данных отключено.

Файлы следующих форматов могут быть сжаты:

  • Brotli может сжимать любые форматы файлов.
  • GZIP может сжимать файлы следующих типов: text/xml, text/plain, text/css, application/javascript, application/x-javascript, application/rss+xml, application/atom+xml, application/xml, application/json

Эта функция доступна только для прослушивателей HTTP/HTTPS выделенных балансировщиков нагрузки. Если удаляется расширенная конфигурация для включения сжатия данных или целевая аннотация, конфигурация ELB не изменяется.

v1.23.14-r0, v1.25.9-r0, v1.27.6-r0, v1.28.4-r0, или более поздние версии

Для получения дополнительной информации о сценариях применения и примерах использования см.Configuring GZIP Data Compression for a LoadBalancer Service.

Получение адресов клиентов

Таблица 16 Аннотации для получения адресов клиентов

Параметр

Тип

Описание

Поддерживаемая версия кластера

kubernetes.io/elb.transparent-client-ip

Строка

Этот параметр доступен только тогда, когда общий балансировщик нагрузки используется для создания службы LoadBalancer, совместимой с протоколами TCP/UDP.

  • true: Включает возможность получения адреса источника клиента.
  • false: Отключает возможность получения адреса источника клиента.

v1.23.17-r0, v1.25.12-r0, v1.27.9-r0, v1.28.7-r0, v1.29.3-r0, или более поздние версии

Для получения дополнительной информации о сценариях применения и примерах использования см.Enabling a LoadBalancer Service to Obtain the Client IP Address.

Настройка диапазонов портов для слушателя

Таблица 17 Аннотации для настройки диапазонов портов для слушателя

Параметр

Тип

Описание

Поддерживаемая версия кластера

kubernetes.io/elb.port-ranges

Строка

При использовании выделенного балансировщика нагрузки и выборе протоколов TCP, UDP или TLS можно создать слушатель, который принимает соединения на портах в диапазоне от 1 до 65535. Для каждого слушателя можно добавить максимум 10 неперекрывающихся диапазонов портов.

Значение параметра имеет следующий формат, где ports_name и port должны быть уникальными:

'{"<ports_name_1>":["<port_1>,<port_2>","<port_3>,<port_4>"], "<ports_name_2>":["<port_5>,<port_6>","<port_7>,<port_8>"]}'

Например, имена портов cce-service-0 и cce-service-1, а слушатель принимает подключения на портах 100–200 и 300–400, и 500–600 и 700–800 соответственно.

'{"cce-service-0":["100,200", "300,400"], "cce-service-1":["500,600", "700,800"]}'
Примечание:

Эта функция требует наличия ELB. Перед тем как использовать эту функцию, убедитесь, поддерживает ли ELB полную обработку всех портов и пересылку для протоколов четвертого уровня в текущем регионе.

v1.23.18-r0, v1.25.13-r0, v1.27.10-r0, v1.28.8-r0, v1.29.4-r0, v1.30.1-r0, или более поздние версии

Для получения дополнительной информации о сценариях применения и примерах использования см.Configuring a Range of Listening Ports for LoadBalancer Services.

Параметры автоматического создания балансировщика нагрузки

Таблица 18 elb.autocreate структура данных

Параметр

Обязательный

Тип

Описание

name

Нет

Строка

Имя автоматически созданного балансировщика нагрузки.

Значение может содержать от 1 до 64 символов. Допускаются только буквы, цифры, подчеркивания (_), дефисы (-) и точки (.).

По умолчанию: cce-lb+service.UID

type

Нет

Строка

Тип сети балансировщика нагрузки.

  • public: публичный сетевой балансировщик нагрузки
  • inner: приватный сетевой балансировщик нагрузки

По умолчанию: inner

bandwidth_name

Да для публичных сетевых балансировщиков нагрузки

Строка

Название полосы пропускания. Значение по умолчанию: cce-bandwidth-******.

Значение может содержать от 1 до 64 символов. Допускаются только буквы, цифры, подчеркивания (_), дефисы (-) и точки (.).

bandwidth_chargemode

Да для публичных сетевых балансировщиков нагрузки

Строка

Режим тарификации полосы пропускания.

  • bandwidth: оплачивается за полосу пропускания
  • traffic: оплачивается за трафик

bandwidth_size

Да для публичных сетевых балансировщиков нагрузки

Целое число

Размер полосы пропускания. По умолчанию диапазон значений составляет от 1 Мбит/с до 2000 Мбит/с. Настройте этот параметр исходя из диапазона полосы пропускания, допустимого в вашем регионе.

Минимальный шаг изменения полосы пропускания варьируется в зависимости от диапазона полосы пропускания.

  • Если разрешенная полоса пропускания не превышает 300 Мбит/с, минимальный шаг равен 1 Мбит/с.
  • Если разрешенная полоса пропускания находится в диапазоне от 300 Мбит/с до 1000 Мбит/с, минимальный шаг равен 50 Мбит/с.
  • Если разрешенная полоса пропускания превышает 1000 Мбит/с, минимальный шаг равен 500 Мбит/с.

bandwidth_sharetype

Да для публичных сетевых балансировщиков нагрузки

Строка

Режим совместного использования полосы пропускания.

  • PER: выделенная полоса пропускания

eip_type

Да для публичных сетевых балансировщиков нагрузки

Строка

Тип EIP.

  • 5_bgp: динамический BGP

Типы варьируются в зависимости от региона. Для получения подробной информации см. консоль EIP.

vip_subnet_cidr_id

Нет

Строка

Идентификатор подсети IPv4, где размещается балансировщик нагрузки. Эта подсеть используется для выделения IP-адресов для предоставления внешних сервисов. Подсеть IPv4 должна принадлежать виртуальной частной облаку кластера.

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

Этот параметр доступен только для кластеров версии v1.21 или выше.

Как получить:

Войдите в консоль VPC. На панели навигации выберите Подсети. Отфильтруйте целевую подсеть по имени VPC кластера, щелкните имя подсети и скопируйте поле ID подсети IPv4 на вкладке Сводка.

ipv6_vip_virsubnet_id

Нет

Строка

Идентификатор подсети IPv6, в которой развернут балансировщик нагрузки. Для этой подсети должен быть включен IPv6.

Данный параметр доступен только для выделенных балансировщиков нагрузки.

Как получить:

Войдите в консоль VPC. На панели навигации выберите Подсети. Отфильтруйте целевую подсеть по имени VPC кластера, щелкните имя подсети и скопируйте поле Network ID на вкладке Сводка.

elb_virsubnet_ids

Нет

Массив строк

Идентификатор сети подсети, в которой расположен балансировщик нагрузки. Данная подсеть используется для выделения IP-адресов для доступа к серверу бэкенда. Если данный параметр не задан, будет использоваться подсеть, указанная параметром vip_subnet_cidr_id по умолчанию. Балансировщики нагрузки занимают различное количество адресов подсети в зависимости от своих спецификаций. Не используйте блоки CIDR подсетей других ресурсов (таких как кластеры или узлы) в качестве блока CIDR балансировщика нагрузки.

Данный параметр доступен только для выделенных балансировщиков нагрузки.

Пример:

"elb_virsubnet_ids": [
"14567f27-8ae4-42b8-ae47-9f847a4690dd"
]

Как получить:

Войдите в консоль VPC. На панели навигации выберите Подсети. Отфильтруйте целевую подсеть по имени VPC кластера, щелкните имя подсети и скопируйте поле Network ID на вкладке Сводка.

vip_address

Нет

Строка

Приватный IP-адрес балансировщика нагрузки. Поддерживаются только адреса IPv4. Адреса IPv6 не поддерживаются.

Адрес IP должен находиться в блоке CIDR ELB. Если этот параметр не указан, адрес IP будет автоматически назначен из блока CIDR ELB.

Этот параметр доступен только в кластерах версий v1.23.11-r0, v1.25.6-r0, v1.27.3-r0 или более поздних.

available_zone

Да

Массив строк

Зона доступности, где расположен балансировщик нагрузки.

Данный параметр доступен только для выделенных балансировщиков нагрузки.

l4_flavor_name

Нет

Строка

Имя флейвора балансировщика нагрузки четвертого уровня. Этот параметр обязателен при использовании TCP или UDP.

  • Elastic: применяется к нестабильному трафику, оплата производится за общий объем трафика. Кластеры версий v1.21.10-r10, v1.23.8-r10, v1.25.3-r10 и выше поддерживают эластичные спецификации.
  • Fixed: применяется к стабильному трафику, оплата производится согласно спецификациям.

Данный параметр доступен только для выделенных балансировщиков нагрузки.

l7_flavor_name

Нет

Строка

Имя флейвора балансировщика нагрузки седьмого уровня. Данный параметр обязателен при использовании HTTP.

  • Elastic: применяется к нестабильному трафику, оплата производится за общий объем трафика. Кластеры версий v1.21.10-r10, v1.23.8-r10, v1.25.3-r10 и выше поддерживают эластичные спецификации.
  • Fixed: применяется к стабильному трафику, оплата производится согласно спецификациям.

Данный параметр доступен только для выделенных балансировщиков нагрузки. Его значение должно совпадать со значением параметра l4_flavor_name, оба из которых должны быть либо эластичными флейворами, либо фиксированными флейворами.

структура данных elb.health-check-option

Параметр

Обязательный

Тип

Описание

delay

Нет

Строка

Интервал проверки работоспособности (секунды)

Диапазон значений: от 1 до 50. Значение по умолчанию: 5

timeout

Нет

Строка

Время ожидания проверки работоспособности, секунды.

Диапазон значений: от 1 до 50. Значение по умолчанию: 10

max_retries

Нет

Строка

Максимальное количество повторов проверки работоспособности.

Диапазон значений: от 1 до 10. Значение по умолчанию: 3

protocol

Нет

Строка

Протокол проверки работоспособности.

Варианты: TCP, UDP, или HTTP

path

Нет

Строка

URL проверки работоспособности. Параметр необходимо настроить, когда протоколом является HTTP.

Значение по умолчанию: /

Допустимый диапазон символов: 1–80 символов

Таблица 20 elb.health-check-options

Параметр

Обязательный

Тип

Описание

target_service_port

Да

Строка

Порт для проверки работоспособности, указанный в spec.ports. Значение состоит из протокола и номера порта, например, TCP:80.

monitor_port

Нет

Строка

Переопределяемый порт для проверки работоспособности. Если данный параметр не задан, используется порт службы по умолчанию.

Примечание:

Убедитесь, что порт находится в состоянии прослушивания на узле, где размещён под. Иначе результат проверки работоспособности может быть искажён.

delay

Нет

Строка

Интервал проверки работоспособности (с)

Диапазон значений: от 1 до 50. Значение по умолчанию: 5

timeout

Нет

Строка

Время ожидания проверки работоспособности, секунд.

Диапазон значений: от 1 до 50. Значение по умолчанию: 10

max_retries

Нет

Строка

Максимальное число попыток проверки работоспособности.

Диапазон значений: от 1 до 10. Значение по умолчанию: 3

protocol

Нет

Строка

Протокол проверки работоспособности.

Значение по умолчанию: протокол соответствующей службы

Возможности: TCP, UDP, а также HTTP

path

Нет

Строка

URL проверки работоспособности. Данный параметр необходимо задать, если протокол – HTTP.

Значение по умолчанию: /

Допустимый диапазон символов: 1–80 символов

Таблица 21 elb.session-affinity-option структура данных

Параметр

Обязательный

Тип

Описание

persistence_timeout

Да

Строка

Время ожидания липкой сессии, в минутах. Этот параметр действителен только тогда, когда elb.session-affinity-mode установлено на SOURCE_IP.

Диапазон значений: от 1 до 60. Значение по умолчанию: 60