Поделиться через


Устранение неполадок с надстройкой автоматического масштабирования на основе событий Kubernetes

В этой статье описывается устранение неполадок надстройки Kubernetes На основе событий автомасштабирования (KEDA) в microsoft Служба Azure Kubernetes (AKS). При развертывании надстройки KEDA AKS могут возникнуть проблемы, связанные с конфигурацией автомасштабирования приложения. Эта статья поможет вам устранить ошибки и устранить распространенные проблемы, которые влияют на надстройку, но не рассматриваются в официальном руководстве по часто задаваемым вопросам и устранению неполадок KEDA.

Предварительные требования

Поддержка надстройки KEDA

Надстройка KEDA соответствует модели поддержки, аналогичной другим надстройкам AKS. Поддерживаются все масштабировщики Azure KEDA , но AKS не поддерживает сторонние масштабировщики. Если у вас возникли проблемы со сторонними масштабировщиками, откройте проблему в официальном репозитории KEDA GitHub.

Контрольный список для устранения неполадок

Проверьте компоненты KEDA и устраните их с помощью инструкций, приведенных в следующих разделах.

Проверка доступной версии KEDA

Вы можете определить доступную версию KEDA с помощью команды kubectl get :

kubectl get crd/scaledobjects.keda.sh -o custom-columns='APP:.metadata.labels.app\.kubernetes\.io/version'

В выходных данных команды отображается установленная версия KEDA:

APP
2.8.1

Убедитесь, что брандмауэр кластера настроен правильно.

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

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

1.6545953013458195e+09 ERROR Failed to get API Group-Resources {"error": "Get \"https://10.0.0.1:443/api?timeout=32s\": EOF"}
sigs.k8s.io/controller-runtime/pkg/cluster.New
/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.11.2/pkg/cluster/cluster.go:160
sigs.k8s.io/controller-runtime/pkg/manager.New
/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.11.2/pkg/manager/manager.go:313
main.main
/workspace/main.go:87
runtime.main
/usr/local/go/src/runtime/proc.go:255
1.6545953013459463e+09 ERROR setup unable to start manager {"error": "Get \"https://10.0.0.1:443/api?timeout=32s\": EOF"}
main.main
/workspace/main.go:97
runtime.main
/usr/local/go/src/runtime/proc.go:255

В разделе сервера метрик вы можете обнаружить, что KEDA не удается запустить:

I0607 09:53:05.297924 1 main.go:147] keda_metrics_adapter "msg"="KEDA Version: 2.7.1"
I0607 09:53:05.297979 1 main.go:148] keda_metrics_adapter "msg"="KEDA Commit: "
I0607 09:53:05.297996 1 main.go:149] keda_metrics_adapter "msg"="Go Version: go1.17.9"
I0607 09:53:05.298006 1 main.go:150] keda_metrics_adapter "msg"="Go OS/Arch: linux/amd64"
E0607 09:53:15.344324 1 logr.go:279] keda_metrics_adapter "msg"="Failed to get API Group-Resources" "error"="Get \"https://10.0.0.1:443/api?timeout=32s\": EOF"
E0607 09:53:15.344360 1 main.go:104] keda_metrics_adapter "msg"="failed to setup manager" "error"="Get \"https://10.0.0.1:443/api?timeout=32s\": EOF"
E0607 09:53:15.344378 1 main.go:209] keda_metrics_adapter "msg"="making provider" "error"="Get \"https://10.0.0.1:443/api?timeout=32s\": EOF"
E0607 09:53:15.344399 1 main.go:168] keda_metrics_adapter "msg"="unable to run external metrics adapter" "error"="Get \"https://10.0.0.1:443/api?timeout=32s\": EOF"

Этот сценарий, вероятно, означает, что надстройка KEDA не может запуститься из-за неправильно настроенного брандмауэра. Чтобы убедиться, что KEDA работает правильно, настройте брандмауэр в соответствии с правилами глобальной сети Azure.

Включение надстройки для кластеров с самостоятельно управляемыми установками KEDA с открытым кодом

Теоретически keda можно установить много раз, хотя Kubernetes позволяет установить только один сервер метрик. Однако мы не рекомендуем использовать несколько установок, так как будет работать только одна установка.

При установке надстройки KEDA в кластере AKS предыдущая установка KEDA с открытым кодом будет переопределена, и надстройка возьмет на себя управление. В этом сценарии настройка и настройка самоустановленного развертывания KEDA будут потеряны и больше не будут применяться.

Хотя существующее автомасштабирование может продолжать функционировать, эта ситуация представляет риск. Надстройка KEDA будет настроена по-разному и не будет поддерживать такие функции, как управляемое удостоверение. Чтобы предотвратить возникновение ошибок во время установки, рекомендуется удалить существующие установки KEDA перед включением надстройки KEDA.

Чтобы определить, какой адаптер метрик используется KEDA, выполните kubectl get команду :

kubectl get APIService/v1beta1.external.metrics.k8s.io -o custom-columns='NAME:.spec.service.name,NAMESPACE:.spec.service.namespace'

В обзоре показаны служба и пространство имен, которые Kubernetes будет использовать для получения метрик:

NAME                              NAMESPACE
keda-operator-metrics-apiserver   kube-system

Предупреждение

Если пространство имен не kube-systemявляется , надстройка AKS игнорируется, и используется другой сервер метрик.

Перезапуск модулей pod оператора KEDA при неправильном внедрении удостоверения рабочей нагрузки

Если вы используете Идентификация рабочей нагрузки Microsoft Entra и включите KEDA перед использованием Идентификация рабочей нагрузки, необходимо перезапустить модули pod оператора KEDA. Это гарантирует внедрение правильных переменных среды. Для этого выполните следующие действия:

  1. Перезапустите модули pod, выполнив следующую команду:

    kubectl rollout restart deployment keda-operator -n kube-system
    
  2. Получите модули pod оператора KEDA, выполнив следующую команду, а затем найдите объекты pod с именами, начинаемыми с 'keda-operator'.

    kubectl get pod -n kube-system
    
  3. Чтобы убедиться, что переменные среды успешно внедрены, выполните следующую команду:

    kubectl describe pod <keda-operator-pod-name> -n kube-system
    

    Если переменные успешно внедрены, в разделе Среда должны отобразиться значения для AZURE_TENANT_ID, AZURE_FEDERATED_TOKEN_FILEи AZURE_AUTHORITY_HOST .

Заявление об отказе от ответственности за сведения о продуктах сторонних производителей

В этой статье упомянуты программные продукты независимых производителей. Корпорация Майкрософт не дает никаких гарантий, подразумеваемых и прочих, относительно производительности и надежности этих продуктов.

Свяжитесь с нами для получения помощи

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