Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Application Load Balancer
  • Начало работы
    • Обзор
      • Обзор
      • Принципы работы
      • Установить Ingress-контроллер
      • Обновить Ingress-контроллер
    • Настройка групп безопасности
    • Работа с сервисными аккаунтами
    • Создание и изменение ресурсов по конфигурации
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • Логи L7-балансировщика
  • История изменений
  • Обучающие курсы

В этой статье:

  • Соответствие ресурсов Application Load Balancer и Kubernetes
  • Идентификаторы ресурсов балансировщика в кластере Kubernetes
  1. Инструменты для Managed Service for Kubernetes
  2. Ingress-контроллер
  3. Принципы работы

Принципы работы Ingress-контроллера Application Load Balancer

Статья создана
Yandex Cloud
Обновлена 6 марта 2025 г.
  • Соответствие ресурсов Application Load Balancer и Kubernetes
  • Идентификаторы ресурсов балансировщика в кластере Kubernetes

К Ingress-контроллеру Application Load Balancer для Managed Service for Kubernetes относятся два пода:

  • Основной под yc-alb-ingress-controller-* отвечает за создание и изменение ресурсов Application Load Balancer. Отслеживать работу с ресурсами можно по логам этого пода.

  • Под для проверок состояния yc-alb-ingress-controller-hc-* с контейнером, который принимает проверочные запросы от L7-балансировщика на TCP-порт 10501 и проверяет работоспособность подов kube-proxy на каждом узле кластера. Если kube-proxy работоспособен, то даже если приложение в конкретном поде не отвечает, Kubernetes перенаправит трафик в другой под с этим приложением или на другой узел.

    Такая схема проверки состояния реализована в Ingress-контроллере Application Load Balancer по умолчанию. Чтобы контролировать работу приложений на всех подах, вы можете настроить собственные проверки состояния.

Важно

Не изменяйте напрямую ресурсы Application Load Balancer, созданные основным подом контроллера. Любые изменения будут автоматически отменены. Вместо этого пользуйтесь стандартными способами управления кластером Managed Service for Kubernetes.

Основной под управляет архитектурой ресурсов Application Load Balancer по следующим правилам:

  • Балансировщики и HTTP-роутеры для приема трафика и его распределения между группами бэкендов создаются по ресурсам Ingress.

    Если у нескольких Ingress одинаковые значения аннотации ingress.alb.yc.io/group-name, они объединяются в один балансировщик.

    • Чтобы балансировщик принимал HTTPS-трафик, в поле spec.tls описания Ingress должны быть указаны доменные имена и идентификаторы сертификатов из Certificate Manager:

      spec:
        tls:
          - hosts:
              - <доменное_имя>
            secretName: yc-certmgr-cert-id-<идентификатор_сертификата>
      

      Где secretName — указание на сертификат из Yandex Certificate Manager.

      В этом случае для балансировщика будут созданы обработчики двух видов: одни будут принимать HTTPS-трафик на порте 443, а другие — перенаправлять запросы с HTTP (порт 80) на HTTPS с кодом состояния 301 Moved Permanently. При этом правила распределения трафика для тех же доменных имен, явно указанные в других Ingress, без поля spec.tls, будут иметь приоритет над перенаправлением с HTTP на HTTPS.

      Если сертификат пока не добавлен в Certificate Manager, укажите секрет Kubernetes с сертификатом в поле secretName. Тогда Ingress-контроллер Application Load Balancer автоматически добавит сертификат в Certificate Manager.

    • Если в описании Ingress нет поля spec.tls, для балансировщика будут созданы только обработчики для приема HTTP-трафика на порте 80.

    • Если в описании Ingress не заданы правила распределения входящего трафика по бэкендам, он будет перенаправляться на бэкенд по умолчанию.

  • Группы бэкендов, обрабатывающие полученный трафик, могут создаваться:

    • По сервисам Kubernetes, указанным в правилах Ingress напрямую. Этот способ полезен, если к маршруту нужно привязать простую группу бэкендов, состоящую из одного сервиса.

      В версиях ALB Ingress Controller до 0.2.0 каждая группа бэкендов соответствует связке параметров host, http.paths.path и http.paths.pathType в правилах Ingress. В версиях 0.2.0 и позднее группа бэкендов соответствует параметру backend.service. Из-за этого при обновлении ALB Ingress Controller могут возникнуть коллизии. Чтобы избежать их, узнайте, применимы ли ограничения при обновлении к вашей инфраструктуре.

    • По ресурсам HttpBackendGroup, позволяющим явно описывать группы бэкендов. Это custom resources из группы API alb.yc.io, предоставляемой Ingress-контроллером.

      Указывать на HttpBackendGroup, как и на сервисы, нужно в правилах Ingress (spec.rules[*].http.paths[*].backend.resource).

      При использовании HttpBackendGroup доступна расширенная функциональность Application Load Balancer. Бэкендами в такой группе могут быть сервисы Kubernetes и бакеты Yandex Object Storage. Также в HttpBackendGroup можно указывать относительные веса бэкендов для пропорционального распределения трафика между ними.

    • По ресурсам GrpcBackendGroup, позволяющим явно описывать группы бэкендов. Это custom resources из группы API alb.yc.io, предоставляемой Ingress-контроллером.

      Указывать на GrpcBackendGroup, как и на сервисы, нужно в правилах Ingress (spec.rules[*].http.paths[*].backend.resource).

  • На бэкендах развертываются сервисы, указанные в Ingress или HttpBackendGroup/GrpcBackendGroup. Они настраиваются с помощью ресурсов Service.

    Важно

    Сервисы Kubernetes, используемые в качестве бэкендов (указанные в правилах Ingress напрямую или в HttpBackendGroup/GrpcBackendGroup), должны иметь тип NodePort. Подробнее об этом типе см. в документации Kubernetes.

Соответствие ресурсов Application Load Balancer и Kubernetes

Application Load Balancer Kubernetes
Балансировщик Набор ресурсов Ingress с одинаковыми значениями аннотации ingress.alb.yc.io/group-name
Виртуальные хосты HTTP-роутера Ingress.spec.rules
Маршруты виртуального хоста Ingress.spec.rules[*].http.paths
Группа бэкендов HttpBackendGroup/GrpcBackendGroup или набор сервисов
Целевая группа Группа узлов кластера

Идентификаторы ресурсов балансировщика в кластере Kubernetes

Идентификаторы ресурсов балансировщика Application Load Balancer, развернутого по конфигурации Ingress, указываются в пользовательском ресурсе IngressGroupStatus кластера Managed Service for Kubernetes. Чтобы просмотреть их:

Консоль управления
kubectl CLI
  1. В консоли управления выберите каталог, в котором создан нужный кластер Managed Service for Kubernetes.
  2. В списке сервисов выберите Managed Service for Kubernetes.
  3. Выберите кластер Managed Service for Kubernetes, по конфигурации Ingress которого был создан балансировщик.
  4. На странице кластера Managed Service for Kubernetes перейдите на вкладку  Пользовательские ресурсы.
  5. Выберите ingressgroupstatuses.alb.yc.io и перейдите на вкладку Ресурсы.
  6. Выберите ресурс с именем группы ресурсов Ingress, указанным в аннотации ingress.alb.yc.io/group-name, и перейдите на вкладку YAML.
  1. Установите kubectl и настройте его на работу с созданным кластером.

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

    kubectl describe IngressGroupStatus
    

Была ли статья полезна?

Предыдущая
Обзор
Следующая
Установить Ingress-контроллер
Проект Яндекса
© 2025 ООО «Яндекс.Облако»