梢疠 发表于 2025-6-2 22:16:50

银河麒麟v10 sysctl内核参数加载顺序的思考

背景

最近很多伙伴想使用银河麒麟高级服务器系统v10来部署最新版本的k8s集群,可能遇到了各式各样的问题,于是准备使用kylinOS v10重温一遍kubeadm部署最新版本k8s的流程,也是替大家踩踩坑。
在进行服务器基础配置优化时,到内核参数修改这一步,引发了一些新的思考。
过程

在修改内核参数时,我很熟练的执行了以下命令:
cat > /etc/sysctl.d/k8s.conf << EOF
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.conf.all.route_localnet = 1
vm.overcommit_memory=1
vm.panic_on_oom=0
vm.swappiness = 0
fs.inotify.max_user_watches=89100
fs.file-max=52706963
fs.nr_open=52706963
net.netfilter.nf_conntrack_max=2310720
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_keepalive_intvl =15
net.ipv4.tcp_max_tw_buckets = 36000
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_max_orphans = 327680
net.ipv4.tcp_orphan_retries = 3
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_timestamps = 0
net.core.somaxconn = 16384
EOF读取顺序一定是:
/usr/lib/sysctl.d/10-default-yama-scope.conf --> /usr/lib/sysctl.d/50-pid-max.conf --> /etc/sysctl.d/99-sysctl.conf --> /usr/lib/sysctl.d/kylin.conf --> /etc/sysctl.conf
tuned.service加载顺序


[*]如果tuned.service是enable状态,则其后于systemd-sysctl.service加载。
[*]tuned分为多种模式,每种模式对应其配置文件,tuned-adm active可查看系统使用的哪种模式,tuned-adm list profiles查看系统支持的模式,tuned-adm profile 设置系统为某模式,例如,本系统为:
sysctl -p 则其对应加载的配置文件为:/usr/lib/tuned/virtual-guest/tuned.conf
[*]对应的tuned.conf文件加载完毕后,tuned服务还会执行sysctl --system命令,如果配置的参数和之前加载的配置文件有相同内核参数,同样会覆盖。
sysctl --system执行加载顺序如下:
cat /proc/sys/net/ipv4/ip_forward
0
临时主动加载配置文件

系统中还可以使用sysctl -p来主动加载指定内核参数配置文件生效,其后不指定任何文件时,默认加载/etc/sysctl.conf,若指定文件,则表示加载指定文件,例如:
# nkvers
############## Kylin Linux Version #################
Release:
Kylin Linux Advanced Server Release V10 (Trading)

Kernel:
4.19.90-89.18.v2401.ky10.x86_64

Build:
Kylin Linux Advanced Server
Release V10 SP3 2403/(Trading)-x86_64-Build03/20240813
#################################################银河麒麟系统中需要注意的点

银河麒麟系统中默认有个/usr/lib/sysctl.d/kylin.conf内核参数配置文件,其中已经配置诸多优化参数,其命名规则加载顺序较为靠后,所以在配置与其文件相同的参数项时,需要注意:

[*]将文件命名修改为在kylin.conf其后加载
[*]也可以选择直接修改kylin.conf中的配置
[*]直接配置到/etc/sysctl.conf中
总结


[*]tuned.service后于systemd-sysctl.service加载
[*]不同目录同名配置文件取目录优先级高的,非同名统一按照文件名的字典顺序加载
[*]优先级越高越先加载,越低越后加载,/etc/sysctl.conf最后加载
[*]别忘记/usr/lib/sysctl.d/kylin.conf文件
[*]别忘记相同参数覆盖的问题

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 银河麒麟v10 sysctl内核参数加载顺序的思考