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 的内核。

其他内核要求

某些功能可能依赖于新的内核功能,并且具有特定的内核要求

  1. 递归只读挂载:这是通过使用 Linux 内核 v5.12 中添加的 mount_setattr(2) 将 MOUNT_ATTR_RDONLY 属性与 AT_RECURSIVE 标志一起应用来实现的。
  2. 根据 KEP-127,Pod 用户命名空间支持需要最低内核版本 6.5+。
  3. 对于 节点系统交换,在内核 6.3 之前不支持设置为 noswap 的 tmpfs。

Linux 内核长期维护

活跃的内核版本可以在 kernel.org 中找到。

通常会提供几个长期维护内核版本,用于为较旧的内核树向后移植错误修复。只有重要的错误修复才会应用于此类内核,并且它们通常不会看到非常频繁的发布,尤其是对于较旧的内核树。请参阅 Linux 内核网站上的版本列表,位于长期类别中。

下一步

此页面上的项目指的是第三方产品或项目,这些产品或项目提供 Kubernetes 所需的功能。 Kubernetes 项目的作者不对这些第三方产品或项目负责。有关详细信息,请参阅 CNCF 网站指南

在提出添加额外的第三方链接的更改之前,应阅读内容指南

上次修改时间:2024 年 9 月 20 日,太平洋标准时间上午 11:36:同步 v1.32 的安全 sysctl ipv4.rmen 和 ipv4.wmem (de6ead9316)