问题描述
sudo microk8s ctr --debug images pull redacted.azurecr.io/acs/service:2.24.2
但我不断收到此错误:
ctr: Failed to resolve reference "redacted.azurecr.io/acs/service:2.24.2": Failed to authorize: Failed to fetch anonymous token: unexpected status: 401 Unauthorized
这是我的 containerd-template.toml 配置:
version = 2
[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
endpoint = ["https://registry-1.docker.io",]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."localhost:32000"]
endpoint = ["http://localhost:32000"]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."redacted.azurecr.io"]
endpoint = ["https://redacted.azurecr.io"]
[plugins."io.containerd.grpc.v1.cri".registry.configs]
[plugins."io.containerd.grpc.v1.cri".registry.configs."redacted.azurecr.io".auth]
username = "redacted"
password = "redacted"
通过将用户名:密码添加到终端命令,我可以下载图像,因此我确定用户名和密码是正确的。看起来配置文件中的配置没有被拾取(我确实在编辑配置文件后停止了 microk8s 和 microk8s 启动)
sudo microk8s ctr --debug images pull redacted.azurecr.io/acs/service:2.24.2 -u redacted:redacted
解决方法
请确保在更改 containerd-template.toml 后重新启动了 microk8s。
MicroK8s v1.14 及更高版本使用 containerd。 As described here,用户应该了解安全注册表和访问它所需的凭据。如上所示,配置 containerd 涉及编辑 /var/snap/microk8s/current/args/containerd-template.toml 并通过 microk8s 停止、microk8s 启动循环重新加载新配置。
您可以查看以下类似问题:
https://github.com/containerd/cri/issues/1482
https://github.com/ubuntu/microk8s/issues/990
https://github.com/containerd/containerd/issues/4920