作者:Bob Killen (Google)、Chris Short (AWS)、Jeremy Rickard (Microsoft)、Marko Mudrinić (Kubermatic)、Tim Bannister (The Scale Factory)
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 项目提供的包)。
如果您在自己的PC上运行Linux 并kubectl使用旧版软件包存储库进行安装,则此更改也会影响您。我们稍后将解释如何检查您是否受到影响。
如果您使用完全托管的Kubernetes,例如通过云提供商的服务,则只有当您还kubectl使用旧存储库中的软件包安装在Linux PC上时,您才会受到此更改的影响。云提供商通常使用自己的 Kubernetes 发行版,因此他们不使用Kubernetes项目提供的包;更重要的是,如果其他人为你管理 Kubernetes,那么他们通常会负责该检查。
如果您有托管控制平面 ,但您自己负责管理节点,并且其中任何节点都运行Linux,则您应该检查是否受到影响。
如果您按照官方安装和升级说明自行管理集群,请按照此博客文章中的说明迁移到(新的)社区拥有的软件包存储库。
如果您使用的 Kubernetes 安装程序使用 Kubernetes 项目提供的包,请检查安装程序工具的通信渠道,了解有关您需要采取哪些步骤的信息,最后如果需要,请与维护人员联系,让他们了解此更改。
如果您使用旧存储库作为项目的一部分(例如 Kubernetes 安装程序工具),您应该尽快迁移到社区拥有的存储库
变更时间表
- 2023 年 8 月 15 日: Kubernetes 宣布推出一个新的社区管理的 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)将同时将软件包发布到社区拥有的存储库和旧存储库。
在削减 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 等)
在集群中的一个节点上运行这些指令。
存储库定义(源)位于/etc/apt/sources.list
基于/etc/apt/sources.list.d/
Debian的发行版中。检查这两个位置并尝试找到如下所示的包存储库定义:
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发行版
/etc/yum.repos.d如果您正在使用 包管理器,则存储库定义位于yum,或者/etc/dnf/dnf.conf如果/etc/dnf/repos.d/您正在使用 dnf包管理器。检查这些位置并尝试找到如下所示的包存储库定义:
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch
enabled=1
gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
exclude=kubelet kubeadm kubectl
如果您发现像这样的存储库定义,则您正在使用旧存储库并且需要迁移。
如果存储库定义使用pkgs.k8s.io
,则您已经在使用社区托管的存储库,并且无需执行任何操作。
在大多数系统上,该存储库定义应位于/etc/yum.repos.d/kubernetes.repo
(按照 Kubernetes 文档的建议),但在某些系统上它可能位于不同的位置。
如果您找不到与 Kubernetes 相关的存储库定义,则很可能您没有使用包管理器来安装 Kubernetes,并且不需要执行任何操作。
为什么 Kubernetes 项目要做出这样的改变?
自Kubernetes v1.5 或过去七年以来,Kubernetes一直只将包发布到Google托管的存储库!沿着迁移到社区管理的注册表的脚步,registry.k8s.io
我们现在正在将Kubernetes包存储库迁移到我们自己的社区管理的基础设施。我们感谢Google这些年来持续的托管和支持,但这一转变标志着该项目迁移到完整社区拥有的基础设施的目标的另一个重要里程碑。
有Kubernetes工具可以帮助我迁移吗?
我们没有任何关于那里的工具的公告。作为 Kubernetes 用户,您必须手动修改配置才能使用新存储库。自动从遗留存储库迁移到社区拥有的存储库在技术上具有挑战性,我们希望避免与此相关的任何潜在风险。
致谢
首先,我们要感谢Alphabet的贡献。Google的员工已经投入了时间;作为一家企业,谷歌既提供了服务包的基础设施,也提供了为这些包提供可信数字签名的安全上下文。这些对于Kubernetes的采用和发展非常重要。
发布软件可能并不光彩,但很重要。Kubernetes 贡献者社区中的许多人都为我们作为一个项目构建和发布包的新方式做出了贡献。
最后,我们要再次感谢SUSE的帮助。SUSE的OpenBuildService 是为新的社区管理的软件包存储库提供支持的技术。