Настроить ба лансировщик нагрузки в кластере Managed Kubernetes для Ingress
После создания кластера Managed Kubernetes мы рекомендуем выполнять все действия с балансировщиками только через kubectl. Изменения, внесенные другим способом, не сохраняются в манифестах Kubernetes. При пересоздании кластера, балансировщика или синхронизации манифестов такие изменения будут отменены.
Балансировщик нагрузки в Managed Kubernetes используется для распределения входящего трафика между подами.
Если вы используете Ingress Controller Traefik, балансировщик нагрузки будет автоматически создан при установке Ingress Controller Traefik. Чтобы настроить балансировщик при установке, используйте инструкцию Установить Ingress Controller Traefik. Все аннотации для настройки балансировщика нагрузки, которые описаны в этой инструкции, применяются к Ingress Controller Traefik только через файл values.yaml.
Если вы используете другой Ingress Controller без автоматического создания балансировщика или дополнительный балансировщик нагрузки нужен для других приложений, создайте балансировщик нагрузки.
Создать балансировщик нагрузки
- Подключитесь к кластеру](/managed-kubernetes/clusters/connect-to-cluster.mdx).
- Создайте yaml-файл с манифестом для объекта Service типа LoadBalancer.
Пример манифеста Service типа LoadBalancer:
apiVersion: v1
kind: Service
metadata:
name: loadbalancer-name
labels:
app: my-app
annotations:
loadbalancer.openstack.org/keep-floatingip: "true"
spec:
type: LoadBalancer
selector:
app: my-app
ports:
- port: 80
protocol: TCP
Все дополнительные параметры для балансировщика передаются в блоке annotations — в инструкции указаны часто используемые аннотации, которые могут пригодиться при создании балансировщика или, в некоторых случаях, для уже созданного балансировщика.
-
Примените манифест:
kubectl apply -f <file_name>Укажите
<file_name>— имя yaml-файла с манифестом для создания объекта Service типа LoadBalancer. Например,loadbalancer.yaml.
Созданный балансировщик нагрузки появится в панели управления: в верхнем меню нажмите Продукты и выберите Облачные серверы → раздел Балансировщики → вкладка Балансировщики.
Указать флейвор и тип балансировщика
По умолчанию без указания аннотации создается балансировщик нагрузки типа Базовый с резервированием.
Для создания балансировщика с другим типом используйте аннотацию:
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: my-app
ports:
- port: 80
protocol: TCP
name: http
loadBalancerIP: "<ip_address>"Укажите
<ip_address>— IP-адрес балансировщика из подсети, которую вы выбрали на шаге 1.В созданном балансировщике аннотацию заменить нельзя — нужно создать новый манифест с нужной аннотацией.
Добавить настройки соединений
Для управления настройками соединений между входящими запросами и балансировщиком или между балансировщиком и серверами используются аннотации: