Настроить внутренний балансировщик нагрузки
В инструкции рассмотрен пример создания и настройки внутреннего балансировщика нагрузки.
Внутренний балансировщик нагрузки — балансировщик, для которого назначается частный IP-адрес из указанной подсети. Настройка такого балансировщика необходима, когда потребители сервиса — это приложения во внутренней сети вне кластера Managed Kubernetes.
Перед началом работы
Создайте кластер с публичным IP-адресом.
Публичный IP-адрес необходим для подключения к кластеру с локального устройства. Если вы подключаетесь через виртуальную машину, созданную в одной подсети с кластером, то публичный адрес для кластера не нужен.
Подключитесь к кластеру.
Шаг 1. Создайте Service с типом LoadBalancer
Сохраните следующую спецификацию в файле cloudru-lb-internal.yaml:
apiVersion : v1kind : Servicemetadata :name : cloudru-lb-internalannotations :loadbalancer.mk8s.cloud.ru/type : "internal"loadbalancer.mk8s.cloud.ru/internal-subnet-id : "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"loadbalancer.mk8s.cloud.ru/health-check-timeout-seconds : "4"loadbalancer.mk8s.cloud.ru/health-check-interval-seconds : "4"loadbalancer.mk8s.cloud.ru/health-check-unhealthy-threshold-count : "5"loadbalancer.mk8s.cloud.ru/health-check-healthy-threshold-count : "5"spec :type : LoadBalancerselector :app : cloudru-internal-appports :- port : 80name : cloudru-portГде:
annotations — метаданные с дополнительными параметрами.
loadbalancer.mk8s.cloud.ru/type — тип балансировщика нагрузки.
ВниманиеИзменить тип балансировщика и идентификатор сети после создания балансировщика нагрузки нельзя.
loadbalancer.mk8s.cloud.ru/internal-subnet-id — идентификатор подсети из сервиса «Подсети».
При создании внутреннего балансировщика указание идентификатора сети обязательно.
loadbalancer.mk8s.cloud.ru/health-check-timeout-seconds — время в секундах, в течение которого отсутствие ответа означает неудавшуюся проверку работоспособности.
Значение от 3 до 30 секунд. Необязательный параметр. По умолчанию — 3 секунды.
loadbalancer.mk8s.cloud.ru/health-check-interval-seconds — время в секундах между проверками работоспособности отдельного пода.
Значение от 3 до 30 секунд. Необязательный параметр. По умолчанию — 3 секунды.
loadbalancer.mk8s.cloud.ru/health-check-unhealthy-threshold-count — количество последовательных неудачных проверок до исключения из балансировки.
Значение от 3 до 25. Необязательный параметр. По умолчанию — 3.
loadbalancer.mk8s.cloud.ru/health-check-healthy-threshold-count — количество последовательных удачных проверок для включения в балансировку.
Значение от 3 до 25. Необязательный параметр. По умолчанию — 3.
spec.selector — метка селектора из шаблона подов.
spec.ports — список портов.
Поддерживаемый протокол: TCP.
Доступные диапазоны: 1–29999, 32769–39999.
spec.ports.port — порт балансировщика нагрузки, на котором будут обслуживаться пользовательские запросы.
Подробное описание параметров спецификации Service см. в документации Kubernetes.
Об ограничениях сервиса «Load Balancer» читайте в руководстве пользователя.
Выполните команду:
kubectl create -f cloudru-lb-internal.yamlКоманда создает подсистему балансировки нагрузки в группе ресурсов узла.
При успешном выполнении отобразится сообщение:
service/cloudru-lb-internal createdБалансировщик нагрузки cloudru-lb-internal появится в личном кабинете в разделе Балансировщик нагрузки.
Шаг 2. Создайте приложение
Сохраните следующую спецификацию в файл cloudru-pod-lb-internal.yaml:
apiVersion : v1kind : Podmetadata :name : web-service-internallabels :app : cloudru-internal-appspec :containers :- name : web-service-internalimage : mk8s.registry.smk.sbercloud.dev/nginx:latestВыполните команду:
kubectl create -f cloudru-pod-lb-internal.yamlПри успешном выполнении отобразится сообщение:
pod/cloudru-pod-lb-internal created
Шаг 3. Проверьте параметры балансировщика
Выполните команду:
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-адрес внутренней подсистемы балансировки нагрузки.
Шаг 4. Проверьте работу балансировщика
Выполните команду:
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 : 35 em ; 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 >
- Перед началом работы
- Шаг 1. Создайте Service с типом LoadBalancer
- Шаг 2. Создайте приложение
- Шаг 3. Проверьте параметры балансировщика
- Шаг 4. Проверьте работу балансировщика