补一篇几周前的小问题,涉及 linux 内核 bug,需要升级,或者改开机参数,关闭kmem支持的特性。
4. 验证
验证方法是查看新创建的 pod 的所有 container 已关闭 kmem,
- 如果为下面结果则已关闭:
1 2 |
$ cat <span class="hljs-regexp">/sys/</span>fs<span class="hljs-regexp">/cgroup/m</span>emory<span class="hljs-regexp">/kubepods/</span>burstable<span class="hljs-regexp">/pod<pod-uid>/</span><container-id>/memory.kmem.slabinfo cat: memory.kmem.slabinfo: Input/output error |
$ find /sys/fs/cgroup/memory/kubepods | grep slab | xargs cat $1
Input/output error
- 有类似输出,表示问题依然存在
1 2 3 4 5 6 7 8 9 10 |
slabinfo - version: 2.1 # name <active_objs> <num_objs> <objsize> <objperslab> <pagesperslab> : tunables <limit> <batchcount> <sharedfactor> : slabdata <active_slabs> <num_slabs> <sharedavail> radix_tree_node 112 112 584 112 1 : tunables 0 0 0 : slabdata 1 1 0 kmalloc-1024 64 64 1024 64 1 : tunables 0 0 0 : slabdata 1 1 0 kmalloc-128 15872 15872 128 512 1 : tunables 0 0 0 : slabdata 31 31 0 xfs_inode 3740 3740 960 68 1 : tunables 0 0 0 : slabdata 55 55 0 shmem_inode_cache 279 279 704 93 1 : tunables 0 0 0 : slabdata 3 3 0 ovl_inode 6336 6336 680 96 1 : tunables 0 0 0 : slabdata 66 66 0 kmalloc-512 640 640 512 128 1 : tunables 0 0 0 : slabdata 5 5 0 kmalloc-256 4864 4864 256 256 1 : tunables 0 0 0 : slabdata 19 19 0 |
下面这个链接有一个更加详细的介绍及几种解决方法,简而言之,升内核,升kubelet
https://en.pingcap.com/blog/try-to-fix-two-linux-kernel-bugs-while-testing-tidb-operator-in-k8s
https://github.com/torvalds/linux/commit/d6e0b7fa11862433773d986b5f995ffdf47ce672
https://github.com/kubernetes/kubernetes/issues/61937
文章评论