银河麒麟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
然后:
sysctl -p
然后随便验证了一个ip_forward的参数,发现其值还是0:
cat /proc/sys/net/ipv4/ip_forward
0
突然就想到,我执行sysctl -p在不加任何参数的情况下,是同步/etc/sysctl.conf 文件的,而kylinOS v10默认的/etc/sysctl.conf文件中,ip_forward的值设置为0,所以其参数值并没有被修改。
引发的思考
既然我执行sysctl -p 时仅同步/etc/sysctl.conf文件,那如果我reboot后,其最终生效的文件是哪个呢?
以前没有深究过系统重启后内核参数的加载顺序问题,正好趁这次机会,好好学习一下完整的加载流程。
系统版本说明
# 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
#################################################
内核参数加载顺序的深究
通过一