- tocdepth
2
Настроить внутренний балансировщик нагрузки
В инструкции рассмотрен пример создания и настройки внутреннего балансировщика нагрузки.
Внутренний балансировщик нагрузки — балансировщик, для которого назначается частный IP-адрес из указанной подсети. Настройка такого балансировщика необходима, когда потребители сервиса — это приложения во внутренней сети вне кластера Managed Kubernetes.
Перед началом работы
Создайте кластер с публичным IP-адресом.
Публичный IP-адрес необходим для подключения к кластеру с локального устройства. Если вы подключаетесь через виртуальную машину, созданную в одной подсети с кластером, то публичный адрес для кластера не нужен.
Подключитесь к кластеру.
Шаг 1. Создайте Service с типом LoadBalancer
Сохраните следующую спецификацию в файле
cloudru-lb-internal.yaml
:apiVersion: v1 kind: Service metadata: name: cloudru-lb-internal annotations: 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: LoadBalancer selector: app: cloudru-internal-app ports: - port: 80 name: 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: v1 kind: Pod metadata: name: web-service-internal labels: app: cloudru-internal-app spec: containers: - name: web-service-internal image: 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) AGE
cloudru-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: 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 and
working. 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>
для Dev & Test