【发布时间】:2021-03-08 13:11:44
【问题描述】:
抱歉,如果这是重复的,我还没有找到类似问题的解决方案。 我正在尝试将 docker 映像上传到 Google Kubernetes Engine。 我以前也成功过,但这次似乎找不到运气了。
我使用 kubectl 和我的 Google 帐户在本地设置了 Google SDK,该帐户是项目所有者并拥有所有必需的权限。 当我使用
kubectl create deployment hello-app --image=gcr.io/{project-id}/hello-app:v1
我在我的 GKE 控制台上看到部署,由于它“无法从存储库中拉取图像。ErrImagePull 无法从注册表中拉取图像”而持续崩溃。
它提供了 4 条建议,我现在已经检查了三次:
- 检查图片名称中的拼写错误。
- 手动拉取图像时检查错误(在 Cloud Shell 中一切正常)
- 检查镜像拉取密码设置 因此,基于此https://blog.container-solutions.com/using-google-container-registry-with-kubernetes,我从具有项目查看权限的新服务帐户中手动将“gcr-json-key”以及“gcr-access-token”添加到 kubectl 默认服务帐户。
- 检查集群的防火墙以确保集群可以连接到''。 Afaik,这不应该是新设置的集群的问题。
pod 自身提供以下错误代码:
Failed to pull image "gcr.io/{project id}/hello-app:v1":
[rpc error: code = Unknown desc = Error response from daemon:
Get https://gcr.io/v2/{project id}/hello-app/manifests/v1: unknown: Unable to parse json key.,
rpc error: code = Unknown desc = Error response from daemon:
Get https://gcr.io/v2/{project id}/hello-app/manifests/v1:
unauthorized: Not Authorized., rpc error: code = Unknown desc = Error response from daemon:
pull access denied for gcr.io/{project id}/hello-app,
repository does not exist or may require 'docker login': denied:
Permission denied for "v1" from request "/v2/{project id}/hello-app/manifests/v1".]
我现在的问题是,我做错了什么或如何找出我的 pod 无法提取我的图像的原因?
Kubernetes 默认服务帐户规范:
kubectl get serviceaccount -o json
{
"apiVersion": "v1",
"imagePullSecrets": [
{
"name": "gcr-json-key"
},
{
"name": "gcr-access-token"
}
],
"kind": "ServiceAccount",
"metadata": {
"creationTimestamp": "2020-11-25T15:49:16Z",
"name": "default",
"namespace": "default",
"resourceVersion": "6835",
"selfLink": "/api/v1/namespaces/default/serviceaccounts/default",
"uid": "436bf59a-dc6e-49ec-aab6-0dac253e2ced"
},
"secrets": [
{
"name": "default-token-5v5fb"
}
]
}
【问题讨论】:
标签: docker kubernetes google-kubernetes-engine