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

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

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

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

Индексы

Взаимосвязь с ELB

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

Параметр

Тип

Описание

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

kubernetes.io/elb.class

Строка

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

Опции:

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

Значение по умолчанию объединение.

v1.9 или новее

kubernetes.io/elb.id

Строка

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

ID балансировщика нагрузки.

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

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

ПРИМЕЧАНИЕ:

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

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

v1.9 or later

kubernetes.io/elb.autocreate

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

ПРЕДУПРЕЖДЕНИЕ:

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

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

Пример:

  • Автоматически созданный выделенный балансировщик нагрузки с привязанным 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

String

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

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

Этот параметр указывает ID enterprise проекта, в котором будет создан ELB load balancer.

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

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

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

v1.15 или новее

kubernetes.io/elb.subnet-id

String

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

ID подсети, в которой находится кластер. Значение может содержать от 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: взвешенный round robin алгоритм
  • LEAST_CONNECTIONS: взвешенный алгоритм наименьшего количества соединений
  • SOURCE_IP: алгоритм хеширования исходного IP
NOTE:

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

v1.9 или позже

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

  • Связать существующий балансировщик нагрузки. Для получения подробных сведений см. Using kubectl to Create a Service (Using an Existing Load Balancer).
    apiVersion: v1
    kind: Service
    metadata:
    name: nginx
    annotations:
    kubernetes.io/elb.id: <your_elb_id> # Load balancer ID. Replace it with the actual value.
    kubernetes.io/elb.class: performance # Load balancer type
    kubernetes.io/elb.lb-algorithm: ROUND_ROBIN # Load balancer algorithm
    spec:
    selector:
    app: nginx
    ports:
    - name: service0
    port: 80
    protocol: TCP
    targetPort: 80
    type: LoadBalancer
  • Автоматически создать балансировщик нагрузки. Для получения подробных сведений см. Using kubectl to Create a Service (Automatically Creating a Load Balancer).

    Общий балансировщик нагрузки:

    apiVersion: v1
    kind: Service
    metadata:
    annotations:
    kubernetes.io/elb.class: union
    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 of the enterprise project to which the load balancer belongs
    kubernetes.io/elb.lb-algorithm: ROUND_ROBIN # Load balancer algorithm
    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: performance
    kubernetes.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": [
    ""
    ],
    "l4_flavor_name": "L4_flavor.elb.s1.small"
    }'
    kubernetes.io/elb.enterpriseID: '0' # ID of the enterprise project to which the load balancer belongs
    kubernetes.io/elb.lb-algorithm: ROUND_ROBIN # Load balancer algorithm
    spec:
    selector:
    app: nginx
    ports:
    - name: cce-service-0
    targetPort: 80
    nodePort: 0
    port: 80
    protocol: TCP
    type: LoadBalancer

Sticky Session

Таблица 2 Аннотации для sticky session

Параметр

Тип

Описание

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

kubernetes.io/elb.session-affinity-mode

Строка

Sticky session на основе IP‑адреса источника означает, что запросы доступа от одного и того же IP‑адреса направляются на один и тот же backend server.

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

Когда kubernetes.io/elb.lb-algorithm установлен в SOURCE_IP (source IP hash), sticky session не может быть включена.

v1.9 or later

kubernetes.io/elb.session-affinity-option

Sticky session тайм-аут.

v1.9 or later

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

apiVersion: v1
kind: Service
metadata:
name: nginx
annotations:
kubernetes.io/elb.id: <your_elb_id> # Load balancer ID. Replace it with the actual value.
kubernetes.io/elb.class: union # Load balancer type
kubernetes.io/elb.session-affinity-mode: SOURCE_IP # The sticky session type is source IP address.
kubernetes.io/elb.session-affinity-option: '{"persistence_timeout": "30"}' # Stickiness duration, which is measured in minutes
spec:
selector:
app: nginx
ports:
- name: service0
port: 80
protocol: TCP
targetPort: 80
type: LoadBalancer

Health Check

Table 3 Аннотации для health check

Параметр

Тип

Описание

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

kubernetes.io/elb.health-check-flag

String

Необходимо ли включить проверку состояния ELB.

  • Enabling health check: Оставьте этот параметр пустым или установите значение 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. Каждый порт службы может быть сконфигурирован отдельно, и вы можете настроить только некоторые порты.

ПРИМЕЧАНИЕ:

Либо 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> # Load balancer ID. Replace it with the actual value.
    kubernetes.io/elb.class: union # Load balancer type
    kubernetes.io/elb.health-check-flag: 'on' # Enable ELB health check.
    kubernetes.io/elb.health-check-option: '{
    "protocol":"TCP",
    "delay":"5",
    "timeout":"10",
    "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.

Passthrough Capability

Table 4 Annotations for passthrough capability

Parameter

Тип

Описание

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

kubernetes.io/elb.pass-through

Строка

Являются ли запросы доступа из кластера к сервису проходящими через балансировщик нагрузки ELB.

v1.19 or later

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

Теги ресурсов

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

Параметр

Тип

Описание

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

kubernetes.io/elb.tags

Строка

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

Тег имеет формат "key=value". Используйте запятые (,) для разделения нескольких тегов.

v1.23.11-r0, v1.25.6-r0, v1.27.3-r0, or later

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

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

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

Параметр

Тип

Описание

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

kubernetes.io/elb.custom-eip-id

Строка

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

Строка

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

где,

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

v1.19.16 или позже

kubernetes.io/elb.cert-id

String

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

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

v1.19.16 или позже

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

SNI

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

Параметр

Тип

Описание

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

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 улучшает производительность доступа между вашим приложением и load balancer. Однако load balancer по‑прежнему использует HTTP/1.x для пересылки запросов на backend server.

Опции:

  • 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

String

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

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

v1.21 или позже

Note

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

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

apiVersion: v1
kind: Service
metadata:
name: nginx
annotations:
kubernetes.io/elb.id: <your_elb_id> # Load balancer ID. Replace it with the actual value.
kubernetes.io/elb.class: union # Load balancer type
kubernetes.io/elb.adaptive-weight: 'true' # Enable dynamic adjustment of the weight of the backend ECS.
spec:
selector:
app: nginx
ports:
- name: service0
port: 80
protocol: TCP
targetPort: 80
type: LoadBalancer

Список блокировки/Доверия

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

Параметр

Тип

Описание

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

kubernetes.io/elb.acl-id

Строка

  • Если этот параметр не указан, CCE не изменяет управление доступом на ELB.
  • Если этот параметр оставлен пустым, доступ к балансировщику нагрузки разрешён всем IP-адресам.
  • Если этот параметр установлен в ID группы 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‑адресов или список доверенных адресов для балансировщика нагрузки. Параметры:

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

v1.23.12-r0, v1.25.7-r0, v1.27.4-r0, v1.28.2-r0, или позже

kubernetes.io/elb.acl-type

Строка

Этот параметр обязателен, когда вы настраиваете блок‑список IP‑адресов или список доверенных адресов для балансировщика нагрузки. Параметры:

  • черный: указывает на блоклист. Выбранная группа IP-адресов не может получить доступ к балансировщику нагрузки.
  • белый: указывает на trustlist. Только выбранная группа 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> # Load balancer ID. Replace it with the actual value.
kubernetes.io/elb.class: performance # Load balancer type
kubernetes.io/elb.acl-id: <your_acl_id> # ID of an IP address group for accessing a load balancer
kubernetes.io/elb.acl-status: 'on' # Enable access control.
kubernetes.io/elb.acl-type: 'white' # Trustlist for access control
spec:
selector:
app: nginx
ports:
- name: service0
port: 80
protocol: TCP
targetPort: 80
type: LoadBalancer

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

Сеть хоста

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

Параметр

Тип

Описание

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

kubernetes.io/hws-hostNetwork

Строка

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

Опции:

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

v1.9 или новее

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

apiVersion: v1
kind: Service
metadata:
name: nginx
annotations:
kubernetes.io/elb.id: <your_elb_id> # Load balancer ID. Replace it with the actual value.
kubernetes.io/elb.class: union # Load balancer type
kubernetes.io/hws-hostNetwork: 'true' # The load balancer forwards the request to the host network.
spec:
selector:
app: nginx
ports:
- name: service0
port: 80
protocol: TCP
targetPort: 80
type: LoadBalancer

Таймаут

Таблица 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

String

Тайм‑аут ожидания запроса от клиента. Есть два случая:

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

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

v1.23.13-r0, v1.25.8-r0, v1.27.5-r0, v1.28.3-r0, или позже

kubernetes.io/elb.member_timeout

String

Продолжительность, в течение которой ожидается ответ от сервера back‑end. После того как запрос перенаправлен к серверу back‑end, если сервер не отвечает в течение периода, указанного 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 заголовок будет перезаписан с использованием Хост заголовок запроса клиента и передаётся бэкенд‑серверам.
  • false: Отключить функцию перезаписи X-Forwarded-Host. Затем X-Forwarded-Host заголовок клиента будет передаваться бэкенд‑серверам.

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

Включение GZIP

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

Параметр

Тип

Описание

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

kubernetes.io/elb.gzip-enabled

Строка

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

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

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

  • 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, или позже

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

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

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

Параметр

Тип

Описание

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

kubernetes.io/elb.transparent-client-ip

Строка

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

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

v1.23.17-r0, v1.25.12-r0, v1.27.9-r0, v1.28.7-r0, v1.29.3-r0, или позже

Подробности о сценариях применения и примерах использования см. Включение LoadBalancer Service для получения IP-адреса клиента.

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

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

Параметр

Тип

Описание

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

kubernetes.io/elb.port-ranges

Строка

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

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

'{"<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 полное прослушивание портов и переадресацию для протоколов уровня 4 в текущем регионе.

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

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

Параметры автоматического создания Load Balancer

Таблица 18 elb.autocreate data structure

Параметр

Обязательно

Тип

Описание

имя

Нет

Строка

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

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

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

тип

Нет

Строка

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

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

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

bandwidth_name

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

Строка

Имя пропускной способности. Значение по умолчанию cce-bandwidth-******.

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

bandwidth_chargemode

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

String

Режим пропускной способности.

  • bandwidth: оплата за пропускную способность
  • traffic: оплата за трафик

bandwidth_size

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

Integer

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

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

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

bandwidth_sharetype

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

String

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

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

eip_type

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

String

Тип EIP.

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

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

vip_subnet_cidr_id

Нет

Строка

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

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

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

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

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

ipv6_vip_virsubnet_id

Нет

Строка

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

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

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

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

elb_virsubnet_ids

Нет

Массив строк

Идентификатор сети подсети, где находится load balancer. Эта подсеть используется для выделения IP‑адресов для доступа к backend server. Если этот параметр не указан, подсеть, указанная vip_subnet_cidr_id будет использоваться по умолчанию. Load balancers занимают различное количество IP‑адресов подсети в зависимости от их характеристик. Не используйте CIDR‑блоки подсети других ресурсов (например, кластеров или узлов) в качестве CIDR‑блока load balancer.

Этот параметр доступен только для выделенных load balancers.

Пример:

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

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

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

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

Да

Массив строк

AZ, где находится балансировщик нагрузки.

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

l4_flavor_name

Нет

Строка

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

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

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

l7_flavor_name

Нет

Строка

Имя Флейвора Layer 7 load balancer. Этот параметр обязателен, когда используется HTTP.

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

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

Таблица 19 elb.health-check-option структура данных

Параметр

Обязательно

Тип

Описание

задержка

Нет

String

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

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

тайм-аут

Нет

String

Тайм-аут проверки состояния, в секундах.

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

max_retries

Нет

String

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

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

протокол

Нет

String

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

Параметры: TCP, UDP, или HTTP

путь

Нет

String

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

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

Диапазон значений: 1‑80 символов

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

Параметр

Обязательно

Тип

Описание

target_service_port

Да

Строка

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

monitor_port

Нет

Строка

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

ПРИМЕЧАНИЕ:

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

delay

Нет

Строка

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

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

тайм-аут

Нет

Строка

Тайм-аут проверки работоспособности, в секундах.

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

max_retries

Нет

Строка

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

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

протокол

Нет

Строка

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

Значение по умолчанию: протокол ассоциированного сервиса

Опции: TCP, UDP, and HTTP

путь

Нет

Строка

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

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

Диапазон значений: 1-80 символов

Таблица 21 elb.session-affinity-option data structure

Параметр

Обязательно

Тип

Описание

persistence_timeout

Да

Строка

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

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