Linux 核心版本需求
許多功能仰賴特定的核心功能,並且具有最低核心版本需求。然而,僅僅依賴核心版本號碼對於某些作業系統發行版可能不足夠,因為 RHEL、Ubuntu 和 SUSE 等發行版的維護者經常將選定的功能向後移植到較舊的核心版本(保留較舊的核心版本)。
Pod sysctls
在 Linux 上,sysctl()
系統呼叫會在執行階段配置核心參數。有一個名為 sysctl
的命令列工具,您可以使用它來配置這些參數,並且許多參數透過 proc
檔案系統公開。
某些 sysctl 僅在您擁有足夠新的核心時才可用。
以下 sysctl 具有最低核心版本需求,並且在安全集合中受到支援
net.ipv4.ip_local_reserved_ports
(自 Kubernetes 1.27 起,需要核心 3.16+);net.ipv4.tcp_keepalive_time
(自 Kubernetes 1.29 起,需要核心 4.5+);net.ipv4.tcp_fin_timeout
(自 Kubernetes 1.29 起,需要核心 4.6+);net.ipv4.tcp_keepalive_intvl
(自 Kubernetes 1.29 起,需要核心 4.5+);net.ipv4.tcp_keepalive_probes
(自 Kubernetes 1.29 起,需要核心 4.5+);net.ipv4.tcp_syncookies
(自核心 4.6+ 起命名空間化)。net.ipv4.tcp_rmem
(自 Kubernetes 1.32 起,需要核心 4.15+)。net.ipv4.tcp_wmem
(自 Kubernetes 1.32 起,需要核心 4.15+)。net.ipv4.vs.conn_reuse_mode
(在ipvs
代理模式中使用,需要核心 4.1+);
kube proxy nftables
代理模式
對於 Kubernetes 1.32,kube-proxy 的 nftables
模式需要 1.0.1 或更高版本的 nft 命令列工具,以及核心 5.13 或更高版本。
為了測試/開發目的,如果您在 kube-proxy 組態中設定 nftables.skipKernelVersionCheck
選項,則可以使用舊版核心,最早可追溯到 5.4。但這不建議在生產環境中使用,因為它可能會導致系統上其他 nftables 使用者出現問題。
版本 2 控制群組
從 Kubernetes v1.31 開始,Kubernetes cgroup v1 支援處於維護模式;建議使用 cgroup v2。在 Linux 5.8 中,系統層級的 cpu.stat
檔案已新增至根 cgroup 以方便使用。
在 runc 文件中,由於缺少 freezer,不建議使用舊於 5.2 的核心。
其他核心需求
某些功能可能依賴新的核心功能,並且具有特定的核心需求
- 遞迴唯讀掛載:這是透過使用 Linux 核心 v5.12 中新增的
mount_setattr
(2) 以AT_RECURSIVE
標誌套用MOUNT_ATTR_RDONLY
屬性來實作的。 - 根據 KEP-127,Pod 使用者命名空間支援需要最低核心版本 6.5+。
- 對於節點系統交換,在核心 6.3 之前不支援設定為
noswap
的 tmpfs。
Linux 核心長期維護
作用中的核心版本可以在 kernel.org 中找到。
通常會提供多個長期維護核心版本,目的是為較舊的核心樹系向後移植錯誤修正。只有重要的錯誤修正才會套用到此類核心,而且它們通常不會看到非常頻繁的發行版本,尤其是對於較舊的樹系。請參閱 Linux 核心網站,以取得長期類別中的發行版本清單。
下一步
- 請參閱 sysctls 以取得更多詳細資訊。
- 允許在 nftables 模式下執行 kube-proxy。
- 請在 cgroups v2 中閱讀更多資訊。
此頁面上的項目參考協力廠商產品或專案,這些產品或專案提供 Kubernetes 所需的功能。Kubernetes 專案作者不對這些協力廠商產品或專案負責。請參閱 CNCF 網站指南以取得更多詳細資訊。
在提出新增額外協力廠商連結的變更之前,您應該閱讀內容指南。