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

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

Kubernetes 项目运行一个名为 registry.k8s.io 的社区所属的镜像仓库,用于托管其容器镜像。从 2023 年 4 月 3 日起,旧的镜像仓库 k8s.gcr.io 将被冻结,Kubernetes 及其相关子项目将不再向该旧仓库推送任何镜像。

这个新的镜像仓库 registry.k8s.io 取代了旧仓库,并且已经正式发布(GA)好几个月了。我们曾发表过一篇博客文章,介绍了它为社区和 Kubernetes 项目带来的好处。该文章还宣布了未来的 Kubernetes 版本将不再发布到旧仓库。现在,这个时刻已经到来。

这一变化对贡献者意味着什么

  • 如果你是某个子项目的维护者,你需要更新你的清单文件和 Helm charts 以使用新的镜像仓库。

这一变化对最终用户意味着什么

  • Kubernetes 1.27 版本将不会发布到旧仓库。
  • 从四月起,1.24、1.25 和 1.26 的补丁版本将不再发布到旧仓库。请阅读下面的时间线,了解在旧仓库发布的最终补丁版本的详细信息。
  • 从 1.25 版本开始,默认的镜像仓库已设置为 registry.k8s.io。这个值可以在 kubeadmkubelet 中被覆盖,但如果将其设置为 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。同时,也非常感谢我们与云提供商合作伙伴的联络人朋友们:来自 Amazon 的 Jay Pipes 和来自 Google 的 Jon Johnson Jr.。