Linux 内核版本要求
许多功能依赖于特定的内核功能,并且具有最低内核版本要求。然而,对于某些操作系统发行版而言,仅仅依靠内核版本号可能不够,因为 RHEL、Ubuntu 和 SUSE 等发行版的维护者通常会将选定的功能向后移植到旧的内核版本中(保留旧的内核版本号)。
Pod sysctl
在 Linux 上,sysctl()
系统调用在运行时配置内核参数。有一个名为 sysctl
的命令行工具可以用来配置这些参数,其中许多通过 proc
文件系统暴露出来。
有些 sysctl 仅在内核版本足够新时才可用。
以下 sysctl 有最低内核版本要求,并在安全集合中受支持
net.ipv4.ip_local_reserved_ports
(从 Kubernetes 1.27 起,需要 kernel 3.16+);net.ipv4.tcp_keepalive_time
(从 Kubernetes 1.29 起,需要 kernel 4.5+);net.ipv4.tcp_fin_timeout
(从 Kubernetes 1.29 起,需要 kernel 4.6+);net.ipv4.tcp_keepalive_intvl
(从 Kubernetes 1.29 起,需要 kernel 4.5+);net.ipv4.tcp_keepalive_probes
(从 Kubernetes 1.29 起,需要 kernel 4.5+);net.ipv4.tcp_syncookies
(从 kernel 4.6+ 起命名空间化)。net.ipv4.tcp_rmem
(从 Kubernetes 1.32 起,需要 kernel 4.15+)。net.ipv4.tcp_wmem
(从 Kubernetes 1.32 起,需要 kernel 4.15+)。net.ipv4.vs.conn_reuse_mode
(用于ipvs
代理模式,需要 kernel 4.1+);
kube-proxy 的 nftables 代理模式
对于 Kubernetes 1.33,nftables
模式的 kube-proxy 需要 1.0.1 或更高版本的 nft 命令行工具,以及 kernel 5.13 或更高版本。
出于测试/开发目的,如果设置了 nftables.skipKernelVersionCheck
选项,可以使用更旧的内核,低至 5.4 版本。但不建议在生产环境中使用,因为它可能与系统上的其他 nftables 用户发生冲突。
控制组版本 2
从 Kubernetes v1.31 起,Kubernetes cgroup v1 支持进入维护模式;建议使用 cgroup v2。在Linux 5.8 中,系统级 cpu.stat
文件被添加到根 cgroup 中,以提供便利。
在 runc 文档中,由于缺少 freezer,不建议使用低于 5.2 的内核。
压力停滞信息 (PSI)
压力停滞信息在 Linux kernel 4.20 及以上版本中受支持。
其他内核要求
某些功能可能依赖于新的内核功能并具有特定的内核要求
- 递归只读挂载:这是通过使用带有
AT_RECURSIVE
标志的MOUNT_ATTR_RDONLY
属性来实现的,使用了在 Linux kernel v5.12 中添加的mount_setattr
(2)。 - 根据KEP-127,Pod 用户命名空间支持需要 kernel 6.5+ 的最低版本。
- 对于节点系统交换,直到 kernel 6.3 才支持设置为
noswap
的 tmpfs。
Linux kernel 长期维护
可以在kernel.org 中找到活跃的内核版本。
通常有一些长期维护内核版本,目的是为旧的内核分支向后移植错误修复。只有重要的错误修复会被应用到这些内核上,并且它们的发布通常不太频繁,特别是对于较旧的分支。请参阅 Linux 内核网站获取发布列表中的 Longterm 类别。
接下来
- 请参阅sysctl 了解更多详情。
- 允许 kube-proxy 在nftables 模式下运行。
- 在cgroup v2中阅读更多信息。
本页面上的条目引用了为 Kubernetes 提供所需功能的第三方产品或项目。Kubernetes 项目作者不对这些第三方产品或项目负责。请参阅 CNCF 网站指南了解更多详情。
您应该在提议增加第三方链接的变更之前阅读内容指南。