Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Истории успеха
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Доступны в регионе
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • AI Studio
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Партнёрская программа
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Истории успеха
  • Документация
  • Блог
Проект Яндекса
© 2025 ТОО «Облачные Сервисы Казахстан»
Yandex Managed Service for Kubernetes
  • Сопоставление с другими сервисами Yandex Cloud
  • Начало работы
    • Все инструкции
    • Подключение к узлу по SSH
    • Подключение к узлу через OS Login
    • Обновление Kubernetes
    • Настройка автомасштабирования
    • Подключение Terraform-провайдера Kubernetes
      • Основы работы с Cloud Marketplace
      • Установка Crossplane
      • Установка Gatekeeper
      • Установка Gateway API
      • Установка Gwin
      • Установка Ingress-контроллера Application Load Balancer
      • Обновление Ingress-контроллера Application Load Balancer
      • Установка KEDA
      • Установка Kyverno & Kyverno Policies
      • Установка Metrics Provider
      • Установка NodeLocal DNS
    • Подключение внешних узлов к кластеру
    • Настройка WireGuard-шлюзов для подключения внешних узлов к кластеру
    • Настройка IPSec-шлюзов для подключения внешних узлов к кластеру
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • История изменений
  • Обучающие курсы

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

  • Перед началом работы
  • Установка с помощью Yandex Cloud Marketplace
  • Установка с помощью Helm-чарта
  • Пример использования приложения
  • См. также
  1. Пошаговые инструкции
  2. Установка приложений из Cloud Marketplace
  3. Установка KEDA

Установка KEDA с поддержкой Yandex Monitoring

Статья создана
Yandex Cloud
Обновлена 18 сентября 2025 г.
  • Перед началом работы
  • Установка с помощью Yandex Cloud Marketplace
  • Установка с помощью Helm-чарта
  • Пример использования приложения
  • См. также

Важно

Функциональность доступна только в регионе Россия.

KEDA — приложение, которое выполняет автомасштабирование ресурсов Kubernetes на основе мониторинга нагрузки.

Приложение KEDA:

  • Интегрирует автомасштабирование Kubernetes с Yandex Monitoring.
  • Позволяет масштабировать приложения на основе метрик из Monitoring, например метрик Application Load Balancer или управляемых баз данных.
  • Поддерживает настройку временных окон, агрегирование и обработку NaN-значений.

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

  1. Создайте сервисный аккаунт:

    yc iam service-account create --name keda-sa
    
  2. Назначьте роль monitoring.viewer сервисному аккаунту, созданному ранее:

    yc resource-manager folder add-access-binding \
      --id <идентификатор_каталога> \
      --service-account-name keda-sa \
      --role monitoring.viewer
    

    Идентификатор каталога можно получить со списком каталогов.

  3. Создайте авторизованный ключ для сервисного аккаунта, созданного ранее, и сохраните его в файл authorized-key.json:

    yc iam key create \
      --service-account-name keda-sa \
      --output authorized-key.json
    
  4. Убедитесь, что группы безопасности для кластера Managed Service for Kubernetes и его групп узлов настроены корректно. Если отсутствует какое-либо из правил — добавьте его.

    Важно

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

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

Установка с помощью Yandex Cloud MarketplaceУстановка с помощью Yandex Cloud Marketplace

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

  2. Нажмите на имя нужного кластера Managed Service for Kubernetes и выберите вкладку Marketplace.

  3. В разделе Доступные для установки приложения выберите KEDA с поддержкой Yandex Monitoring и нажмите кнопку Перейти к установке.

  4. Задайте настройки приложения:

    • Пространство имен — создайте новое пространство имен keda-system. Если вы оставите пространство имен по умолчанию, KEDA может работать некорректно.
    • Название приложения — укажите название приложения.
    • Ключ сервисного аккаунта — скопируйте в это поле содержимое файла authorized-key.json.
  5. Нажмите кнопку Установить.

  6. Дождитесь перехода приложения в статус Deployed.

  7. Создайте ресурс ScaledObject с настройками автомасштабирования ресурсов:

    apiVersion: keda.sh/v1alpha1
    kind: ScaledObject
    metadata:
      name: <имя_ресурса>
    spec:
      scaleTargetRef:
        name: <имя_ресурса_для_автомасштабирования>
      pollingInterval: <интервал_проверки_событий_мониторинга>
      cooldownPeriod: <период_ожидания_после_события>
      minReplicaCount: <минимальное_количество_реплик_для_автомасштабирования>
      maxReplicaCount: <максимальное_количество_реплик_для_автомасштабирования>
      triggers:
      - type: external
        metadata:
          scalerAddress: keda-external-scaler-yc.keda-system.svc.cluster.local:8080
          query: <запрос_метрики_Yandex_Monitoring>
          folderId: "<идентификатор_каталога>"
          targetValue: "<целевое_значение_метрики>"
          downsampling.disabled: <включить_режим_прореживания_данных>
          downsampling.gridAggregation: "<функция_агрегации_данных>"
          downsampling.gridInterval: "<ширина_временного_окна_прореживания>"
          downsampling.maxPoints: <максимальное_количество_точек>
          downsampling.gapFilling: <заполнение_данных>
    
          timeWindow: "<окно_временного_интервала>"
          timeWindowOffset: "<отступ_временного_окна>"
     
          logLevel: "<уровень_логирования>"
          logMetrics: "<разрешить_логирование_запросов_Monitoring>"
          logAggregation: "<разрешить_логирование_агрегации_данных>"
    

    Обязательные метаданные в поле triggers:

    • scalerAddress — адрес сервиса автомасштабирования. Всегда keda-external-scaler-yc.keda-system.svc.cluster.local:8080.
    • query — запрос метрики Monitoring.
    • folderId — идентификатор каталога, в котором будет работать провайдер.
    • targetValue — целевое значение метрики, при превышении которого добавляется под для реплики.

    Параметры прореживания (downsampling). Для работы автомасштабирования нужно выбрать хотя бы один из параметров:

    • downsampling.gridAggregation — функция агрегации данных. Возможные значения: MAX, MIN, SUM, AVG, LAST, COUNT. Значение по умолчанию — AVG.

    • downsampling.gapFilling — настройки заполнения пропусков в данных:

      • NULL — возвращает null в качестве значения метрики и timestamp в качестве временной метки.
      • NONE — не возвращает значений.
      • PREVIOUS — возвращает значение из предыдущей точки.
    • downsampling.maxPoints — максимальное количество точек, которое будет получено в ответе на запрос. Значение параметра должно быть больше 10.

    • downsampling.gridInterval — ширина временного окна (сетки) в миллисекундах. Используется для прореживания: точки внутри окна объединяются в одну при помощи функции агрегации. Значение параметра должно быть больше 0.

    • downsampling.disabled — отключение прореживания данных. Возможные значения: true или false.

      Примечание

      Используйте только один из параметров downsampling.maxPoints, downsampling.gridInterval или downsampling.disabled. Подробнее о параметрах прореживания см. в документации API.

    Параметры временного окна:

    • timeWindow — временной период, в котором рассчитывается функция агрегации (в формате DdHhMmSs, например 5d10h30m20s).
    • timeWindowOffset — задержка вычисления функции во временном окне.

    Параметры логирования:

    • logLevel — уровень логирования. Возможные значения: debug, info, warn, error, none. Значение по умолчанию — info.
    • logMetrics — разрешить логирование запросов Monitoring: true или false. Значение по умолчанию — false.
    • logAggregation — разрешить логирование агрегации данных: true или false. Значение по умолчанию — false.

    Подробнее о параметрах ресурса ScaledObject см. в документации проекта на Github.

Установка с помощью Helm-чартаУстановка с помощью Helm-чарта

  1. Установите менеджер пакетов Helm версии не ниже 3.8.0.

  2. Для установки Helm-чарта с KEDA выполните команду:

    helm pull oci://cr.yandexcloud.kz/yc-marketplace/yandex-cloud/keda/keda-external-scaler-yc \
      --version 1.1.1 \
      --untar && \
    helm install \
      --namespace keda-system \
      --create-namespace \
      --set-file secret.data=./authorized-key.json \
      --set keda.enabled=true \
      keda ./keda
    

    Если вы укажете в параметре namespace пространство имен по умолчанию, KEDA может работать некорректно.

    Примечание

    Если вы используете версию Helm ниже 3.8.0, добавьте в начало команды строку export HELM_EXPERIMENTAL_OCI=1 && \, чтобы включить поддержку Open Container Initiative (OCI) в клиенте Helm.

Пример использования приложенияПример использования приложения

  1. Разверните приложение nginx в кластере Managed Service for Kubernetes.

  2. Установите приложение ALB Ingress Controller и ресурс Ingress для приложения nginx.

  3. Создайте ресурс ScaledObject с настройками автомасштабирования подов веб-приложения по метрикам Application Load Balancer:

    apiVersion: keda.sh/v1alpha1
    kind: ScaledObject
    metadata:
      name: demo-app-scaler
    spec:
      scaleTargetRef:
        name: <имя_ресурса_Deployment>
      pollingInterval: 30
      cooldownPeriod: 60
      minReplicaCount: 1
      maxReplicaCount: 20
      triggers:
      - type: external
        metadata:
          scalerAddress: keda-external-scaler-yc.keda-system.svc.cluster.local:8080
          query: |
           alias(replace_nan(series_sum("load_balancer.requests_count_per_second"{
           service="application-load-balancer", 
           load_balancer="<идентификатор_балансировщика>", 
           http_router="*", virtual_host="*", 
           route="<идентификатор_маршрута>", 
           backend_group="*", backend="*", 
           zone="*", code="total"}), 0), "Total requests count")
          folderId: "<идентификатор_каталога>"
          targetValue: "<целевое_значение_метрики>"
          downsampling.gridAggregation: "AVG"
          downsampling.gridInterval: "120000"
    
          timeWindow: "2m"
          timeWindowOffset: "30s"
     
          logLevel: "debug"
          logMetrics: "true"
          logAggregation: "true"
    

См. такжеСм. также

  • Документация KEDA.
  • KEDA с поддержкой Yandex Monitoring на GitHub.

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

Предыдущая
Обновление Ingress-контроллера Application Load Balancer
Следующая
Установка Kyverno & Kyverno Policies
Проект Яндекса
© 2025 ТОО «Облачные Сервисы Казахстан»