kubernetes - 将图像从 GCR 拉入 GKE

标签 kubernetes google-cloud-platform google-kubernetes-engine

今天是我玩 GCR 和 GKE 的第一天。如果我的问题听起来很幼稚,请道歉。

所以我在 GCR 中创建了一个新的注册表。它是私有(private)的。使用 this文档,我使用命令获取了我的访问 token

gcloud auth print-access-token
#<MY-ACCESS_TOKEN>

我知道我的用户名是 oauth2accesstoken
当我尝试时在我的本地笔记本电脑上
docker login https://eu.gcr.io/v2
Username: oauth2accesstoken
Password: <MY-ACCESS_TOKEN>

我得到:
Login Successful

所以现在是时候创建一个 docker-registry Kubernetes 中的 secret 。

我运行了以下命令:
kubectl create secret docker-registry eu-gcr-io-registry --docker-server='https://eu.gcr.io/v2' --docker-username='oauth2accesstoken' --docker-password='<MY-ACCESS_TOKEN>' --docker-email='<MY_EMAIL>'

然后我的 Pod 定义如下所示:
apiVersion: v1
kind: Pod
metadata:
  name: my-app
spec:
  containers:
  - name: my-app
    image: eu.gcr.io/<my-gcp-project>/<repo>/<my-app>:latest
    ports:
    - containerPort: 8090
  imagePullSecrets:
  - name: eu-gcr-io-registry

但是当我启动 pods 时,我得到了错误:
Warning  Failed                 4m (x4 over 6m)   kubelet, node-3  Failed to pull image "eu.gcr.io/<my-gcp-project>/<repo>/<my-app>:latest": rpc error: code = Unknown desc = Error response from daemon: unauthorized: You don't have the needed permissions to perform this operation, and you may have invalid credentials. To authenticate your request, follow the steps in: https://cloud.google.com/container-registry/docs/advanced-authentication

我检查了 YAML 文件并执行了 base64 --decode 验证了我的 secret 在 .dockerconfigjson这是正确的。

那么我在这里错过了什么?

最佳答案

如果您的 GKE 集群和 GCR 注册表在同一个项目中:您不需要配置身份验证。 GKE 集群被授权从同一项目中的私有(private) GCR 注册表中提取,而无需配置。 (很可能你就是这个!)

如果您的 GKE 集群和 GCR 注册表位于不同的 GCP 项目中:按照以下说明授予 GKE 集群的“服务帐户”访问 GCR 集群中的私有(private)镜像的权限:https://cloud.google.com/container-registry/docs/access-control#granting_users_and_other_projects_access_to_a_registry

简而言之,这可以通过以下方式完成:

gsutil iam ch  serviceAccount:[PROJECT_NUMBER]-compute@developer.gserviceaccount.com:objectViewer gs://[BUCKET_NAME]

在哪里 [BUCKET_NAME]是存储 GCR 图像的 GCS 存储桶(如 artifacts.[PROJECT-ID].appspot.com )和 [PROJECT_NUMBER]数字 托管您的 GKE 集群的 GCP 项目 ID。

关于kubernetes - 将图像从 GCR 拉入 GKE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52908401/

相关文章:

kubernetes - Kubernetes/Helm:是否有ConfigMap和 “binaryData:”的示例?

google-app-engine - 实体未显示在谷歌云平台实体控制台中

docker - 在运行的微服务上隔离多个已安装的用户空间文件系统

node.js - Kubernetes Node.js 容器不断崩溃

kubernetes - 基于GPU利用率的GKE上的水平 Pane 自动缩放(HPA)

kubernetes - 如何在Pod中查看应用程序日志

amazon-ec2 - 将kubernetes从1.5.5升级到1.5.8或1.7/1.8

javascript - 如何使用简单的 ajax jQuery 对 DialogFlow V2 进行 http 调用?

python - 谷歌云平台部署python脚本

kubernetes - 通过 Cloud VPN 访问私有(private) GKE 集群