首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >kubernetes拉取私有镜像失败[Google Cloud Container Registry,Digital Ocean]

kubernetes拉取私有镜像失败[Google Cloud Container Registry,Digital Ocean]
EN

Stack Overflow用户
提问于 2019-10-03 02:02:16
回答 2查看 3K关注 0票数 2

我正在尝试使用kubernetes设置GCR

获取错误: ErrImagePull无法拉取镜像"eu.gcr.io/xxx/nodejs":rpc错误:代码=未知描述=来自守护进程的错误响应:拉取访问被拒绝eu.gcr.io/xxx/nodejs,存储库不存在或可能需要'docker login‘

尽管我已经在服务帐户中正确设置了密码,并在部署规范中添加了镜像拉取密码

deployment.yml

代码语言:javascript
复制
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  annotations:
    kompose.cmd: kompose convert
    kompose.version: 1.18.0 (06a2e56)
  creationTimestamp: null
  labels:
    io.kompose.service: nodejs
  name: nodejs
spec:
  replicas: 1
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        io.kompose.service: nodejs
    spec:
      containers:
      - env:
        - name: MONGO_DB
          valueFrom:
            configMapKeyRef:
              key: MONGO_DB
              name: nodejs-env
        - name: MONGO_HOSTNAME
          value: db
        - name: MONGO_PASSWORD
          valueFrom:
            secretKeyRef:
              name: mongo-secret
              key: MONGO_PASSWORD
        - name: MONGO_PORT
          valueFrom:
            configMapKeyRef:
              key: MONGO_PORT
              name: nodejs-env
        - name: MONGO_USERNAME
          valueFrom:
            secretKeyRef:
              name: mongo-secret
              key: MONGO_USERNAME
        image: "eu.gcr.io/xxx/nodejs"
        name: nodejs
        imagePullPolicy: Always
        ports:
        - containerPort: 8080
        resources: {}
      imagePullSecrets:
        - name: gcr-json-key
      initContainers:
        - name: init-db
          image: busybox
          command: ['sh', '-c', 'until nc -z db:27017; do echo waiting for db; sleep 2; done;']
      restartPolicy: Always
status: {}

用它来添加秘密,它说创建

代码语言:javascript
复制
kubectl create secret docker-registry gcr-json-key --docker-server=eu.gcr.io  --docker-username=_json_key  --docker-password="$(cat mycreds.json)"   --docker-email=mygcpemail@gmail.com

我怎么调试这个,欢迎任何想法!

EN

回答 2

Stack Overflow用户

发布于 2019-10-03 06:21:03

该问题似乎是由于缺少相关服务帐户XXXXXXXXXXX-compute@XXXXXX.gserviceaccount.com的权限而导致的,该帐户缺少编辑者角色。

此外,我们需要限制范围,以分配权限,仅从谷歌kubernetes引擎推送和拉取图像的权限,该帐户将需要存储管理员查看权限,可以按照本文1中提到的说明分配。

此外,要在创建Google Kubernetes引擎集群时设置读写存储范围,可以使用-- scope选项来提到这个范围" storage -rw"2。

1 2

票数 1
EN

Stack Overflow用户

发布于 2019-10-08 06:57:17

如果用于推送或拉取镜像的虚拟机实例与容器注册表存储桶在同一个Google Cloud Platform项目中,则Compute Engine默认服务账号将被配置相应的权限来推送或拉取镜像。

如果VM实例位于不同的项目中,或者如果该实例使用不同的服务帐户,则必须配置对存储库使用的存储桶的访问权限。

默认情况下,Compute Engine VM为存储存储桶配置了只读访问范围。要推送私有Docker镜像,您的实例必须按照访问范围中的说明配置读写存储访问范围。请使用1作为进一步的参考:

请以2格式关注下表

操作权限角色角色标题

拉入(只读)- storage.objects.get角色/存储。对象查看器存储对象查看器storage.objects.list

此外,如果你在任何步骤中遇到问题,如果有任何错误代码,你可以分享。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58206927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档