Устранение неполадок надстройки Kubernetes Event-driven Autoscaling
В этой статье обсуждается, как устранять неполадки надстройки Kubernetes Event-driven Autoscaling (KEDA) в службе Microsoft Azure Kubernetes (AKS). При развертывании надстройки AKS KEDA могут возникать проблемы, связанные с конфигурацией автомасштабирования приложения. Эта статья содержит сведения, которые помогут вам устранять ошибки и распространенные проблемы, влияющие на надстройку, но отсутствуют в официальном документе Вопросы и ответы по KEDA и в руководстве по устранению неполадок.
Предварительные требования
- Средство Kubernetes kubectl . Чтобы установить kubectl с помощью Azure CLI, выполните команду az aks install-cli.
Поддержка надстройки KEDA
Надстройка KEDA следует аналогичной модели поддержки другим надстройкам AKS. Поддерживаются все масштабируемые модули Azure KEDA, но AKS не поддерживает сторонние масштабировщики. При возникновении проблем со сторонними масштабировщиками откройте проблему в официальном репозитории KEDA GitHub.
Контрольный список по устранению неполадок
Проверка и устранение неполадок компонентов KEDA с помощью инструкций в следующих разделах.
Проверка доступной версии KEDA
Вы можете определить доступную версию KEDA с помощью команды get kubectl:
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. Это гарантирует внедрение правильных переменных среды. Для этого выполните следующие шаги.
Перезапустите модули pod, выполнив следующую команду:
kubectl rollout restart deployment keda-operator -n kube-system
Получите модули pod оператора KEDA, выполнив следующую команду, а затем найдите модули pod с именами, начиная с "keda-operator".
kubectl get pod -n kube-system
Чтобы убедиться, что переменные среды были успешно внедрены, выполните следующую команду:
kubectl describe pod <keda-operator-pod-name> -n kube-system
Если переменные были успешно внедрены, вы увидите значения для
AZURE_TENANT_ID
, а такжеAZURE_AUTHORITY_HOST
в разделе "СредаAZURE_FEDERATED_TOKEN_FILE
".
Заявление об отказе от ответственности за сведения о продуктах сторонних производителей
В этой статье упомянуты программные продукты независимых производителей. Корпорация Microsoft не дает никаких гарантий, подразумеваемых и прочих, относительно производительности и надежности этих продуктов.
Свяжитесь с нами для получения помощи
Если у вас есть вопросы или вам нужна помощь, создайте запрос в службу поддержки или обратитесь за поддержкой сообщества Azure. Вы также можете отправить отзыв о продукте в сообщество отзывов Azure.