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
模式需要 nft 命令行工具的 1.0.1 或更高版本,以及内核 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) 将MOUNT_ATTR_RDONLY
属性与AT_RECURSIVE
标志一起应用来实现的。 - 根据 KEP-127,Pod 用户命名空间支持需要最低内核版本 6.5+。
- 对于 节点系统交换,在内核 6.3 之前不支持设置为
noswap
的 tmpfs。
Linux 内核长期维护
活跃的内核版本可以在 kernel.org 中找到。
通常会提供几个长期维护内核版本,用于为较旧的内核树向后移植错误修复。只有重要的错误修复才会应用于此类内核,并且它们通常不会看到非常频繁的发布,尤其是对于较旧的内核树。请参阅 Linux 内核网站上的版本列表,位于长期类别中。
下一步
- 有关更多详细信息,请参阅 sysctls。
- 允许在 nftables 模式下运行 kube-proxy。
- 在 cgroups v2 中阅读更多信息。
此页面上的项目指的是第三方产品或项目,这些产品或项目提供 Kubernetes 所需的功能。 Kubernetes 项目的作者不对这些第三方产品或项目负责。有关详细信息,请参阅 CNCF 网站指南。
在提出添加额外的第三方链接的更改之前,应阅读内容指南。