google-kubernetes-engine - 特定公共 docker hub 镜像的 GKE 镜像拉取错误
问题描述
我一直在使用 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
我希望我错过了一些非常明显的东西。干杯。
解决方案
我希望我错过了一些非常明显的东西。干杯。
我认为您没有遗漏任何内容,并且可以肯定任何明显且可以在您的配置中轻松指出的内容。
我搜索了一些与这个问题相关的信息,结果发现它已经被广泛讨论过,例如这里并提供了不同的解决方案。
GitHub上也有报道:
以及在docker 论坛上。
总结一下调查结果:
- 看起来问题在某些情况下可能与使用额外的防火墙或代理有关。另见这篇文章。
- 可能与 DNS 设置有关,设置为主
8.8.8.8
DNS 通常可以解决问题。GitHub 上不同线程中的许多人报告说这个解决方案对他们有用,例如这里或这里。
或者甚至只是重新启动 docker可能会有所帮助;)
在处理本地 Kubernetes 安装时,上述问题实际上可能更有可能发生。
至于GKE,似乎也报告了类似的问题。此公开问题中的评论可能表明该问题也可能出现在某些较新的 GKE 版本中。
我发现官方 GKE 文档中也对此进行了描述,但通常会发生这种情况,并且在使用私有集群时会收到类似的错误消息,但这可能表明即使在标准 GKE 集群中,该问题也可能与与公共 Internet 的出站连接受限有关.
推荐阅读
- c# - ASP.NET MVC 控制器不会从 LINQ lambda 捕获异常
- javascript - AudioContext 声音不会立即开始
- php - Symfony 5 多个登录表单
- hangfire - Hangfire 重复作业在 1-2 次后抛出错误
- git - 在一个分支中获取我更改的所有文件
- cypress - 是否可以防止赛普拉斯等待服务器?
- ipad - 在 iPad Sumoselect 下拉菜单中自动填充
- css - How to make these Buttons look similar in Size
- python - save() 缺少 1 个必需的位置参数:'tran'
- python - Python Selenium 从类中获取文本