特定公共 docker hub 映像的 GKE 映像拉取错误

Aer*_*ert 3 google-kubernetes-engine

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

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

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

  • redis:alpine
  • postgres

以及那些没有的

  • postgres:alpine
  • postgres:12

我验证了我可以使用将所有这些图像拉到我的本地计算机上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
Run Code Online (Sandbox Code Playgroud)

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

mar*_*rio 5

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

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

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

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.8,因为您的主 DNS 通常可以解决问题。GitHub 上不同线程中的许多人都报告说这个解决方案对他们有用,例如此处此处

或者甚至简单地重新启动 docker可能会有所帮助;)

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

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

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