針對 Kubernetes 事件驅動自動調整附加元件進行疑難解答
本文討論如何針對 Microsoft Azure Kubernetes Service (AKS) 的 Kubernetes 事件驅動自動調整 (KEDA) 附加元件進行疑難解答。 當您部署 KEDA AKS 附加元件時,可能會遇到與應用程式自動調整程式設定相關聯的問題。 本文將協助您針對錯誤進行疑難解答,並解決影響附加元件,但官方KEDA 常見問題 和 疑難解答指南中未涵蓋的常見問題。
必要條件
- Kubernetes kubectl 工具。 若要使用 Azure CLI 安裝 kubectl,請執行 az aks install-cli 命令。
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。 這可確保插入正確的環境變數。 如果要執行這項操作,請依照下列步驟執行:
執行下列命令以重新啟動 Pod:
kubectl rollout restart deployment keda-operator -n kube-system
執行下列命令以取得KEDA運算元Pod,然後找出名稱開頭為 'keda-operator' 的Pod。
kubectl get pod -n kube-system
若要確認已成功插入環境變數,請執行下列命令:
kubectl describe pod <keda-operator-pod-name> -n kube-system
如果已成功插入變數,您應該會在 [環境] 區段中看到 、
AZURE_FEDERATED_TOKEN_FILE
和AZURE_AUTHORITY_HOST
的值AZURE_TENANT_ID
。
協力廠商資訊免責聲明
本文提及的協力廠商產品是由與 Microsoft 無關的獨立廠商所製造。 Microsoft 不以默示或其他方式,提供與這些產品的效能或可靠性有關的擔保。
與我們連絡,以取得說明
如果您有問題或需要相關協助,請建立支援要求,或詢問 Azure community 支援。 您也可以將產品意見反應提交給 Azure 意應見反社群。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應