Kubernetes 舊軟體包倉庫將於 2023 年 9 月 13 日凍結

2023 年 8 月 15 日,Kubernetes 專案宣佈社群擁有的 Debian 和 RPM 軟體包倉庫在 pkgs.k8s.io 上正式可用。新的軟體包倉庫將替代由 Google 託管的舊版軟體包倉庫:apt.kubernetes.ioyum.kubernetes.io。關於 pkgs.k8s.io公告博文強調,我們未來將停止向舊版倉庫釋出軟體包。

今天,我們正式棄用舊版軟體包倉庫(apt.kubernetes.ioyum.kubernetes.io),並宣佈計劃於 2023 年 9 月 13 日起凍結這些倉庫的內容。

請繼續閱讀,以瞭解這對您作為使用者或分發者意味著什麼,以及您可能需要採取哪些步驟。

ℹ️ 更新 (2024 年 3 月 26 日): 舊版由 Google 託管的倉庫已於 2024 年 3 月 4 日下線。已無法再從舊版由 Google 託管的軟體包倉庫中安裝 Kubernetes 軟體包。

作為 Kubernetes 終端使用者,這對我有何影響?

此變更會影響到那些直接安裝上游 Kubernetes 版本的使用者,無論他們是手動遵循官方安裝升級指南,還是使用某個 Kubernetes 安裝器來安裝由 Kubernetes 專案提供的軟體包。

如果您在個人 PC 上執行 Linux,並且使用舊版軟體包倉庫安裝了 kubectl,此變更也會影響到您。稍後我們將解釋如何檢查您是否受到影響。

如果您使用完全託管的 Kubernetes,例如透過雲提供商的服務,那麼只有當您也使用舊版倉庫的軟體包在 Linux PC 上安裝了 kubectl 時,此變更才會影響到您。雲提供商通常使用自己的 Kubernetes 發行版,因此他們不使用 Kubernetes 專案提供的軟體包;更重要的是,如果其他人為您管理 Kubernetes,那麼他們通常會負責進行此項檢查。

如果您有一個託管的控制平面,但您負責自己管理節點,並且其中任何節點執行 Linux,您應該檢查您是否受到影響。

如果您是按照官方安裝和升級指南自行管理叢集,請遵循本博文中的說明,遷移到(新的)社群擁有的軟體包倉庫。

如果您使用的 Kubernetes 安裝器依賴於 Kubernetes 專案提供的軟體包,請檢視該安裝器工具的溝通渠道,瞭解您需要採取的步驟,並在必要時聯絡維護人員,告知他們此變更。

下圖以視覺化的形式展示了誰會受到此變更的影響(點選圖表檢視大圖)

Visual explanation of who's affected by the legacy repositories being deprecated and frozen. Textual explanation is available above this diagram.

作為 Kubernetes 分發者,這對我有何影響?

如果您在您的專案中(例如,一個 Kubernetes 安裝工具)使用了舊版倉庫,您應該儘快遷移到社群擁有的倉庫,並通知您的使用者此變更以及他們需要採取的步驟。

變更時間線

(2024 年 3 月 26 日更新)

  • 2023 年 8 月 15 日
    Kubernetes 宣佈為 Kubernetes 元件的 Linux 軟體包提供一個新的、由社群管理的來源
  • 2023 年 8 月 31 日
    (本次公告) Kubernetes 正式棄用舊版軟體包倉庫
  • 2023 年 9 月 13 日(大約)
    Kubernetes 將凍結舊版軟體包倉庫(apt.kubernetes.ioyum.kubernetes.io)。凍結將在 2023 年 9 月計劃的補丁版本釋出後立即進行。
  • 2024 年 1 月 12 日
    Kubernetes 宣佈計劃於 2024 年 1 月移除舊版軟體包倉庫
  • 2024 年 3 月 4 日
    舊版軟體包倉庫已被移除。已無法再從舊版軟體包倉庫安裝 Kubernetes 軟體包

計劃於 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 v1.24.0 開始的版本的 Linux 軟體包可在 Kubernetes 軟體包倉庫(pkgs.k8s.io)中找到。Kubernetes 沒有為更早版本的 Kubernetes 提供官方的 Linux 軟體包;但是,您的 Linux 發行版可能會提供自己的軟體包。

我還能繼續使用舊版軟體包倉庫嗎?

(2024 年 3 月 26 日更新)

舊版由 Google 託管的倉庫已於 2024 年 3 月 4 日下線。已無法再從舊版由 Google 託管的軟體包倉庫安裝 Kubernetes 軟體包。

舊版倉庫中現有的軟體包在可預見的未來仍將可用。然而,Kubernetes 專案無法對其可用時長提供任何保證。已棄用的舊版倉庫及其內容可能在未來的任何時候被移除,且不會再有進一步的通知期。

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=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,因此無需採取任何行動。

如何遷移到新的社群運營的倉庫?

有關如何遷移到新的社群管理軟體包的更多資訊,請參閱關於 pkgs.k8s.io公告博文

Kubernetes 專案為何要進行此項變更?

自 Kubernetes v1.5 以來,Kubernetes 一直僅在 Google 託管的倉庫上釋出軟體包,至今已有年之久!繼遷移到我們社群管理的映象倉庫 registry.k8s.io 之後,我們現在正在將 Kubernetes 軟體包倉庫遷移到我們自己的社群管理的基礎設施上。我們感謝 Google 多年來持續的託管和支援,但這次遷移標誌著專案向完全社群擁有的基礎設施遷移目標的又一個重要里程碑。

是否有 Kubernetes 工具可以幫助我遷移?

關於這方面的工具,我們目前沒有任何公告。作為 Kubernetes 使用者,您必須手動修改您的配置以使用新的倉庫。從舊版倉庫到社群擁有的倉庫的自動化遷移在技術上具有挑戰性,我們希望避免與此相關的任何潛在風險。

致謝

首先,我們要感謝 Alphabet 的貢獻。Google 的員工付出了他們的時間;Google 作為一家企業,既提供了服務軟體包的基礎設施,也為這些軟體包提供了可信數字簽名的安全環境。這些對於 Kubernetes 的普及和發展至關重要。

釋出軟體可能並不光鮮,但它很重要。Kubernetes 貢獻者社群中的許多人都為我們專案構建和釋出軟體包的新方式做出了貢獻。

最後,我們要再次感謝 SUSE 的幫助。來自 SUSE 的 OpenBuildService 是驅動新的社群管理軟體包倉庫的技術。