diff --git a/content/zh-cn/docs/reference/node/kernel-version-requirements.md b/content/zh-cn/docs/reference/node/kernel-version-requirements.md new file mode 100644 index 0000000000000..e90470f53b754 --- /dev/null +++ b/content/zh-cn/docs/reference/node/kernel-version-requirements.md @@ -0,0 +1,168 @@ +--- +content_type: "reference" +title: Linux 内核版本要求 +weight: 10 +--- + + +{{% thirdparty-content %}} + + +许多特性依赖于特定的内核功能,并且有最低的内核版本要求。 +然而,单纯依赖内核版本号可能不足以满足某些操作系统发行版, +因为像 RHEL、Ubuntu 和 SUSE 等发行版的维护者们通常会将选定的特性反向移植到较旧的内核版本(保留较旧的内核版本)。 + +## Pod sysctls + + +在 Linux 中,`sysctl()` 系统调用在运行时配置内核参数。 +你可以使用名为 `sysctl` 的命令行工具来配置这些参数,许多参数通过 `proc` 文件系统暴露。 + +某些 sysctl 仅可用于足够新的内核上。 + +以下 sysctl 具有最低的内核版本要求, +并在[安全集](/zh-cn/docs/tasks/administer-cluster/sysctl-cluster/#safe-and-unsafe-sysctls)中得到了支持: + + + + +- `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.vs.conn_reuse_mode`(用于 `ipvs` 代理模式,需要内核 4.1+); + +### kube proxy `nftables` 代理模式 {#kube-proxy-nftables-proxy-mode} + + + + +对于 Kubernetes {{< skew currentVersion >}},kube-proxy 的 +[`nftables` 模式](/zh-cn/docs/reference/networking/virtual-ips/#proxy-mode-nftables)要求 +nft 命令行工具为 v1.0.1 或更高版本,要求内核为 v5.13 或更高版本。 + +出于测试/开发目的,你可以使用较旧的内核,如果你在 kube-proxy 配置中设置 `nftables.skipKernelVersionCheck` 选项, +最老可以回溯到 v5.4。但在生产环境中不推荐这样做,因为这可能会导致系统上其他 nftables 用户出现问题。 + + +## v2 控制组 {#version2-control-groups} + +Kubernetes 对 cgroup v1 的支持从 v1.31 开始处于维护模式;推荐使用 cgroup v2。 +在 [Linux 5.8](https://github.com/torvalds/linux/commit/4a7e89c5ec0238017a757131eb9ab8dc111f961c) +中,为了方便使用,系统层面的 `cpu.stat` 文件被添加到根 cgroup。 + +在 runc 文档中,不推荐使用低于 5.2 的内核,因为其缺少冻结特性。 + + +## 其他内核要求 {#requirements-other} + +某些特性可能依赖于新的内核功能并具有特定的内核要求: + + + + +1. [递归只读挂载](/zh-cn/docs/concepts/storage/volumes/#recursive-read-only-mounts): + 这是通过应用 `MOUNT_ATTR_RDONLY` 属性和 `AT_RECURSIVE` 标志来实现的,使用的是在 Linux + 内核 v5.12 中添加的 `mount_setattr`(2)。 +2. Pod 用户命名空间支持需要最低内核版本 6.5+,参阅 + [KEP-127](https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/127-user-namespaces/README.md)。 +3. 对于[节点系统交换](/zh-cn/docs/concepts/architecture/nodes/#swap-memory), + 直到内核 6.3 才支持将 tmpfs 设置为 `noswap`。 + + +## Linux 内核长期维护 {#linux-kernel-long-term-maintenance} + +你可以在 [kernel.org](https://www.kernel.org/category/releases.html) 找到活动的内核版本。 + +通常会提供多个 __长期维护__ 内核版本,用于将 Bug 修复反向移植到较旧的内核树。 +特别是对于较旧的树,只有重要的 Bug 修复才会被应用到此类内核,这些内核通常不会频繁发布新版本。 +请参阅 Linux 内核网站,了解 _Longterm_ 类别中的[发布列表](https://www.kernel.org/category/releases.html)。 + +## {{% heading "whatsnext" %}} + + +- 查阅 [sysctls](/zh-cn/docs/tasks/administer-cluster/sysctl-cluster/) 以获取更多细节。 +- 允许在 [nftables 模式](/zh-cn/docs/reference/networking/virtual-ips/#proxy-mode-nftables)下运行 kube-proxy。 +- 参阅 [cgroups v2](/zh-cn/docs/concepts/architecture/cgroups/)。