【问题标题】:GKE Image pull errors for specific public docker hub images特定公共 docker hub 镜像的 GKE Image pull 错误
【发布时间】:2020-06-15 06:09:07
【问题描述】:

我一直在使用 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

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

【问题讨论】:

  • 嗨马里奥;不,它是一个公共注册表(docker hub);是什么让你说它清楚地表明需要身份验证?我按照您的建议检查了日志,但除了很多 Error syncing pod..., skipping: failed to "StartContainer" for "postgres" with ImagePullBackOff: "Back-off pulling image \"postgres:alpine\"" 之外没有其他详细信息
  • 让我们删除这些 cmets,因为我最初的推理可能不是最准确的;)看起来这是一个很常见的问题,解决方案可能很简单(参见:我的回答)。
  • 顺便说一句。您是在使用标准 Container-Optimized OS 还是对您而言不同的 GKE 节点

标签: google-kubernetes-engine


【解决方案1】:

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

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

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

GitHub上也有报道:

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

以及docker forums

总结一下发现:

  1. 看起来问题在某些情况下可能与使用额外的防火墙或proxy 有关。另请参阅this post
  2. 可能是related with DNS settings 并将8.8.8.8 设置为主DNS 通常可以解决问题。 GitHub 上不同线程中的许多人报告说这个解决方案对他们有用,例如herehere

或者甚至只是restarting docker 可能会有所帮助;)

在处理本地 Kubernetes 安装时,实际上可能更容易出现上述问题。

关于GKE,好像similar problem也被举报了。 this public issue 中的评论可能表明该问题也可能出现在某些较新的 GKE 版本中。

我发现official GKE docs 中也描述了这种情况,但通常会发生这种情况,当您使用 private clusters 时会收到类似的错误消息,但它可能表明即使在 标准 GKE 集群中也存在问题可能与与公共互联网的有限出站连接有关。

【讨论】:

  • 太棒了!没错,它来自私有集群中的 pod,因此没有公共互联网连接。一些公共图像虽然有效,但非常令人困惑,但这一定是因为它们仍然可以从我猜的某个地方的缓存中获得。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多