共用方式為


針對 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安裝之叢集的附加元件

理論上,您可以安裝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 附加元件,並使用另一部計量伺服器。

如何在工作負載身分識別未正確插入時重新啟動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 意應見反社群