針對 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安裝的叢集啟用附加元件
理論上,即使 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。 這可確保插入正確的環境變數。 若要這樣做,請遵循下列步驟:
執行下列命令來重新啟動 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 意見反應社群提交產品意見反應。