【发布时间】:2020-11-05 14:41:08
【问题描述】:
几周前,我能够使用 Azure CLI 创建我的容器注册表 (ACR) 和 Kubernetes (AKS) 集群。我可以将图像推送到我的 ACR 并让 AKS 成功提取图像 - 一切都很好。时不时地,我必须用az acr login --name <acrName> 刷新我的登录信息,但没什么大不了的。
今天,我发现当我去部署一个更新的镜像到我的 AKS 集群时,我得到了ImagePullBackOff 的状态:
无法提取图像“MY_ACR.azurecr.io/MY_IMAGE:v1”:rpc 错误:代码 = 未知 desc = 来自守护进程的错误响应:获取 https://MY_ACR.azurecr.io/v2/MY_IMAGE/manifests/v1:未授权:需要身份验证,请访问 https://aka.ms/acr/authorization 了解更多信息。
我不记得我需要做什么才能完成这项工作,因此我完成了最初的步骤并创建了一个全新的资源组、ACR、AKS 集群和连接它们的服务主体。我将图像推送到我的 ACR 并能够应用我的 Kubernetes 清单,一切都恢复正常了。
几个小时后,当我应用更新的清单时,我再次收到相同的错误消息。作为设置的一部分,我创建了一个服务主体:
az ad sp create-for-rbac --skip-assignment
az role assignment create --assignee <principal's appId> --scope <my ACR's id> --role Reader
我也使用了--role acrpull。似乎身份验证已超时,Authenticate with an Azure container registry 的文档说单个 AD 身份将在 3 小时后超时,但即使在运行 az acr login --name <acrName> 之后,我也无法解决此问题。
让我的 AKS 群集能够再次对我的 ACR 进行身份验证需要哪些步骤?
请注意,我还根据Authenticate with Azure Container Registry from Azure Kubernetes Service 的文档通过运行附加了 ACR:
az aks update -n cluster_name -g resource_group --attach-acr acr_name
我还尝试使用 ACR id 代替名称。大约一分钟后,命令完成,甚至半小时后,我得到了同样的权限问题。
【问题讨论】:
-
您如何将 AKS 链接到 ACR ?您是否在 az aks create 命令中使用
--attach-acr参数? -
我在资源创建后使用了
az aks update -n cluster_name -g resource_group --attach-acr acr_name。
标签: azure azure-aks azure-container-registry