目录

hugepage配置导致k8s的kubelet重启失败问题

记录hugepage配置导致k8s的kubelet重启失败问题的排查过程

问题

kubelet 重启时,发现节点无法注册,错误信息如下:

may not have pre-allocated hugepages for multiple page sizes

不支持预分配多种类型的大页。

分析

问题所在业务流程点

结合kubelet代码分析: kubelet启动时会进行自检,如果已使用的hugepagesize类型数 > 1, 根据nr_hugepages,判断大页是否已使用,如nr_hugepages !=1, 则无法通过

查看系统meminfo

1
cat /proc/meminfo

查看系统hugepage

查看大页信息,命令如下

1
2
3
4
5
# hugepages配置的size大小,如果有多个则会有多行输出
cat /sys/kernel/mm/hugepages/hugepages-*/nr_hugepages

# 内核hugepages的配置文件
ls /sys/kernel/mm/hugepages

发现系统已使用了2种类型的大页,如下

1
2
3
4
5
6
[root@worker-01 ~]# cat /sys/kernel/mm/hugepages/hugepages-*/nr_hugepages
2
2560
[root@worker-01 ~]# ls /sys/kernel/mm/hugepages
hugepages-1048576kB
hugepages-2048kB

解决方式

  1. 需要对一种类型大页,清0处理,比如对1G类型大页处理,该类型的hugepage未使用
1
echo 0 > /sys/kernel/mm/hugepages/hugepages-1048576kB/nr_hugepages
  1. 重启kubelet
1
systemctl restart kubelet