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.34,kube-proxy 的nftables
模式需要 nft 命令列工具 1.0.1 或更高版本,以及核心 5.13 或更高版本。
出於測試/開發目的,您可以使用較舊的核心,最遠可追溯到 5.4,如果您在 kube-proxy 配置檔案中設定了 nftables.skipKernelVersionCheck
選項。但不建議在生產環境中使用,因為它可能會與其他系統上的 nftables 使用者造成問題。
版本 2 控制組
Kubernetes cgroup v1 支援從 Kubernetes v1.31 開始進入維護模式;建議使用 cgroup v2。在Linux 5.8 中,系統級別的 cpu.stat
檔案被新增到根 cgroup 以方便使用。
在 runc 文件中,由於缺少 freezer,不建議使用早於 5.2 的核心。
壓力停滯資訊 (PSI)
壓力停滯資訊在 Linux 核心版本 4.20 及以上版本中受支援,但需要以下配置:
- 核心必須使用
CONFIG_PSI=y
選項進行編譯。大多數現代發行版預設啟用此選項。您可以透過執行zgrep CONFIG_PSI /proc/config.gz
來檢查您的核心配置。 - 一些 Linux 發行版可能將 PSI 編譯到核心中,但預設停用它。如果是這種情況,您需要透過將
psi=1
引數新增到核心命令列來在啟動時啟用它。
其他核心要求
某些功能可能依賴於新的核心功能,並具有特定的核心要求。
- 遞迴只讀掛載:這透過使用 Linux 核心 v5.12 中新增的
mount_setattr
(2) 應用具有AT_RECURSIVE
標誌的MOUNT_ATTR_RDONLY
屬性來實現。 - 根據KEP-127,Pod 使用者名稱空間支援需要最低核心版本 6.5+。
- 對於節點系統交換,設定為
noswap
的 tmpfs 在核心 6.3 之前不受支援。
Linux 核心長期維護
活動的核心版本可以在kernel.org 上找到。
通常有幾個長期維護的核心版本可用於回溯移植舊核心樹的錯誤修復。此類核心僅應用重要的錯誤修復,並且通常不會發布非常頻繁,特別是對於較舊的樹。請參閱 Linux 核心網站上的長期類別中的版本列表。
下一步
- 有關更多詳細資訊,請參閱sysctls。
- 允許 kube-proxy 以nftables 模式執行。
- 有關cgroups v2 的更多資訊,請閱讀。
本頁上的專案引用了提供 Kubernetes 所需功能的第三方產品或專案。Kubernetes 專案作者不對這些第三方產品或專案負責。有關詳細資訊,請參閱CNCF 網站指南。
在提議新增額外第三方連結的更改之前,你應該閱讀內容指南。