无法拉取映像"xx.azurecr.io/xx:latest":rpc 错误:代码 = 未知 desc = 来自守护程序的错误响应:未经授权:需要身份验证



我的 ACR 和 AKS 位于具有相同订阅的同一 Azure 目录中。

向我的服务主体授予 ACR 拉取访问权限后,没有任何效果,但仍收到此错误。

错误 :- 无法拉取映像"xx.azurecr.io/xx:latest": rpc 错误:code = 未知 desc = 来自守护程序的错误响应:获取https://xx.azurecr.io/v2/xx/manifests/latest:未经授权:需要身份验证

仪表板的屏幕截图

从错误消息中,它显示你未进行身份验证以拉取 Azure 容器注册表中的映像。

对于 AKS,有两种方法可以获取从 Azure 容器注册表拉取映像的权限。

一种是向 AKS 群集使用的服务主体授予权限。可以在授予 AKS 对 ACR 的访问权限中获取详细信息。这样,只需要一个服务主体。

另一个是向新的服务主体授予权限,该权限不同于 AKS 使用的服务主体。然后,使用服务主体创建一个机密来拉取映像。您可以在 Access with Kubernetes Secret 中获取详细信息。

它们是两种不同的方式,因此您应该确保步骤没有错误。若要检查服务主体的角色分配,CLI 命令如下所示:

az role assignment list --assignee $SP_ID --role acrpull --scope $ACR_ID

SP_ID取决于您使用的方式。

此错误有不同的原因:默认情况下,使用 AKS 群集创建的服务主体在一年后过期。有关 https://learn.microsoft.com/en-us/azure/aks/update-credentials 的说明显示了如何更新或创建新主体。

运行群集的服务主体不是我想象的主体。要检查这一点,请按照以下步骤操作。

  1. 运行命令"az aks show -n aks-cluster-name -g resource-group-name |格雷普客户端">

  2. 运行 commad "az ad sp 凭据列表 --id" -- 此命令用于检查机密是否关联。

  3. 登录到 Azure 门户。

  4. 导航到 Azure 容器注册表

  5. IAM -->
  6. 查看角色分配 --> 检查列表中是否存在具有最低"AcrPull"访问权限的客户端 ID。如果未授予对 SP 的访问权限。

请检查 YAML 中我们是否看到正确的身份验证。

相关内容

最新更新