Настроить внешний балансировщик нагрузки

В инструкции рассмотрен пример создания и настройки внешнего балансировщика нагрузки.

Внешний балансировщик нагрузки — балансировщик, для которого назначается публичный IP-адрес из пула свободных IP-адресов.

Перед началом работы

  1. Создайте кластер с публичным IP-адресом.

    Публичный IP-адрес необходим для подключения к кластеру с локального устройства. Если вы подключаетесь через виртуальную машину, созданную в одной подсети с кластером, то публичный адрес для кластера не нужен.

  2. Создайте группу узлов.

  3. Подключитесь к кластеру.

Шаг 1. Создайте Service с типом LoadBalancer

  1. Сохраните следующую спецификацию в файл cloudru-lb-external.yaml:

    apiVersion: v1
    kind: Service
    metadata:
      name: cloudru-lb-external
      annotations:
        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: LoadBalancer
      selector:
        app: cloudru-external-app
      ports:
        - port: 80
          name: 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» читайте в руководстве пользователя.

  2. Выполните команду:

    kubectl create -f cloudru-lb-external.yaml
    

    При успешном выполнении отобразится сообщение:

    service/cloudru-lb-external created
    

    Балансировщик нагрузки cloudru-lb-external появится в личном кабинете в разделе Балансировщик нагрузки.

Шаг 2. Создайте приложение

  1. Сохраните следующую спецификацию в файл cloudru-pod-lb-external.yaml:

    apiVersion: v1
    kind: Pod
    metadata:
      name: web-service-internal
      labels:
        app: cloudru-external-app
    spec:
      containers:
        - name: web-service-internal
          image: mk8s.registry.smk.sbercloud.dev/nginx:latest
    
  2. Выполните команду:

    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)        AGE
cloudru-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 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>
Запустили Evolution free tier
для Dev & Test
Получить