Перейти к основному содержимому
Настроить балансировщик нагрузки
Последнее изменение:

Настроить балансировщик нагрузки

Балансировщик нагрузки в Managed Kubernetes используется для распределения входящего трафика между подами.

к сведению

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

Создать балансировщик нагрузки

Создайте манифест с Service типа LoadBalancer.

Пример манифеста:

apiVersion: v1
kind: Service
metadata:
name: loadbalancer-name
labels:
app: nginx
annotations:
loadbalancer.openstack.org/keep-floatingip: "true"
spec:
type: LoadBalancer
selector:
app: nginx
ports:
- port: 80
protocol: TCP

Все дополнительные параметры для балансировщика передаются в блоке annotations — в инструкции указаны часто используемые аннотации, которые могут пригодиться при создании балансировщика или, в некоторых случаях, для уже созданного балансировщика.

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

Указать флейвор и тип балансировщика

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

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

loadbalancer.openstack.org/flavor-id: "<flavor_id>"

Укажите <flavor_ID> — ID типа балансировщика нагрузки (флейвора). Cписок флейворов можно посмотреть с помощью openstack loadbalancer flavor list -c id -c name. Подробнее о соответствии названий и типов балансировщиков в подразделе Посмотреть список типов.

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

Создать балансировщик без публичного IP-адреса

По умолчанию без указания аннотации создается балансировщик с публичным IP-адресом.

Чтобы создать балансировщик без публичного IP-адреса, используйте аннотацию:

service.beta.kubernetes.io/openstack-internal-load-balancer: "true"

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

Создать балансировщик с IP-адресом из других подсетей

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

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

  1. Добавьте в манифест аннотацию:

    loadbalancer.openstack.org/subnet-id: "<subnet_id>"

    Укажите <subnet_id> — ID подсети, можно посмотреть с помощью команды openstack subnet list

  2. Чтобы автоматически не создался публичный IP-адрес, добавьте аннотацию:

    service.beta.kubernetes.io/openstack-internal-load-balancer: "true"
  3. Укажите в поле loadBalancerIP IP-адрес из указанной подсети:

    spec:
    type: LoadBalancer
    selector:
    app: nginx
    ports:
    - port: 80
    protocol: TCP
    name: http
    loadBalancerIP: "<IP_address>"

    В созданном балансировщике аннотацию заменить нельзя — нужно создать новый манифест с нужной аннотацией.

Добавить параметры соединений

Для управления параметрами соединений к балансировщику или между балансировщиком и серверами используются аннотации:

Установленные в аннотациях параметры соединений отображаются в панели управления в разделе Облачная платформаБалансировщики → страница балансировщика → вкладка Соединения.

Максимум соединений

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

loadbalancer.openstack.org/connection-limit: "<value>"

Укажите <value> — максимальное количество соединений в секунду. По умолчанию — "-1" (не ограничено).

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

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

Таймаут соединения для входящих запросов

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

loadbalancer.openstack.org/timeout-client-data: "<value>"

Укажите <value> — значение таймаута в миллисекундах. По умолчанию — "50000"

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

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

Таймаут соединения для запросов балансировщика к серверам

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

loadbalancer.openstack.org/timeout-member-connect: "<value>"

Укажите <value> — значение таймаута в миллисекундах. По умолчанию — "5000"

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

В панели управления параметр отображается в поле Балансировщик → серверы → параметр Таймаут соединения, мс.

Таймаут неактивности

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

Чтобы указать таймаут неактивности, используйте аннотацию:

loadbalancer.openstack.org/timeout-member-data: "<value>"

Укажите <value> — значение таймаута в миллисекундах. По умолчанию — "50000"

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

В панели управления параметр отображается в поле Балансировщик → серверы → параметр Таймаут неактивности, мс.

Таймаут ожидания TCP

При установке новой TCP-сессии данные иногда передаются не сразу. Параметр определяет время, в течение которого балансировщик ждет передачи данных для инспекции по уже установленному соединению.

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

loadbalancer.openstack.org/timeout-tcp-inspect: "<value>"

Укажите <value> — значение таймаута в миллисекундах. По умолчанию — "0"

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

В панели управления параметр отображается в поле Балансировщик → серверы → параметр Таймаут ожидания TCP, мс.

Включить проверку правил

Чтобы включить или отключить проверку для правил, используйте аннотацию:

loadbalancer.openstack.org/enable-health-monitor: "<value>"

Укажите <value> — "true" для включения или "false" для отключения. Значение по умолчанию — "true"

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

Добавить заголовок X-Forwarded-For

Без указания аннотации балансировщик передает серверу только исходное тело HTTP-запроса, заменяя IP-адрес клиента на свой.

Чтобы серверы получали эту информацию для корректной работы или анализа, включите в запрос к серверу заголовок X-Forwarded-For, используйте аннотацию:

loadbalancer.openstack.org/x-forwarded-for: "true"

Правило будет использовать схему HTTPHTTP вместо TCPTCP.

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

Добавить правило TCP → Proxy

PROXY-протокол используется для передачи информации о соединении от источника, запрашивающего соединение, до пункта назначения, для которого было запрошено соединение.

В логах пода, к которому происходит подключение через балансировщик с правилами TCPPROXY, будет указан реальный IP-адрес подключающегося, а не адрес балансировщика.

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

loadbalancer.openstack.org/proxy-protocol: "true"

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

Сохранить публичный IP-адрес

Чтобы при пересоздании балансировщика сохранить публичный IP-адрес, используйте аннотацию:

loadbalancer.openstack.org/keep-floatingip: "true"

Укажите этот или другой публичный IP-адрес в поле loadBalancerIP:

spec:
type: LoadBalancer
selector:
app: nginx
ports:
- port: 80
protocol: TCP
name: http
loadBalancerIP: "<IP_address>"

Можно использовать аннотацию для уже созданного балансировщика.