Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Managed Service for Kubernetes
  • Сопоставление с другими сервисами Yandex Cloud
  • Начало работы
    • Все руководства
    • Создание нового Kubernetes-проекта в Yandex Cloud
    • Создание кластера Kubernetes без доступа в интернет
    • Запуск рабочих нагрузок с GPU
    • Использование групп узлов c GPU без предустановленных драйверов
    • Установка Time-Slicing GPUs
    • Миграция ресурсов в другую зону доступности
    • Использование модулей Yandex Cloud в Terraform
    • Шифрование секретов в Managed Service for Kubernetes
      • Интеграция с Argo CD
      • Интеграция с Crossplane
      • Синхронизация с секретами Yandex Lockbox
      • Настройка Fluent Bit для работы с Cloud Logging
      • Настройка Gateway API
      • Настройка L7-балансировщика Application Load Balancer с помощью Ingress-контроллера
      • Настройка логирования для L7-балансировщика Application Load Balancer с помощью Ingress-контроллера
      • Создание L7-балансировщика с профилем безопасности Smart Web Security через Ingress-контроллер Application Load Balancer
      • Проверка состояния приложений в кластере Managed Service for Kubernetes с помощью L7-балансировщика Application Load Balancer
      • Использование Jaeger для трассировки запросов в Managed Service for YDB
      • Настройка Kyverno & Kyverno Policies
      • Использование Metrics Provider для трансляции метрик
      • Редактирование изображений для сайтов с помощью Thumbor
      • Использование Istio
      • Использование HashiCorp Vault для хранения секретов
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • История изменений
  • Обучающие курсы

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

  • Необходимые платные ресурсы
  • Подготовьте облако к работе
  • Подготовьте инфраструктуру
  • Установите Ingress-контроллер Application Load Balancer
  • Установите дополнительные зависимости
  • Создайте Docker-образ
  • Разверните тестовое приложение
  • Подготовьте адрес для L7-балансировщика
  • Создайте ресурсы Ingress и HttpBackendGroup
  • Проверьте результат
  • Удалите созданные ресурсы
  1. Практические руководства
  2. Использование продуктов Cloud Marketplace
  3. Проверка состояния приложений в кластере Managed Service for Kubernetes с помощью L7-балансировщика Application Load Balancer

Проверка состояния приложений в кластере Yandex Managed Service for Kubernetes с помощью L7-балансировщика Yandex Application Load Balancer

Статья создана
Yandex Cloud
Улучшена
mmerihsesh
Обновлена 28 апреля 2025 г.
  • Необходимые платные ресурсы
  • Подготовьте облако к работе
    • Подготовьте инфраструктуру
    • Установите Ingress-контроллер Application Load Balancer
    • Установите дополнительные зависимости
  • Создайте Docker-образ
  • Разверните тестовое приложение
  • Подготовьте адрес для L7-балансировщика
  • Создайте ресурсы Ingress и HttpBackendGroup
  • Проверьте результат
  • Удалите созданные ресурсы

Вы можете автоматически проверять работоспособность приложений, которые развернуты в кластере Managed Service for Kubernetes с помощью Ingress-контроллера Application Load Balancer.

Ingress-контроллер, установленный в кластер, разворачивает L7-балансировщик со всеми необходимыми ресурсами Application Load Balancer, основываясь на конфигурации созданных вами ресурсов Ingress и HttpBackendGroup.

L7-балансировщик автоматически проверяет работоспособность приложения в кластере. В зависимости от результатов проверки L7-балансировщик открывает или закрывает внешний трафик к бэкенду (ресурсу Service). Подробнее см. в Проверки состояния.

По умолчанию Ingress-контроллер Application Load Balancer принимает от L7-балансировщика запросы для проверок состояния приложения на TCP-порт 10501 и проверяет работоспособность подов kube-proxy на каждом узле кластера. Суть проверки состояния заключается в том, что когда kube-proxy работоспособен, то даже если приложение в конкретном поде не отвечает, Kubernetes перенаправит трафик в другой под с этим приложением или на другой узел.

С помощью этого руководства вы настроите собственные проверки состояния приложения в параметрах ресурса HttpBackendGroup и откроете для этих проверок отдельный порт на узлах кластера в параметрах ресурса Service типа NodePort.

Результат проверок состояния приложения можно будет посмотреть в консоли управления.

Примечание

Настроить проверки состояния приложения также можно с помощью аннотации ingress.alb.yc.io/health-checks ресурса Service.

Чтобы развернуть приложение в кластере Managed Service for Kubernetes и настроить к нему доступ и проверки состояния через L7-балансировщик Application Load Balancer:

  1. Подготовьте облако к работе.
  2. Создайте Docker-образ.
  3. Разверните тестовое приложение.
  4. Подготовьте адрес для L7-балансировщика.
  5. Создайте ресурсы Ingress и HttpBackendGroup.
  6. Проверьте результат.

Если созданные ресурсы вам больше не нужны, удалите их.

Необходимые платные ресурсыНеобходимые платные ресурсы

В стоимость поддержки описываемого решения входят:

  • Плата за DNS-зону и DNS-запросы (см. тарифы Cloud DNS).
  • Плата за кластер Managed Service for Kubernetes: использование мастера и исходящий трафик (см. тарифы Managed Service for Kubernetes).
  • Плата за узлы кластера (ВМ): использование вычислительных ресурсов, операционной системы и хранилища (см. тарифы Compute Cloud).
  • Плата за использование вычислительных ресурсов L7-балансировщика (см. тарифы Application Load Balancer).
  • Плата за публичные IP-адреса для узлов кластера и L7-балансировщика (см. тарифы Virtual Private Cloud).
  • Плата за использование хранилища Container Registry.

Подготовьте облако к работеПодготовьте облако к работе

Подготовьте инфраструктуруПодготовьте инфраструктуру

Вручную
Terraform
  1. Создайте группы безопасности для кластера Managed Service for Kubernetes и входящих в него групп узлов.

    Также настройте группы безопасности, необходимые для работы Application Load Balancer.

    Приложение будет доступно на узлах кластера Managed Service for Kubernetes на порте 30080. Проверка состояния приложения будет доступна на порте 30081. Убедитесь, что эти порты открыты для L7-балансировщика в группе безопасности группы узлов. Вы также можете сделать эти порты доступными из интернета.

    Важно

    От настройки групп безопасности зависит работоспособность и доступность кластера, а также запущенных в нем сервисов и приложений.

  2. Создайте кластер Managed Service for Kubernetes. При создании укажите группы безопасности, подготовленные ранее.

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

  3. Создайте группу узлов. Выделите ей публичный адрес, чтобы предоставить доступ в интернет и возможность скачивать Docker-образы и компоненты. Укажите группы безопасности, подготовленные ранее.

  4. Создайте реестр Yandex Container Registry.

  1. Если у вас еще нет Terraform, установите его.

  2. Получите данные для аутентификации. Вы можете добавить их в переменные окружения или указать далее в файле с настройками провайдера.

  3. Настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его.

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

  5. Скачайте в ту же рабочую директорию файл конфигурации k8s-custom-health-checks.tf.

    В этом файле описаны:

    • сеть;
    • подсеть;
    • группы безопасности, необходимые для кластера и группы узлов Managed Service for Kubernetes, а также для балансировщика Application Load Balancer;
    • сервисный аккаунт, необходимый для работы кластера Kubernetes;
    • кластер Kubernetes;
    • группа узлов Kubernetes;
    • реестр Yandex Container Registry.
  6. Укажите в файле k8s-custom-health-checks.tf:

    • folder_id — идентификатор облачного каталога, такой же, как в настройках провайдера.
    • k8s_version — версия Kubernetes. Доступные версии перечислены в разделе Релизные каналы.
  7. Проверьте корректность файлов конфигурации Terraform с помощью команды:

    terraform validate
    

    Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  8. Создайте необходимую инфраструктуру:

    1. Выполните команду для просмотра планируемых изменений:

      terraform plan
      

      Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.

    2. Если вас устраивают планируемые изменения, внесите их:

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

        terraform apply
        
      2. Подтвердите изменение ресурсов.

      3. Дождитесь завершения операции.

    В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления.

Установите Ingress-контроллер Application Load BalancerУстановите Ingress-контроллер Application Load Balancer

Установите приложение ALB Ingress Controller согласно инструкции в отдельном пространстве имен yc-alb. Далее в этом пространстве имен будут созданы все нужные ресурсы Kubernetes.

Установите дополнительные зависимостиУстановите дополнительные зависимости

  1. Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

    По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

  2. Установите kubectl и настройте его на работу с созданным кластером.

    Если для кластера не предоставлен публичный адрес и kubectl настроен через внутренний адрес кластера, выполняйте команды kubectl на ВМ Yandex Cloud, находящейся в одной сети с кластером.

  3. Установите Docker.

  4. Аутентифицируйтесь в Yandex Container Registry с помощью Docker Credential helper.

Создайте Docker-образСоздайте Docker-образ

Исходные файлы для создания Docker-образа размещены в репозитории yc-mk8s-alb-ingress-health-checks.

Docker-образ будет создан из файла app/Dockerfile и будет содержать код тестового приложения из файла app/healthchecktest.go. Из полученного Docker-образа вы развернете приложение в кластере Managed Service for Kubernetes.

Приложение будет отвечать на HTTP-запросы следующим образом в зависимости от порта пода:

  • 80 — возвращать в теле ответа path-параметры запроса, например /test-path. Это основная функциональность приложения, которая будет доступна через L7-балансировщик.
  • 8080 — возвращать в теле ответа сообщение OK. Эта функциональность будет использоваться для проверки состояния приложения.

Успешное выполнение запроса будет сопровождаться HTTP-кодом 200 OK.

Чтобы создать Docker-образ:

  1. Склонируйте репозиторий yc-mk8s-alb-ingress-health-checks:

    git clone git@github.com:yandex-cloud-examples/yc-mk8s-alb-ingress-health-checks.git
    
  2. В терминале перейдите в корень директории с репозиторием.

  3. Получите идентификатор реестра Container Registry. Его можно запросить вместе со списком реестров в каталоге.

  4. В переменную окружения добавьте название Docker-образа, который будет создан:

    export TEST_IMG=cr.yandex/<идентификатор_реестра>/example-app1:latest
    
  5. Соберите Docker-образ:

    docker build -t ${TEST_IMG} -f ./app/Dockerfile .
    

    В команде указан путь для корневой директории репозитория.

  6. Загрузите Docker-образ в реестр:

    docker push ${TEST_IMG}
    

    Если не получается загрузить образ, выполните следующие действия:

    • Убедитесь, что вы аутентифицировались в Container Registry с помощью Docker Credential helper.
    • Настройте доступ к реестру — предоставьте разрешение PUSH на загрузку Docker-образов для IP-адреса вашего компьютера.

Разверните тестовое приложениеРазверните тестовое приложение

Соберите тестовое приложение из созданного Docker-образа и конфигурационного файла app/testapp.yaml.

Файл содержит описание Kubernetes-ресурсов: Deployment и Service типа NodePort.

Ресурс Service содержит описание портов, через которые приложение будет доступно на узлах кластера:

  • spec.ports.name: http — порт для доступа к основной функциональности приложения. 80 на поде и 30080 на узле.
  • spec.ports.name: health — порт для проверок состояния приложения. 8080 на поде и 30081 на узле.

Чтобы собрать тестовое приложение:

  1. Укажите значение переменной окружения TEST_IMG в поле spec.template.spec.containers.image в файле app/testapp.yaml. Получите это значение с помощью команды:

    printenv TEST_IMG
    
  2. Создайте приложение из файла app/testapp.yaml:

    kubectl apply -f ./app/testapp.yaml --namespace=yc-alb
    

    В команде указан путь для корневой директории репозитория.

  3. Убедитесь, что поды с приложением запустились:

    kubectl get po --namespace=yc-alb
    

    Результат:

    NAME                               READY   STATUS    RESTARTS   AGE
    alb-demo-1-54b95979b4-***          1/1     Running   0          71s
    alb-demo-1-54b95979b4-***          1/1     Running   0          71s
    yc-alb-ingress-controller-***      1/1     Running   0          11m
    yc-alb-ingress-controller-hc-***   1/1     Running   0          11m
    
  4. Протестируйте функциональность приложения, указав в запросе IP-адрес узла кластера Managed Service for Kubernetes. Вы можете узнать IP-адрес узла в консоли управления.

    • Основная функциональность:

      curl --include http://<IP-адрес_узла>:30080/test-path
      

      Результат:

      HTTP/1.1 200 OK
      Date: Thu, 18 Jul 2024 11:55:52 GMT
      Content-Length: 10
      Content-Type: text/plain; charset=utf-8
      
      /test-path%
      
    • Проверка состояния приложения:

      curl --include http://<IP-адрес_узла>:30081
      

      Результат:

      HTTP/1.1 200 OK
      Date: Thu, 18 Jul 2024 12:00:57 GMT
      Content-Length: 2
      Content-Type: text/plain; charset=utf-8
      
      OK%
      

Подготовьте адрес для L7-балансировщикаПодготовьте адрес для L7-балансировщика

По полученному адресу приложение будет доступно из интернета.

Чтобы подготовить адрес для балансировщика:

Вручную
Terraform
  1. Зарезервируйте статический публичный IP-адрес для балансировщика Application Load Balancer.

  2. Зарегистрируйте публичную доменную зону и делегируйте домен.

  3. Чтобы привязать адрес к домену, создайте A-запись для делегированного домена. В качестве значения записи укажите зарезервированный IP-адрес.

  4. Убедитесь, что A-запись добавилась:

    host <домен>
    

    Результат:

    <домен> has address <IP-адрес>
    
  1. Расположите файл конфигурации address-for-k8s-health-checks.tf в той же рабочей директории, где находится файл k8s-custom-health-checks.tf.

    В файле address-for-k8s-health-checks.tf описаны:

    • статический публичный IP-адрес;
    • публичная DNS-зона;
    • A-запись для этой зоны, чтобы привязать зарезервированный IP-адрес к делегированному домену.
  2. Проверьте корректность файлов конфигурации Terraform с помощью команды:

    terraform validate
    

    Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  3. Создайте необходимую инфраструктуру:

    1. Выполните команду для просмотра планируемых изменений:

      terraform plan
      

      Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.

    2. Если вас устраивают планируемые изменения, внесите их:

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

        terraform apply
        
      2. Подтвердите изменение ресурсов.

      3. Дождитесь завершения операции.

    В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления.

  4. Убедитесь, что A-запись добавилась:

    host <домен>
    

    Результат:

    <домен> has address <IP-адрес>
    

Создайте ресурсы Ingress и HttpBackendGroupСоздайте ресурсы Ingress и HttpBackendGroup

На основании ресурсов Ingress и HttpBackendGroup Ingress-контроллер развернет L7-балансировщик со всеми необходимыми ресурсами Application Load Balancer.

Конфигурационные файлы ingress.yaml и httpbackendgroup.yaml для указанных ресурсов расположены в репозитории yc-mk8s-alb-ingress-health-checks.

Настройки пользовательских проверок состояния приложения задаются в ресурсе HttpBackendGroup в параметре spec.backends.healthChecks.

Чтобы создать ресурсы:

  1. В файле ingress.yaml укажите следующие значения для аннотаций:

    • ingress.alb.yc.io/subnets — одна или несколько подсетей, в которых будет расположен L7-балансировщик Application Load Balancer.
    • ingress.alb.yc.io/security-groups — одна или несколько групп безопасности для балансировщика. Если параметр не задан, используется группа безопасности по умолчанию. Хотя бы одна из групп безопасности должна разрешать исходящее TCP-соединение к порту 10501 в подсети группы узлов Managed Service for Kubernetes или в ее группу безопасности.
    • ingress.alb.yc.io/external-ipv4-address — предоставление публичного доступа к балансировщику из интернета. Укажите зарезервированный ранее статический публичный IP-адрес.
  2. В этом же файле ingress.yaml укажите делегированный домен в параметре spec.rules.host.

  3. Чтобы создать ресурсы Ingress и HttpBackendGroup, выполните следующую команду из корня директории с репозиторием:

    kubectl apply -f ingress.yaml --namespace=yc-alb &&
    kubectl apply -f httpbackendgroup.yaml --namespace=yc-alb
    
  4. Дождитесь создания ресурсов, развертывания балансировщика и назначения ему публичного IP-адреса, это может занять несколько минут.

    Чтобы отслеживать создание балансировщика и убедиться в отсутствии ошибок, откройте логи пода, в котором запущен процесс создания:

    1. В консоли управления перейдите на страницу каталога и выберите сервис Managed Service for Kubernetes.

    2. Нажмите на имя нужного кластера и на панели слева выберите Рабочая нагрузка.

    3. Выберите под yc-alb-ingress-controller-* (не yc-alb-ingress-controller-hc-*), в котором запущен процесс создания ресурсов.

    4. На странице пода перейдите на вкладку Логи.

      В режиме реального времени записываются и отображаются логи о создании балансировщика. Если возникла ошибка во время создания, она появится в логах.

Проверьте результатПроверьте результат

  1. Убедитесь, что балансировщик создан. Для этого выполните команду и проверьте, что в поле ADDRESS в выводе команды появилось значение:

    kubectl get ingress alb-demo --namespace=yc-alb
    

    Результат:

    NAME       CLASS    HOSTS     ADDRESS      PORTS   AGE
    alb-demo   <none>   <домен>   <IP-адрес>   80      15h
    
  2. Проверьте доступность развернутого приложения через L7-балансировщик:

    curl --include http://<домен>/test-path
    

    Результат:

    HTTP/1.1 200 OK
    date: Thu, 18 Jul 2024 12:23:51 GMT
    content-length: 10
    content-type: text/plain; charset=utf-8
    server: ycalb
    
    /test-path%
    

    Примечание

    Если ресурс недоступен по указанному URL, то убедитесь, что группы безопасности для кластера Managed Service for Kubernetes и его групп узлов настроены корректно. Если отсутствует какое-либо из правил — добавьте его.

  3. Проверьте, что работают проверки состояния приложения:

    Консоль управления
    1. В консоли управления перейдите на страницу каталога и выберите сервис Application Load Balancer.
    2. Нажмите на имя нужного балансировщика и на панели слева выберите Проверки состояния.
    3. Проверьте состояние целевых ресурсов. Если они в статусе HEALTHY, значит, приложение доступно и работает.

Удалите созданные ресурсыУдалите созданные ресурсы

Некоторые ресурсы платные. Удалите ресурсы, которые вы больше не будете использовать, чтобы не платить за них:

  1. L7-балансировщик Application Load Balancer.
  2. HTTP-роутер Application Load Balancer.
  3. Группу бэкендов Application Load Balancer.
  4. Целевую группу Application Load Balancer.
  5. Группу узлов Managed Service for Kubernetes.
  6. Кластер Managed Service for Kubernetes.
  7. Реестр Container Registry.
  8. Публичную доменную зону Cloud DNS.
  9. Группы безопасности Virtual Private Cloud.
  10. Статический публичный IP-адрес Virtual Private Cloud.

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

Предыдущая
Создание L7-балансировщика с профилем безопасности Smart Web Security через Ingress-контроллер Application Load Balancer
Следующая
Использование Jaeger для трассировки запросов в Managed Service for YDB
Проект Яндекса
© 2025 ООО «Яндекс.Облако»