Настроить балансировщик нагрузки
Балансировщик нагрузки в 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 флейвора. Флейворы соответствует типам балансировщика нагрузки и определяют количество vCPU, RAM и количество инстансов балансировщика. Например, ac18763b-1fc5-457d-9fa7-b0d339ffb336
— ID для создания балансировщика с типом Продвинутый с резервированием в пуле ru-9. Вы можете посмотреть список флейворов балансировщика нагрузки во всех пулах в таблице или посмотреть список флейворов балансировщика нагрузки в определенном пуле через Openstack CLI.
В созданном балансировщике нельзя изменить тип — нужно создать новый манифест с нужной аннотацией.
Создать балансировщик без публичного IP-адреса
По умолчанию без указания аннотации создается балансировщик с публичным IP-адресом.
Чтобы создать балансировщик без публичного IP-адреса, используйте аннотацию:
service.beta.kubernetes.io/openstack-internal-load-balancer: "true"
В созданном балансировщике параметр заменить нельзя — нужно создать новый манифест с нужной аннотацией.
Создать балансировщик с IP-адресом из других подсетей
По умолчанию балансировщик создается в одной сети с нодами кластера, и для него выделяется публичный IP-адрес.
Вы можете создать балансировщик в любой другой подсети — публичной, приватной или кросспроектной.
-
Добавьте в манифест аннотацию с указанием подсети:
loadbalancer.openstack.org/subnet-id: "<subnet_uuid>"
Укажите
<subnet_uuid>
— ID подсети, можно посмотреть с помощьюopenstack subnet list
-
Чтобы автоматически не создался публичный IP-адрес, добавьте аннотацию:
service.beta.kubernetes.io/openstack-internal-load-balancer: "true"
-
Укажите IP-адрес балансировщика:
spec:
type: LoadBalancer
selector:
app: nginx
ports:
- port: 80
protocol: TCP
name: http
loadBalancerIP: "<ip_address>"Укажите
<ip_address>
— IP-адрес балансировщика из подсети, которую вы выбрали на шаге 1.В созданном балансировщике аннотацию заменить нельзя — нужно создать новый манифест с нужной аннотацией.
Добавить настройки соединений
Для управления настройками соединений между входящими запросами и балансировщиком или между балансировщиком и серверами используются аннотации:
- максимум соединений;
- таймаут соединения для входящих запросов;
- таймаут соединения для запросов балансировщика к серверам;
- таймаут неактивности;
- таймаут ожидания TCP.
Настройки соединений задаются для правила балансировщика. Установленные в аннотациях настройки соединений можно посмотреть в панели управления: в разделе Облачная платформа → Балансировщики → вкладка Балансировщики → страница балансировщика → откройте карточку правила → откройте блок Расширенные настройки правила.
Максимум соединений
Чтобы указать максимум соединений, используйте аннотацию:
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>"