確認容器登錄的連線
本文是一系列文章的一部分。 從概 觀開始。
若要在 Azure Kubernetes Service (AKS) 叢集中成功部署容器化應用程式,請務必確認叢集與容器登錄之間的連線能力。 此步驟可確保您的背景工作節點具有從登錄提取所需容器映像的必要許可權。
識別徵兆
當在代理程式節點上執行的 kubelet 建立 Pod 的容器時,可能會因為ImagePullBackOff
錯誤而進入等候狀態的一或多個容器。 ImagePullBackoff 是 Kubernetes 中的常見錯誤訊息,指出無法從公用或私人登錄提取所需的容器映像。 各種因素都可能導致此錯誤,包括網路連線問題、不正確的映像名稱或標籤、許可權不足或缺少認證。
狀態 BackOff
的一部分表示 Kubernetes 會持續嘗試提取映像,並在每次後續嘗試之間增加延遲。 延遲會逐漸增加,直到達到預先決定的限制,這通常會在 Kubernetes 中設定為 300 秒(5 分鐘)。
請務必仔細檢查登錄和映像名稱,以取得正確性。 此外,請確定您的 AKS 叢集具有從適當容器登錄提取映像的必要許可權。
角色指派
當您將 容器登錄 附加至現有的 AKS 叢集時, AcrPull 角色 會自動透過登錄指派給與 AKS 叢集中代理程式集區相關聯的 Microsoft Entra 受控識別。 如需詳細資訊,請參閱 從 AKS 向容器登錄進行驗證。
執行下列命令來擷取 Kubernetes 叢集及其目前角色指派的 kubelet 受控識別:
# Get the kubelet managed identity.
ASSIGNEE=$(az aks show -g $RESOURCE_GROUP -n $NAME --query identityProfile.kubeletidentity.clientId -o tsv)
az role assignment list --assignee $ASSIGNEE --all -o table
執行下列命令,將角色指派 AcrPull
給 kubelet 受控識別:
AZURE_CONTAINER_REGISTRY_ID=$(az acr show --name <container-registry-name> --query id --output tsv)
az role assignment create --assignee $ASSIGNEE --scope $AZURE_CONTAINER_REGISTRY_ID --role acrpull
針對 Container Registry 問題進行疑難解答
下列各節提供指南,可讓您在 Azure 容器登錄遇到網路、登入或效能問題時參考。
針對網路問題進行疑難解答
如果您在虛擬網路或防火牆或 Proxy 伺服器後方存取 Azure 容器登錄時遇到問題,請考慮下列解決方案:
- 設定用戶端防火牆存取。
- 設定登錄的公用存取權。
- 設定虛擬網路存取。
- 設定服務的存取權。
針對登入問題進行疑難解答
如果您在登入 Azure 容器登錄時遇到驗證和授權問題,請考慮下列解決方案:
針對效能問題進行疑難解答
如果您遇到 Azure 容器登錄的效能問題,請考慮下列解決方案:
- 啟用成品快取。
- 檢查網路連線速度。
- 檢查可能會影響映像層壓縮或擷取速度的客戶端硬體。
- 檢閱登錄服務層級或環境中的已設定限制。
- 設定異地復寫登錄,以取得鄰近區域中複本的最佳效能。
- 優化 DNS 組態,以從地理上遙遠的登錄複本提取。
這些指南可協助您確保 AKS 叢集的影像擷取順暢,並確保工作負載順利運作。
整合第三方容器登錄
當您使用第三方容器登錄時,您必須為登錄建立適當的 ImagePullSecret
認證,讓 AKS 叢集可以安全地存取容器映像。 如需詳細資訊,請參閱 建立映像提取秘密。 請確定您已設定正確的許可權和認證,以便確認容器登錄的連線,並讓 AKS 叢集在部署期間成功提取所需的容器映像。 此最佳做法可協助確保 Kubernetes 中容器化工作負載的順暢且可靠執行。
參與者
本文由 Microsoft 維護。 原始投稿人如下。
主要作者:
- Paolo Salvatori |首席客戶工程師
- 弗朗西斯·西米·納扎雷斯 |資深技術專家
若要查看非公用LinkedIn配置檔,請登入LinkedIn。