首页 > 解决方案 > 特定公共 docker hub 镜像的 GKE 镜像拉取错误

问题描述

我一直在使用 GKE 部署一些公共镜像,例如 redis 和 postgres。但是我遇到了一个有趣的问题,它不会提取图像,似乎带有特定的标签。我不断收到的错误是:

无法提取图像“postgres:alpine”:rpc 错误:代码 = 未知 desc = 来自守护进程的错误响应:获取https://registry-1.docker.io/v2/:net/http:在等待连接时取消请求( Client.Timeout 在等待标头时超出)

我一直试图在有效和无效的模式中发现一种模式,似乎没有任何标签的模式总是有效的;一些有效的图像示例

而那些没有的:

我验证我可以使用docker pull.

这是我使用的示例部署 kube 文件:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: postgres
  labels:
    app: postgres
spec:
  replicas: 1
  selector:
    matchLabels:
      app: postgres
  template:
    metadata:
      labels:
        app: postgres
    spec:
      containers:
        - image: postgres:alpine
          name: postgres
          ports:
            - containerPort: 5432
              name: postgres

我希望我错过了一些非常明显的东西。干杯。

标签: google-kubernetes-engine

解决方案


我希望我错过了一些非常明显的东西。干杯。

我认为您没有遗漏任何内容,并且可以肯定任何明显且可以在您的配置中轻松指出的内容。

我搜索了一些与这个问题相关的信息,结果发现它已经被广泛讨论过,例如这里并提供了不同的解决方案。

GitHub上也有报道:

  1. https://github.com/docker/for-win/issues/611
  2. https://github.com/moby/moby/issues/32270

以及在docker 论坛上

总结一下调查结果:

  1. 看起来问题在某些情况下可能与使用额外的防火墙或代理有关。另见这篇文章
  2. 可能与 DNS 设置有关,设置为主8.8.8.8DNS 通常可以解决问题。GitHub 上不同线程中的许多人报告说这个解决方案对他们有用,例如这里这里

或者甚至只是重新启动 docker可能会有所帮助;)

在处理本地 Kubernetes 安装时,上述问题实际上可能更有可能发生。

至于GKE,似乎也报告了类似的问题。此公开问题中的评论可能表明该问题也可能出现在某些较新的 GKE 版本中。

我发现官方 GKE 文档中也对此进行了描述,但通常会发生这种情况,并且在使用私有集群时会收到类似的错误消息,但这可能表明即使在标准 GKE 集群中,该问题也可能与与公共 Internet 的出站连接受限有关.


推荐阅读