本文发布时间已超过一年。较旧的文章可能包含过时的内容。请检查页面中的信息自发布以来是否已变得不正确。

k8s.gcr.io 镜像仓库将于 2023 年 4 月 3 日起冻结

Kubernetes 项目运行一个名为 registry.k8s.io 的社区拥有的镜像仓库,用于托管其容器镜像。在 2023 年 4 月 3 日,旧的仓库 k8s.gcr.io 将被冻结,并且 Kubernetes 和相关子项目的任何新镜像都不会再推送到旧的仓库。

这个仓库 registry.k8s.io 取代了旧的仓库,并且已经普遍可用几个月了。我们发布了一篇博客文章,介绍了它对社区和 Kubernetes 项目的好处。这篇文章还宣布,未来版本的 Kubernetes 将不会在旧仓库中提供。现在,时间到了。

此更改对贡献者意味着什么

  • 如果您是子项目的维护者,则需要更新您的清单和 Helm 图表以使用新的仓库。

此更改对最终用户意味着什么

  • 1.27 Kubernetes 版本将不会发布到旧的仓库。
  • 从 4 月起,1.24、1.25 和 1.26 的补丁版本将不再发布到旧的仓库。请阅读下面的时间表,了解旧仓库中最终补丁版本的详细信息。
  • 从 1.25 开始,默认镜像仓库已设置为 registry.k8s.io。这个值在 kubeadmkubelet 中是可以覆盖的,但是对于 4 月之后的新版本,将其设置为 k8s.gcr.io 将会失败,因为它们不会出现在旧的仓库中。
  • 如果您想提高集群的可靠性并消除对社区拥有的仓库的依赖,或者您在外部流量受限的网络中运行 Kubernetes,则应考虑托管本地镜像仓库镜像。一些云供应商可能会为此提供托管解决方案。

更改的时间表

  • k8s.gcr.io 将于 2023 年 4 月 3 日被冻结
  • 预计 1.27 将于 2023 年 4 月 12 日发布
  • k8s.gcr.io 上的最后一个 1.23 版本将是 1.23.18(1.23 版本在冻结之前结束生命周期)
  • k8s.gcr.io 上的最后一个 1.24 版本将是 1.24.12
  • k8s.gcr.io 上的最后一个 1.25 版本将是 1.25.8
  • k8s.gcr.io 上的最后一个 1.26 版本将是 1.26.3

下一步是什么

请确保您的集群不依赖于旧的镜像仓库。例如,您可以运行此命令来列出 Pod 使用的镜像

kubectl get pods --all-namespaces -o jsonpath="{.items[*].spec.containers[*].image}" |\
tr -s '[[:space:]]' '\n' |\
sort |\
uniq -c

可能还有其他对旧镜像仓库的依赖项。请确保您检查任何潜在的依赖项,以保持集群的健康和最新状态。

致谢

改变是艰难的,并且发展我们的镜像服务平台对于确保项目的可持续未来是必要的。我们努力为每个使用 Kubernetes 的人做得更好。我们社区各个角落的许多贡献者一直在努力工作,以确保我们做出最佳决策,执行计划,并尽最大努力传达这些计划。

感谢来自 SIG K8s Infra 的 Aaron Crickenberger、Arnaud Meukam、Benjamin Elder、Caleb Woodbine、Davanum Srinivas、Mahamed Ali 和 Tim Hockin,来自 SIG Node 的 Brian McQueen 和 Sergey Kanzhelev,来自 SIG Cluster Lifecycle 的 Lubomir Ivanov,来自 SIG Release 的 Adolfo García Veytia、Jeremy Rickard、Sascha Grunert 和 Stephen Augustus,来自 SIG Contribex 的 Bob Killen 和 Kaslin Fields,以及来自安全响应委员会的 Tim Allclair。还要非常感谢我们的朋友,他们与我们的云提供商合作伙伴充当联络人:来自亚马逊的 Jay Pipes 和来自 Google 的 Jon Johnson Jr。