В инструкции рассмотрен пример создания и настройки внутреннего балансировщика нагрузки.
Внутренний балансировщик нагрузки — балансировщик, для которого назначается частный IP-адрес из указанной подсети. Настройка такого балансировщика необходима, когда потребители сервиса — это приложения во внутренней сети вне кластера Managed Kubernetes.
Создайте кластер или используйте ранее созданный.
Создайте файл cloudru-lb-internal.yaml и скопируйте в него манифест:
kind: ServiceapiVersion: v1metadata:name: cloudru-lb-internalannotations:networking.cloud.ru/load-balancer-type: "internal"networking.cloud.ru/load-balancer-return-subnet-ids: "43ca5087-f15d-4a59-ba80-e5de7ff3d31d"networking.cloud.ru/load-balancer-internal-subnet-id: "496e40f7-cc4b-4fa4-b42a-8cd2c9360716"networking.cloud.ru/load-balancer-health-check-timeout-seconds: "4"networking.cloud.ru/load-balancer-health-check-interval-seconds: "4"networking.cloud.ru/load-balancer-health-check-unhealthy-threshold: "5"networking.cloud.ru/load-balancer-health-check-healthy-threshold: "5"spec:type: LoadBalancerselector:app: cloudru-internal-appports:- name: cloudru-portprotocol: TCPport: 80targetPort: 80
Где:
annotations — метаданные с дополнительными параметрами.
networking.cloud.ru/load-balancer-type — тип балансировщика нагрузки.
После создания балансировщика нагрузки параметр нельзя изменить.
networking.cloud.ru/load-balancer-return-subnet-ids — список идентификаторов внутренних подсетей, из которых будут выделены IP-адреса для реплик балансировщика. C IP-адресов сетевой трафик будет доставляться к целям.
Подсети также определяют зоны доступности, в которых будут расположены реплики балансировщика.
Обязательный параметр.
load-balancer-internal-subnet-id — идентификатор подсети из сервиса «Подсети», из которой будет выделен IP-адрес.
При создании внутреннего балансировщика указание идентификатора сети обязательно.
После создания балансировщика нагрузки параметр нельзя изменить.
(Опционально) networking.cloud.ru/load-balancer-health-check-timeout-seconds — время в секундах, в течение которого отсутствие ответа означает неудавшуюся проверку работоспособности.
Значение от 3 до 30 секунд. По умолчанию — 3 секунды.
(Опционально) networking.cloud.ru/load-balancer-health-check-interval-seconds — время в секундах между проверками работоспособности узла.
Значение от 3 до 30 секунд. По умолчанию — 3 секунды.
(Опционально) networking.cloud.ru/load-balancer-health-check-unhealthy-threshold — количество последовательных неудачных проверок до исключения из балансировки.
Значение от 3 до 25. По умолчанию — 3.
(Опционально) networking.cloud.ru/load-balancer-health-check-healthy-threshold — количество последовательных удачных проверок для включения в балансировку.
Значение от 3 до 25. По умолчанию — 3.
spec.selector — метка селектора из шаблона подов.
spec.ports — список портов.
Поддерживаемый протокол: TCP.
Доступные диапазоны: 1–29999, 32769–39999.
spec.ports.port — порт балансировщика нагрузки, на котором будут обслуживаться пользовательские запросы.
Выполните команду:
kubectl create -f cloudru-lb-internal.yaml
Команда создает подсистему балансировки нагрузки в группе ресурсов узла.
При успешном выполнении отобразится сообщение:
service/cloudru-lb-internal created
Балансировщик нагрузки cloudru-lb-internal появится в личном кабинете в сервисе Load Balancer.
Создайте файл cloudru-pod-lb-internal.yaml и скопируйте в него манифест:
apiVersion: v1kind: Podmetadata:name: web-service-internallabels:app: cloudru-internal-appspec:containers:- name: web-service-internalimage: emk8s.cr.cloud.ru/nginx:latest
Выполните команду:
kubectl create -f cloudru-pod-lb-internal.yaml
При успешном выполнении отобразится сообщение:
pod/cloudru-pod-lb-internal created
Выполните команду:
kubectl get svc cloudru-lb-internal
Результат:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEcloudru-lb-internal LoadBalancer 10.102.51.12 172.16.100.47 80:30203/TCP 83m
В столбце EXTERNAL-IP отображается IP-адрес внутренней подсистемы балансировки нагрузки.
Выполните команду:
curl http://172.16.100.47
Где 172.16.100.47 — IP-адрес из столбца EXTERNAL-IP.
При необходимости повторите команду несколько раз.
Если приложение отвечает корректно, вы увидите следующий результат:
<!DOCTYPE html><html><head><title>Welcome to nginx!</title><style>html { color-scheme: light dark; }body { width: 35em; margin: 0 auto;font-family: Tahoma, Verdana, Arial, sans-serif; }</style></head><body><h1>Welcome to nginx!</h1><p>If you see this page, the nginx web server is successfully installed andworking. Further configuration is required.</p><p>For online documentation and support please refer to<a href="http://nginx.org/">nginx.org</a>.<br/>Commercial support is available at<a href="http://nginx.com/">nginx.com</a>.</p><p><em>Thank you for using nginx.</em></p></body></html>