Настроить внешний балансировщик нагрузки
В инструкции рассмотрен пример создания и настройки внешнего балансировщика нагрузки.
Внешний балансировщик нагрузки — балансировщик, для которого назначается публичный IP-адрес из пула свободных IP-адресов.
Перед началом работы
Создайте кластер с публичным IP-адресом.
Публичный IP-адрес необходим для подключения к кластеру с локального устройства. Если вы подключаетесь через виртуальную машину, созданную в одной подсети с кластером, то публичный адрес для кластера не нужен.
Подключитесь к кластеру.
Шаг 1. Создайте Service с типом LoadBalancer
Сохраните следующую спецификацию в файл cloudru-lb-external.yaml:
apiVersion: v1kind: Servicemetadata:name: cloudru-lb-externalannotations:loadbalancer.mk8s.cloud.ru/type: "external"loadbalancer.mk8s.cloud.ru/health-check-timeout-seconds: "5"loadbalancer.mk8s.cloud.ru/health-check-interval-seconds: "5"loadbalancer.mk8s.cloud.ru/health-check-unhealthy-threshold-count: "4"loadbalancer.mk8s.cloud.ru/health-check-healthy-threshold-count: "4"spec:type: LoadBalancerselector:app: cloudru-external-appports:- port: 80name: cloudru-portГде:
annotations — метаданные с дополнительными параметрами.
loadbalancer.mk8s.cloud.ru/type — тип балансировщика нагрузки.
Для внешнего балансировщика нагрузки — необязательный параметр. По умолчанию — external.
ВниманиеИзменить тип балансировщика нагрузки после создания нельзя.
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-external.yamlПри успешном выполнении отобразится сообщение:
service/cloudru-lb-external createdБалансировщик нагрузки cloudru-lb-external появится в личном кабинете в разделе Балансировщик нагрузки.
Шаг 2. Создайте приложение
Сохраните следующую спецификацию в файл cloudru-pod-lb-external.yaml:
apiVersion: v1kind: Podmetadata:name: web-service-internallabels:app: cloudru-external-appspec:containers:- name: web-service-internalimage: mk8s.registry.smk.sbercloud.dev/nginx:latestВыполните команду:
kubectl create -f cloudru-pod-lb-external.yamlПри успешном выполнении отобразится сообщение:
pod/cloudru-pod-lb-external created
Шаг 3. Проверьте параметры балансировщика
Выполните команду:
kubectl get svc cloudru-lb-external
Результат:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEcloudru-lb-external LoadBalancer 10.102.51.12 46.243.141.44 80:32005/TCP 158m
В столбце EXTERNAL-IP отображается публичный IP-адрес для доступа к приложению из интернет.
Шаг 4. Проверьте работу балансировщика
Выполните команду:
curl http://46.243.141.44
Где 46.243.141.44 — 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>