如何通过Kubernetes(桌面docker上包含Kubernetes)提取托管在Google容器注册表上的docker图像

如何通过Kubernetes(桌面docker上包含Kubernetes)提取托管在Google容器注册表上的docker图像,docker,kubernetes,docker-for-windows,google-container-registry,Docker,Kubernetes,Docker For Windows,Google Container Registry,我无法从GCR中提取图像(由我的部署提取) 我得到图像回撤错误 我已经一步一步地学习了这个教程 然而,它似乎不适合我。我甚至尝试过在创建服务帐户密钥时使用存储管理员角色,但仍然没有用 在描述pod时,我得到了以下错误: Warning Failed 14s (x2 over 30s) kubelet, docker-for-desktop Failed to pull image "gcr.io/<project-name>/<ima

我无法从GCR中提取图像(由我的部署提取) 我得到图像回撤错误

我已经一步一步地学习了这个教程

然而,它似乎不适合我。我甚至尝试过在创建服务帐户密钥时使用存储管理员角色,但仍然没有用

在描述pod时,我得到了以下错误:

  Warning  Failed                 14s (x2 over 30s)  kubelet, docker-for-desktop  Failed to pull image "gcr.io/<project-name>/<image-name>": rpc error: code = Unknown desc = Error response from daemon: Get https://gcr.io/v2/<project-name>/<image-name>/manifests/latest: unknown: Unable to parse json key.
  Warning  Failed                 14s (x2 over 30s)  kubelet, docker-for-desktop  Error: ErrImagePull
  Normal   BackOff                2s (x3 over 29s)   kubelet, docker-for-desktop  Back-off pulling image "gcr.io/<project-name>/<image-name>"
  Warning  Failed                 2s (x3 over 29s)   kubelet, docker-for-desktop  Error: ImagePullBackOff
Pod定义:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: microservice-1-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: microservice-1
  template:
    metadata:
      labels:
        app: microservice-1
    spec:
      containers:
        - name: microservice-1
          image: gcr.io/project-name/image-name
          ports:
            - containerPort: 80
注意事项:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: microservice-1-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: microservice-1
  template:
    metadata:
      labels:
        app: microservice-1
    spec:
      containers:
        - name: microservice-1
          image: gcr.io/project-name/image-name
          ports:
            - containerPort: 80
我的部署在docker hub上托管时能够拉取映像,问题仅发生在GCR中拉取映像时

Env

  • 视窗10
  • Docker版本2.0.0.0-win78(28905)
  • Kubernetes 1.10.3(包含在桌面docker上)
我希望你能在这方面帮我


提前感谢查看错误消息,您提供的json文件似乎存在一些问题,
无法解析json文件

这背后的原因是您的json文件中有break(
newline
),因此无法秘密识别

请看这里,并尝试其中一种解决方案。您始终可以选择列出的其他身份验证方法


希望这有帮助。

确定找到了罪犯,它与Powershell命令提示符有关

我切换到使用gitbash,并遵循了本教程中的相同说明

成功了

罪魁祸首可能是在Powershell和/或命令提示符下创建imagePullSecrets时发生的。在读取json文件时,可能出现了与编码或其他相关的错误


希望这对任何人都有帮助。

您能在问题中包括Pod或部署规范吗?假设您有一个
imagePullSecret
,您是如何创建它的?@DavidMaze done。我仍在尝试调试此问题。另外,如果你要提供一个答案,你能不能让它一步一步地清晰地呈现在水晶上,不仅对我,对其他人也是如此。提前谢谢。不幸的是,它对我不起作用,同样的问题。我试着按照这里的说明去做,但还是没能成功。我甚至尝试手动删除json文件中的所有换行符,但仍然没有效果。此外,如果一切顺利,您能否提供您建议的解决方案的一步一步的过程,以便不仅对我,而且对其他人都清楚。我仍在尝试调试此问题。