gpt4 book ai didi

azure - AKS 无法提取镜像 - 大小验证失败

转载 作者:行者123 更新时间:2023-12-03 02:21:14 25 4
gpt4 key购买 nike

我在 Gitlab 上设置了一个自定义 docker 镜像注册表,但由于某种原因 AKS 无法从那里提取镜像。
抛出的错误是:

Failed to pull image "{registry}/{image}:latest": rpc error: code = FailedPrecondition desc = 
failed to pull and unpack image "{registry}/{image}:latest": failed commit on ref "layer-sha256:e1acddbe380c63f0de4b77d3f287b7c81cd9d89563a230692378126b46ea6546": "layer-sha256:e1acddbe380c63f0de4b77d3f287b7c81cd9d89563a230692378126b46ea6546" failed size validation: 0 != 27145985: failed precondition

有趣的是,该图像没有带有id的图层

sha256:e1acddbe380c63f0de4b77d3f287b7c81cd9d89563a230692378126b46ea6546

也许 AKS 端缓存了某些内容?在重新部署之前,我删除了 pod 以及部署。

我找不到太多关于此类错误的信息,而且我不知道可能是什么原因造成的。从本地 Docker 环境中提取相同的镜像可以完美地工作。
任何提示将不胜感激!

最佳答案

• 您可以尝试扩展注册表以在所有节点上运行。 Kubernetes Controller 尝试变得智能并在内部路由节点请求,而不是将流量发送到负载均衡器 IP。但问题是,如果该节点上没有注册表服务,数据包将无处可去。因此,请扩大规模或通过非 AKS LB 进行路由。

• 另外,清理${containerd 文件夹}/io.containerd.content.v1.content/ingest 中的图像层缓存文件夹。当某些图层数据损坏时,Containerd 不会自动清理此缓存。您还可以尝试清除此路径${containerd文件夹}/io.containerd.content.v1.content/ingest中的内容。

• 这可能是 AKS 集群与 Gitlab 上的 docker 镜像注册表之间的 TCP 网络连接问题,因此您可以尝试使用代理并将其配置为在“X”字节数据传输后关闭它们之间的连接。当拉取的重试从该层的 0% 开始时转移,这会导致相同的错误,因为一段时间后我们关闭连接,并且该层再次没有完全拉取。因此,建议使用位于集群附近的注册表以获得更高的吞吐量。

• 另外尝试重新启动 AKS 集群与 gitlab 上的 docker 镜像注册表之间的通信管道,它暂时修复了此问题,直到问题再次出现。

请找到以下链接以获取更多信息:-

https://docs.gitlab.com/ee/user/packages/container_registry/

关于azure - AKS 无法提取镜像 - 大小验证失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68854858/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com