1

我试图使用Google容器注册表,但它对我无效。如何使用Google容器注册表

我写了以下containers.yaml

$ cat containers.yaml 
version: v1 
kind: Pod 
spec: 
    containers: 
    - name: amazonssh 
     image: asia.gcr.io/<project-id>/amazonssh 
     imagePullPolicy: Always 
restartPolicy: Always 
dnsPolicy: Default 

我使用以下命令运行实例。

$ gcloud compute instances create containervm-amazonssh --image container-vm  --network product-network  --metadata-from-file google-container-manifest=containers.yaml --zone asia-east1-a --machine-type f1-micro 

我设置了以下acl权限。

# gsutil acl ch -r -u <project-number>@developer.gserviceaccount.com:R gs://asia.artifacts.<project-id>.appspot.com 

但是,当docker从Google Container Registry中提取图像时发生访问被拒绝。

# docker pull asia.gcr.io/<project-id>.a/amazonssh 
Pulling repository asia.gcr.io/<project-id>.a/amazonssh 
FATA[0000] Error: Status 403 trying to pull repository <project-id>/amazonssh: "Access denied." 

回答

3

您可以通过实例验证您是否可以从Google云端存储分区读取数据?这可以通过验证:

$ curl -H 'Metadata-Flavor: Google' $SVC_ACCT/scopes 
... 
https://www.googleapis.com/auth/devstorage.full_control 
https://www.googleapis.com/auth/devstorage.read_write 
https://www.googleapis.com/auth/devstorage.read_only 
... 

如果是这样那么尝试:

在谷歌计算引擎,你可以不gcloud登录有:

$ METADATA=http://metadata.google.internal./computeMetadata/v1 
$ SVC_ACCT=$METADATA/instance/service-accounts/default 
$ ACCESS_TOKEN=$(curl -H 'Metadata-Flavor: Google' $SVC_ACCT/token \ 
    | cut -d'"' -f 4) 
$ docker login -e [email protected] -u _token -p $ACCESS_TOKEN https://gcr.io 

然后再次尝试搬运工拉命令。

0

你在project-id这里有一个额外的.a这里,不知道你是否以这种方式运行命令?

docker pull asia.gcr.io/<project-id>.a/amazonssh 

容器-VM具有运行gcloud docker -a为根cron作业,所以你应该能够docker pull为根。

启动container-vm Docker容器的kubelet也了解如何使用GCR进行本地身份验证,因此它应该可以正常工作。

请随时通过[email protected]与我们联系。如果您可以包含您的项目ID,并且可能包含container-vm中的/var/log/kubelet.log,那将会很有用。

相关问题