簡體   English   中英

將鏡像從 Azure 容器注冊表拉取到 Kubernetes 集群

[英]Pull images from an Azure container registry to a Kubernetes cluster

我已按照本教程microsoft_website從 azure 容器中提取圖像。 我的yaml成功創建了一個 pod 作業,它可以拉取圖像,但僅當它在我的集群中的agentpool節點上運行時。

例如,將nodeName: aks-agentpool-33515997-vmss000000yaml可以正常工作,但指定不同的節點名稱,例如nodeName: aks-cpu1-33515997-vmss000000時,pod 會失敗。 我使用描述 pods 收到的錯誤消息是Failed to pull image然后kubelet Error: ErrImagePull

我錯過了什么?

創建秘密:

kubectl create secret docker-registry <secret-name> \
--docker-server=<container-registry-name>.azurecr.io \
--docker-username=<service-principal-ID> \
--docker-password=<service-principal-password>

需要檢查的四件事:

  • 是訂閱問題嗎? 節點是否在不同的訂閱中?
  • 是權利問題嗎? 節點的服務主體是否有權拉取鏡像。
  • 是網絡問題嗎? 節點是否位於不同的子網上?
  • 圖像大小或配置是否存在某些問題,這意味着它無法在另一個集群上運行。

編輯

New-AzAksNodePool 有一個參數 -DefaultProfile

它可以是 AzContext、AzureRmContext、AzureCredential

如果這在您的節點之間有所不同,它將解釋錯誤

正如@user1571823 所說,問題的解決方案是從 acr 中刪除舊圖像並創建/推送新圖像。
該問題與保存在 azure 容器注冊表 (acr) 中的映像中的某種損壞有關。 一個代理池之所以能拉取鏡像,其實是因為鏡像已經存在於虛擬機中。

此后,正如@andov 所說,從部署 AKS 的訂閱中打開事件案例以向 Azure 支持AKS開一個事件案例是一個不錯的選擇。 支持團隊擁有對 AKS 服務后端的完全訪問權限,他們可以准確判斷是什么導致了您的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM