从gcr.to中提取图像失败



我能够创建一个kubernetes集群,并按照中的步骤从GCR存储库中提取一个私有映像。https://cloud.google.com/container-registry/docs/advanced-authenticationhttps://cloud.google.com/container-registry/docs/access-control

我无法从GCR中提取图像。我使用了以下命令gcloud身份验证登录我已经对服务帐户进行了身份验证。本地机器和gcr之间的连接。

以下是错误

$ kubectl describe pod test-service-55cc8f947d-5frkl
Name:         test-service-55cc8f947d-5frkl
Namespace:    default
Priority:     0
Node:         gke-test-gke-clus-test-node-poo-c97a8611-91g2/10.128.0.7
Start Time:   Mon, 12 Oct 2020 10:01:55 +0530
Labels:       app=test-service
pod-template-hash=55cc8f947d
tier=test-service
Annotations:  kubernetes.io/limit-ranger: LimitRanger plugin set: cpu request for container test-service
Status:       Pending
IP:           10.48.0.33
IPs:
IP:           10.48.0.33
Controlled By:  ReplicaSet/test-service-55cc8f947d
Containers:
test-service:
Container ID:   
Image:          gcr.io/test-256004/test-service:v2
Image ID:       
Port:           8080/TCP
Host Port:      0/TCP
State:          Waiting
Reason:       ErrImagePull
Ready:          False
Restart Count:  0
Requests:
cpu:  100m
Environment:
test_SERVICE_BUCKET:   test-pt-prod
COPY_FILES_DOCKER_IMAGE:  gcr.io/test-256004/test-gcs-copy:latest
test_GCP_PROJECT:      test-256004
PIXALATE_GCS_DATASET:     test_pixalate
PIXALATE_BQ_TABLE:        pixalate
APP_ADS_TXT_GCS_DATASET:  test_appadstxt
APP_ADS_TXT_BQ_TABLE:     appadstxt
Mounts:
/test/output from test-volume (rw)
/var/run/secrets/kubernetes.io/serviceaccount from default-token-6g7nl (ro)
Conditions:
Type              Status
Initialized       True 
Ready             False 
ContainersReady   False 
PodScheduled      True 
Volumes:
test-volume:
Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
ClaimName:  test-pvc
ReadOnly:   false
default-token-6g7nl:
Type:        Secret (a volume populated by a Secret)
SecretName:  default-token-6g7nl
Optional:    false
QoS Class:       Burstable
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
Type     Reason                  Age                From                                                          Message
----     ------                  ----               ----                                                          -------
Normal   Scheduled               42s                default-scheduler                                             Successfully assigned default/test-service-55cc8f947d-5frkl to gke-test-gke-clus-test-node-poo-c97a8611-91g2
Normal   SuccessfulAttachVolume  38s                attachdetach-controller                                       AttachVolume.Attach succeeded for volume "pvc-25025b4c-2e89-4400-8e0e-335298632e74"
Normal   SandboxChanged          31s                kubelet, gke-test-gke-clus-test-node-poo-c97a8611-91g2  Pod sandbox changed, it will be killed and re-created.
Normal   Pulling                 15s (x2 over 32s)  kubelet, gke-test-gke-clus-test-node-poo-c97a8611-91g2  Pulling image "gcr.io/test-256004/test-service:v2"
Warning  Failed                  15s (x2 over 32s)  kubelet, gke-test-gke-clus-test-node-poo-c97a8611-91g2  Failed to pull image "gcr.io/test-256004/test-service:v2": rpc error: code = Unknown desc = Error response from daemon: pull access denied for gcr.io/test-256004/test-service, repository does not exist or may require 'docker login': denied: Permission denied for "v2" from request "/v2/test-256004/test-service/manifests/v2".
Warning  Failed                  15s (x2 over 32s)  kubelet, gke-test-gke-clus-test-node-poo-c97a8611-91g2  Error: ErrImagePull
Normal   BackOff                 3s (x4 over 29s)   kubelet, gke-test-gke-clus-test-node-poo-c97a8611-91g2  Back-off pulling image "gcr.io/test-256004/test-service:v2"
Warning  Failed                  3s (x4 over 29s)   kubelet, gke-test-gke-clus-test-node-poo-c97a8611-91g2  Error: ImagePullBackOff

如果不使用工作负载标识,pod的默认服务帐户是其中一个节点,默认情况下,节点使用计算引擎服务帐户。

请确保授予它访问GCR的正确权限。

如果您使用另一个服务帐户,请授予它存储对象读取器角色(当您提取图像时,您读取存储在云存储中的blob(至少它具有相同的权限((。

注意:即使它是默认的服务帐户,我也不建议在角色发生任何变化的情况下使用计算引擎服务帐户。事实上,这是项目编辑的责任

最新更新