我正在尝试使用私有(private)注册表 (Artifactory) 在我的 Kubernetes 集群 (1.9.7-gke.6
) 上运行一个容器。
Failed to pull image "myrepo.myartifactory.mycompany.com/org/image:latest": rpc error: code = Unknown desc = Error: Status 400 trying to pull repository org/image: "{
\"errors\" :[ {
\"status\" : 400,
\"message\" : \"Unsupported docker v1 repository request for 'myrepo'\"\n } ]
}"
我假设这意味着 docker
客户端尝试执行 v1
注册表请求,我们的 Artifactory 安装似乎不支持它。
我检查了集群节点的 docker 版本:
$ kubectl describe nodes | grep docker
Container Runtime Version: docker://17.3.2
Container Runtime Version: docker://17.3.2
Container Runtime Version: docker://17.3.2
我找到了 Docker 标志 --disable-legacy-registry=true
但我不确定如何以这种方式最好地配置我的 GKE 集群。
最佳答案
实际问题是我们的注册表凭据发生了变化。更新我们集群上的拉取凭据解决了这个问题。
我假设在注册表 API 返回错误(例如身份验证或授权错误)的某些情况下可能会发生此问题。如果是这种情况,docker 客户端会尝试降级到较旧的 API 版本——这在 Artifactory 上不可用。
这会导致 Artifactory 返回提到的 Unsupported docker v1 repository request for 'myrepo'
错误,不幸的是,这掩盖了实际错误。
关于docker - 从私有(private)注册表中提取失败 - 不支持的 docker v1 存储库请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52730629/