在2023年8月15日,Kubernetes项目宣布社区拥有的Debian和RPM软件包仓库在pkgs.k8s.io上正式提供。这些新的软件包仓库取代了旧版的由Google托管的软件包仓库:apt.kubernetes.io和yum.kubernetes.io。pkgs.k8s.io的宣布博客文章强调,我们将在未来停止向旧版仓库发布软件包。
今天,我们正式弃用旧版软件包仓库(apt.kubernetes.io和yum.kubernetes.io),并宣布我们计划在2023年9月13日冻结仓库的内容。
请继续阅读以了解作为Kubernetes最终用户或分发商,这对您意味着什么,以及您可能需要采取哪些措施。
作为Kubernetes最终用户,这对我有什么影响?
这项变更直接影响那些手动安装最新版本的Kubernetes的用户,无论是按照官方的安装和升级指南手动安装,还是使用一个使用Kubernetes项目提供的软件包的Kubernetes安装程序。
这项变更还会影响那些在自己的个人电脑上运行Linux并使用旧版软件包仓库安装kubectl的用户。我们稍后会解释如何检查您是否受到影响。
如果您使用完全托管的Kubernetes,例如通过云提供商的服务,那么只有在您还使用来自旧版仓库的软件包在Linux上安装kubectl时,才会受到此变更的影响。云提供商通常使用自己的Kubernetes分发版本,因此他们不使用Kubernetes项目提供的软件包;更重要的是,如果有其他人为您管理Kubernetes,那么他们通常会负责进行此检查。
如果您有托管的控制平面但负责自己管理节点,并且其中任何节点运行Linux,则应检查您是否受到影响。
如果您按照官方的安装和升级指南自己管理您的集群,请按照此博客文章中的说明迁移到(新的)社区拥有的软件包仓库。
如果您使用的是使用Kubernetes项目提供的软件包的Kubernetes安装程序,请查看安装程序工具的通信渠道,了解您需要采取哪些步骤,如果需要的话,请与维护人员跟进,让他们了解这一变更。
受此变更影响的人员如下图所示:
这对Kubernetes分发商有什么影响?
如果您的项目中使用了旧版软件包仓库(例如,一个Kubernetes安装工具),您应尽快迁移到社区拥有的仓库,并告知您的用户有关这一变更以及他们需要采取哪些步骤的信息。
变更时间表
2023年8月15日:
Kubernetes宣布了一个新的、由社区管理的Linux软件包源,用于Kubernetes组件的Linux软件包
2023年8月31日(本公告):
Kubernetes正式弃用旧版软件包仓库
2023年9月13日左右:
Kubernetes将冻结旧版软件包仓库(apt.kubernetes.io和yum.kubernetes.io)。冻结将在计划于2023年9月发布的补丁版本之后立即进行。
计划于2023年9月发布的Kubernetes补丁版本(v1.28.2、v1.27.6、v1.26.9、v1.25.14)将同时发布到社区拥有的仓库和旧版仓库。
我们将在发布2023年9月的补丁版本后冻结旧版仓库,这意味着我们将彻底停止向旧版仓库发布软件包。
从2023年10月开始,对于v1.28、v1.27、v1.26和v1.25的补丁版本,我们将仅发布软件包到新的软件包仓库(pkgs.k8s.io)。
未来的小版本发布如何?
Kubernetes 1.29及以后的版本将仅发布软件包到社区拥有的仓库(pkgs.k8s.io)。
我可以继续使用旧版软件包仓库吗?
旧版软件包仓库中的现有软件包将在可预见的未来内保持可用。但是,Kubernetes项目无法提供有关这一时限的任何保证。废弃的旧版软件包仓库及其内容可能会在未来的任何时间被移除,而不会有进一步的通知期。
Kubernetes项目强烈建议尽快迁移到新的社区拥有的仓库。
鉴于在2023年9月13日之后,将不再向旧版软件包仓库发布任何新版本,因此您将无法升级到从那个日期开始发布的任何补丁版本或小版本发布。
尽管该项目会尽一切努力发布安全软件,但将来可能会出现Kubernetes的高严重性漏洞,因此需要升级到重要版本。我们宣布的建议将帮助您为将来的任何安全更新做好准备,无论是微不足道的还是紧急的。
我如何检查是否正在使用旧版软件包仓库?
检查是否正在使用旧版软件包仓库的步骤取决于您是否在集群中使用基于Debian的发行版(如Debian、Ubuntu等)或基于RPM的发行版(如CentOS、RHEL、Rocky Linux等)。
请在集群中的一个节点上执行以下操作。
基于Debian的Linux发行版
在基于Debian的发行版上,仓库定义(源)位于/etc/apt/sources.list和/etc/apt/sources.list.d/中。检查这两个位置,尝试找到一个类似以下内容的软件包仓库定义:
deb [signed-by=/etc/apt/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main
如果你找到一个类似这样的仓库定义,那么你正在使用遗留的仓库,需要进行迁移。
如果仓库定义使用的是pkgs.k8s.io,那么你已经在使用由社区托管的仓库,无需采取任何行动。
在大多数系统上,这个仓库定义应该位于/etc/apt/sources.list.d/kubernetes.list(正如Kubernetes文档建议的那样),但在某些系统上可能位于不同的位置。
如果你找不到与Kubernetes相关的仓库定义,很可能你不是使用包管理器来安装Kubernetes的,因此无需采取任何行动。
基于RPM的Linux发行版
如果你使用的是yum包管理器,仓库定义位于/etc/yum.repos.d;如果你使用的是dnf包管理器,仓库定义则位于/etc/dnf/dnf.conf和/etc/dnf/repos.d/。检查这些位置,尝试找到一个类似这样的包仓库定义:
[kubernetes]name=Kubernetesbaseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearchenabled=1gpgcheck=1gpgkey=https://packages.cloud.google.com/yum/doc/rpm-package-key.gpgexclude=kubelet kubeadm kubectl
如果你找到一个类似这样的仓库定义,那么你正在使用遗留的仓库,需要进行迁移。
如果仓库定义使用的是pkgs.k8s.io,那么你已经在使用由社区托管的仓库,无需采取任何行动。
在大多数系统上,该仓库定义应位于/etc/yum.repos.d/kubernetes.repo(正如Kubernetes文档所推荐的),但在某些系统上,它可能位于不同的位置。
如果你找不到与Kubernetes相关的仓库定义,很可能你不使用包管理器来安装Kubernetes,也无需采取任何行动。
如何迁移到新的由社区运营的仓库?
有关如何迁移到新的由社区管理的软件包的更多信息,请参阅pkgs.k8s.io的公告博客文章。
为什么Kubernetes项目要做出这个改变?
自Kubernetes v1.5以来,Kubernetes一直只发布软件包到由Google托管的仓库,已经有七年之久!紧随我们迁移到我们自己社区管理的registry.k8s.io之后,我们现在将Kubernetes软件包仓库迁移到我们自己的社区管理基础设施。感谢Google这些年来的持续托管和支持,但这次转变标志着该项目迁移到完全由社区拥有的基础设施的又一个重要里程碑。
是否有Kubernetes工具可帮助我迁移?
关于工具方面,我们目前没有任何公告。作为Kubernetes用户,您需要手动修改配置以使用新的仓库。自动从遗留仓库迁移到由社区拥有的仓库在技术上具有挑战性,我们希望避免与此相关的潜在风险。
致谢
首先,我们要感谢Alphabet公司的贡献。Google的员工提供了他们的时间;Google作为一家企业,提供了用于提供软件包的基础设施,并为这些软件包提供了可信数字签名的安全上下文。这对于Kubernetes的采用和增长至关重要。
发布软件可能不那么引人注目,但它非常重要。Kubernetes贡献者社区内的许多人为我们作为一个项目构建和发布软件包的新方法做出了贡献。
最后,我们要再次感谢SUSE的帮助。SUSE的OpenBuildService是支持新的社区管理软件包仓库的技术基础。