银河麒麟v10 sysctl内核参数加载顺序是怎样的?有没有什么特别讲究?

摘要:背景 最近很多伙伴想使用银河麒麟高级服务器系统v10来部署最新版本的k8s集群,可能遇到了各式各样的问题,于是准备使用kylinOS v10重温一遍kubeadm部署最新版本k8s的流程,也是替大家踩踩坑。 在进行服务器基础配置优化时,到内
背景 最近很多伙伴想使用银河麒麟高级服务器系统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 ################################################# 内核参数加载顺序的深究 通过一些官方的相关文档和前辈的指导,基本摸清了重启后的加载顺序,详情如下。 内核参数加载的相关服务 系统重启后,与内核参数加载的服务,一共有两个,分别是systemd-sysctl.service和tuned.service。
阅读全文