共用方式為


針對 Kubernetes 事件驅動自動調整附加元件進行疑難排解

本文章討論如何針對 Microsoft Azure Kubernetes Service (AKS) 的 Kubernetes 事件驅動自動調整 (KEDA) 附加元件進行疑難排解。 部署 KEDA AKS 附加元件時,您可能會遇到與應用程式自動調整程式設定相關聯的問題。 本文章將協助您針對錯誤進行疑難排解,並解決會影響附加元件但官方 KEDA 常見問題疑難排解指南中未涵蓋的常見問題。

必要條件

KEDA 附加元件支援

KEDA 附加元件遵循與其他 AKS 附加元件類似的支援模型。 支援所有 Azure KEDA 縮放程式 ,但 AKS 不支援第三方調整程式。 如果您遇到第三方調整程序的問題,請在官方 KEDA GitHub 存放庫中提出問題。

疑難排解檢查清單

使用下列各節中的指示,驗證並針對KEDA元件進行疑難解答。

檢查可用的 KEDA 版本

您可以使用 kubectl get 命令來判斷可用的 KEDA 版本

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安裝的叢集啟用附加元件

理論上,即使 Kubernetes 只允許安裝一部計量伺服器,您還是可以多次安裝 KEDA。 不過,我們不建議使用多個安裝,因為只有一個安裝才能運作。

當 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 附加元件,並使用另一個計量伺服器。

當工作負載身分識別未正確插入時,如何重新啟動KEDA操作員Pod

如果您使用 Microsoft Entra 工作負載 ID,且在使用 工作負載 ID 之前啟用KEDA,則必須重新啟動KEDA操作員Pod。 這可確保插入正確的環境變數。 若要這樣做,請遵循下列步驟:

  1. 執行下列命令來重新啟動 Pod:

    kubectl rollout restart deployment keda-operator -n kube-system
    
  2. 執行下列命令以取得KEDA運算元Pod,然後找出名稱開頭為 'keda-operator' 的Pod。

    kubectl get pod -n kube-system
    
  3. 若要確認已成功插入環境變數,請執行下列命令:

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

    如果已成功插入變數,您應該會在 [環境] 區段中看到 、 AZURE_FEDERATED_TOKEN_FILEAZURE_AUTHORITY_HOST 的值AZURE_TENANT_ID

協力廠商資訊免責聲明

本文提及的協力廠商產品是由與 Microsoft 無關的獨立廠商所製造。 Microsoft 不以默示或其他方式,提供與這些產品的效能或可靠性有關的擔保。

與我們連絡,以取得說明

如果您有問題或需要相關協助,請建立支援要求,或詢問 Azure community 支援。 您也可以向 Azure 意見反應社群提交產品意見反應。