credentials - gcr.io 上的 GKE imagePullBackOff

标签 credentials google-kubernetes-engine

我尝试使用 gcr.io 在 GKE 上设置我自己的容器并不断出现 ImagePullBackOff 失败。

认为我做错了什么,我回到这里的教程https://cloud.google.com/kubernetes-engine/docs/tutorials/hello-app并遵循所有步骤并得到相同的错误。这看起来像是一个凭证问题,但我按照教程的所有步骤操作,但仍然没有运气。

我如何调试此错误,因为日志似乎没有帮助。

教程工作的第 1-4 步。

kubectl run hello-web --image=gcr.io/${PROJECT_ID}/hello-app:v1 --port 8080

ImagePullBackOff 失败
我认为 GKE 和 gcr.io 会自动处理凭据。
我究竟做错了什么?我该如何调试?
kubectl describe pods hello-web-6444d588b7-tqgdm

Name:           hello-web-6444d588b7-tqgdm
Namespace:      default
Node:           gke-aia-default-pool-9ad6a2ee-j5g7/10.152.0.2
Start Time:     Sat, 27 Oct 2018 06:51:38 +1000
Labels:         pod-template-hash=2000814463
                run=hello-web
Annotations:    kubernetes.io/limit-ranger=LimitRanger plugin set: cpu request for container hello-web
Status:         Pending
IP:             10.12.2.5
Controlled By:  ReplicaSet/hello-web-6444d588b7
Containers:
hello-web:
    Container ID:   
    Image:          gcr.io/<project-id>/hello-app:v1
    Image ID:       
    Port:           8080/TCP
    Host Port:      0/TCP
    State:          Waiting
    Reason:       ImagePullBackOff
    Ready:          False
    Restart Count:  0
    Requests:
    cpu:        100m
    Environment:  <none>
    Mounts:
    /var/run/secrets/kubernetes.io/serviceaccount from default-token-qgv8h (ro)
Conditions:
Type           Status
Initialized    True 
Ready          False 
PodScheduled   True 
Volumes:
default-token-qgv8h:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-qgv8h
    Optional:    false
QoS Class:       Burstable
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                node.kubernetes.io/unreachable:NoExecute for 300s
Events:
Type     Reason                 Age                  From                                         Message
----     ------                 ----                 ----                                         -------
Normal   Scheduled              45m                  default-scheduler                            Successfully assigned hello-web-6444d588b7-tqgdm to gke-aia-default-pool-9ad6a2ee-j5g7
Normal   SuccessfulMountVolume  45m                  kubelet, gke-aia-default-pool-9ad6a2ee-j5g7  MountVolume.SetUp succeeded for volume "default-token-qgv8h"
Normal   Pulling                44m (x4 over 45m)    kubelet, gke-aia-default-pool-9ad6a2ee-j5g7  pulling image "gcr.io/<project-id>/hello-app:v1"
Warning  Failed                 44m (x4 over 45m)    kubelet, gke-aia-default-pool-9ad6a2ee-j5g7  Failed to pull image "gcr.io/<project-id>/hello-app:v1": rpc error: code = Unknown desc = Error response from daemon: repository gcr.io/<project-id>/hello-app not found: does not exist or no pull access
Warning  Failed                 44m (x4 over 45m)    kubelet, gke-aia-default-pool-9ad6a2ee-j5g7  Error: ErrImagePull
Normal   BackOff                5m (x168 over 45m)   kubelet, gke-aia-default-pool-9ad6a2ee-j5g7  Back-off pulling image "gcr.io/<project-id>/hello-app:v1"
Warning  Failed                 48s (x189 over 45m)  kubelet, gke-aia-default-pool-9ad6a2ee-j5g7  Error: ImagePullBackOff

集群权限:
User info Disabled
Compute Engine Read/Write
Storage Read Only
Task queue Disabled
BigQuery Disabled
Cloud SQL Disabled
Cloud Datastore Disabled
Stackdriver Logging API Write Only
Stackdriver Monitoring API Full
Cloud Platform Disabled
Bigtable Data Disabled
Bigtable Admin Disabled
Cloud Pub/Sub Disabled
Service Control Enabled
Service Management Read Only
Stackdriver Trace Write Only
Cloud Source Repositories Disabled
Cloud Debugger Disabled

最佳答案

在阅读了一些文档后,我使用以下说明手动添加了访问权限:
https://cloud.google.com/container-registry/docs/access-control

现在允许部署示例代码。看起来从 gke 到 gcr 的自动访问不起作用。

关于credentials - gcr.io 上的 GKE imagePullBackOff,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53001219/

相关文章:

go - 使用私有(private)存储库中的依赖项在 Jenkins 中构建 go 项目

c# - Web Service Credentials 从远程而不是在服务器上工作

kubernetes - 监控 gke 上的 CPU/内存使用情况

google-compute-engine - 在 GKE 集群创建时启用自动扩缩

bash - 带有用户和密码的 GIT_ASKPASS

paypal - 测试 Paypal Express 集成/沙盒凭证/我不是程序员

mysql - 如何将云sql实例连接到sql集群?

kubernetes - GKE指标服务器生成错误-flag.Parse:E0907

kubernetes - 在配置私有(private) GKE 集群时了解 --master-ipv4-cidr

python - 缓存命令行工具的用户远程凭据