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 及以上版本中受支持。

其他内核要求

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

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

Linux kernel 长期维护

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

通常有一些长期维护内核版本,目的是为旧的内核分支向后移植错误修复。只有重要的错误修复会被应用到这些内核上,并且它们的发布通常不太频繁,特别是对于较旧的分支。请参阅 Linux 内核网站获取发布列表中的 Longterm 类别。

接下来

本页面上的条目引用了为 Kubernetes 提供所需功能的第三方产品或项目。Kubernetes 项目作者不对这些第三方产品或项目负责。请参阅 CNCF 网站指南了解更多详情。

您应该在提议增加第三方链接的变更之前阅读内容指南

上次修改时间 太平洋标准时间 2025 年 3 月 25 日下午 10:40:Kubelet PSI 指标文档 (f9ff985f41)