Azure
在 AKS 上使用 Helm 的 Kubernetes NGINX 入口控制器失敗
設置 K8 入口控制器時,此處記錄
我無法通過“創建入口控制器”步驟在 Helm 命令步驟並將命令置於調試模式期間,我看到其中一個步驟超時:
預安裝失敗:等待條件超時
查看K8 POD日誌後發現K8系統因為auth錯誤無法連接registry。出於安全原因,以下輸出已被修改,但顯示錯誤
Failed to pull image "myregistry.azurecr.io/jettech/kube-webhook-certgen:v1.5.1@sha256:...90bd8068": [rpc error: code = NotFound desc = failed to pull and unpack image "....azurecr.io/jettech/kube-webhook-certgen@sha256:....9b9e90bd8068": failed to resolve reference "myregistry.azurecr.io/jettech/kube-webhook-certgen@sha256:...190b1dcbcb9b9e90bd8068": ....azurecr.io/jettech/kube-webhook-certgen@sha256:...9b9e90bd8068: not found, rpc error: code = Unknown desc = failed to pull and unpack image "myregistry.azurecr.io/jettech/kube-webhook-certgen@sha256:...dcbcb9b9e90bd8068": failed to resolve reference "myregistry.azurecr.io/jettech/kube-webhook-certgen@sha256:...b9b9e90bd8068": failed to authorize: failed to fetch anonymous token: unexpected status: 401 Unauthorized]
我已經根據“az acr import”命令驗證了圖像位於容器系統資料庫中,並且如果我使用“kubectl”進行標準 K8 部署,k8 能夠連接到 acr。我還使用以下命令驗證了集群和系統資料庫之間的連接,它按預期工作:
az aks check-acr -n <cluster> -g <rg> --acr <acr>
此故障僅在使用 helm 命令時發生。
編輯
在研究了更多之後,我發現了以下文章
看來摘要有問題。我在 helm 命令中添加/替換了以下內容:
--set controller.image.digest="sha256:e9fb216ace49dfa4a5983b183067e97496e7a8b307d2093f4278cd550c303899" \ --set controller.admissionWebhooks.patch.image.digest="sha256:950833e19ade18cd389d647efb88992a7cc077abedef343fa59e012d376d79b7" \
但是,在執行修改後的 helm 命令時,POD 處於錯誤狀態,並出現以下錯誤
unknown flag: --controller-class
我嘗試設置環境變數 CONTROLLER_TAG=v1.0.0,如文章中所述,但這無濟於事
另一種解決方法是在命令中設置版本號:3.36.0。這是成功的,但需要降級的版本
在聯繫 MS 文件站點回饋後,他們為我提供了此文件的以下修復
https://github.com/MicrosoftDocs/azure-docs/issues/80321
回滾並重新應用修改後的更改後,命令成功。關鍵是使用 helm uninstall 命令刪除 pod:
helm uninstall nginx-ingress --namespace ingress-basic
然後從 ACR 中刪除 ACR 儲存庫:
jettech/kube-webhook-certgen defaultbackend-amd64 jetstack/cert-manager-controller jetstack/cert-manager-webhook jetstack/cert-manager-cainjector
它們是使用“az acr import”命令創建的,然後重新執行修改後的命令。
希望有人發現這個有價值的東西