暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Kubernetes中命名空间级别内核参数有哪些

运维笔谈 2025-04-03
131

通过Kubernetes中调整Pod的sysctl参数是否有必要,我们知道某些场景是有必要调整的,并且是只能调整命名空间级别的参数。在 Kubernetes 中,命名空间级别的内核参数主要是通过 sysctl 进行配置的,这些参数可以在 Pod 的 securityContext 中进行设置。以下是主要的命名空间级别的内核参数分类及其具体参数:

内核共享内存参数(kernel.shm*)

- kernel.shmall:可以使用的共享内存的总量。

- kernel.shmmax:单个共享内存段的最大值。

- kernel.shm_rmid_forced:表示是否强制将共享内存和一个进程联系在一起,可以通过杀死进程来释放共享内存。

内核消息队列参数(kernel.msg*)

- kernel.msgmnb:每个消息队列的最大字节限制。

- kernel.msgmni:同时运行的最大的消息队列个数。

- kernel.msgmax:消息队列中单个消息的最大大小。

内核信号量参数(kernel.sem)

- kernel.sem:每个信号集中的最大信号量数目、系统范围内的最大信号量总数目、每个信号发生时的最大系统操作数目、系统范围内的最大信号集总数目。

内核POSIX消息队列参数(fs.mqueue.*)

- fs.mqueue.msg_max:队列里缓存的软最大消息数目。

- fs.mqueue.msgsize_max:最大消息长度上限。

内核网络配置项参数(net.*)

- net.ipv4.ipfrag_low_thresh:用于 IP 分片汇聚的最小内存用量。

- net.ipv4.ipfrag_high_thresh:用于 IP 分片汇聚的最大内存用量。

- net.ipv4.ip_local_port_range:表示允许使用的端口范围。

- net.ipv4.tcp_syncookies:表示是否打开 TCP 同步标签,同步标签可以防止一个套接字在有过多试图连接时引起过载。

- net.ipv4.ping_group_range:限制哪些用户可以创建 ICMP ECHO 请求。

- net.ipv4.ip_unprivileged_port_start:未特权端口的起始范围。

- net.ipv4.tcp_keepalive_time:TCP 保持连接的状态时间。

- net.ipv4.tcp_fin_timeout:TCP 连接的 FIN 等待时间。

- net.ipv4.tcp_keepalive_intvl:TCP 保持连接的间隔时间。

- net.ipv4.tcp_keepalive_probes:TCP 保持连接的探测次数。

- net.ipv4.tcp_rmem:TCP 接收缓冲区的大小。

- net.ipv4.tcp_wmem:TCP 发送缓冲区的大小。

安全性与启用不安全参数

- 安全的命名空间级别内核参数:默认启用,如 `kernel.shm_rmid_forced`、`net.ipv4.ip_local_port_range`、`net.ipv4.tcp_syncookies` 等。

- 不安全的命名空间级别内核参数:默认禁用,需要 Kubernetes 管理员手动启用。例如,`net.core.somaxconn` 和 `kernel.msgmax` 等参数需要在 kubelet 中通过 `--allowed-unsafe-sysctls` 参数启用。

设置方式

1、在 Pod 的 securityContext 中设置:可以通过在 Pod 的配置文件中设置 `securityContext` 来配置命名空间级别的内核参数。

2、使用 initContainers 设置:在 initContainer 中以 privileged 模式运行,修改内核参数。

3、使用 tuning CNI 插件统一设置:为所有 Pod 统一配置某些内核参数。

通过这些参数的配置,我们可以优化 Pod 的性能和资源使用,但需要注意修改内核参数可能带来的风险,如系统不稳定或性能下降。

运维笔谈已经开通AI智能对话功能,解答有关运维日常工作中遇到的问题以及经验分享,感兴趣的大佬来和我聊聊吧!对话 “阿里云k8s” 可以获取《阿里云Kubernetes项目实战手册》pdf。

文章转载自运维笔谈,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论