image - 无法提取图像“xx.azurecr.io/xx:latest”:rpc 错误:代码 = 未知 desc = 来自守护进程的错误响应:未经授权:需要身份验证
问题描述
我的 ACR 和 AKS 位于具有相同订阅的同一 Azure 目录中。
在向我的服务主体授予 ACR Pull 访问权限后,没有任何效果并且仍然出现此错误。
错误:- 无法提取图像“xx.azurecr.io/xx:latest”:rpc 错误:代码 = 未知 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 取决于您使用的方式。
推荐阅读
- vue.js - 已解决:从 VueJs 项目的生产环境中删除 Webpack 调试
- javascript - 具有不同输入的猫鼬查询
- javascript - 是个
Fluent UI 组件的网格布局的实现? - flutter - 谷歌图书馆的颤振图表 - 只有一个轴在动画?
- sql - SQL 比较工作日
- clojure - Clojure函数实现一个序列
- azure-active-directory - SAML:Idp 在删除 Azure AD 用户时启动注销?
- html - 动态表不适合引导卡
- python - 在 Python 中从列表中删除字符时遇到问题
- quarkus - 关于 BigDecimal 反射的 Quarkus 警告