从Kubernetes禁用透明的大页面 [英] Disable Transparent Huge Pages from Kubernetes

查看:57
本文介绍了从Kubernetes禁用透明的大页面的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我通过Kubernetes部署Redis容器并收到以下警告:

I deploy Redis container via Kubernetes and get the following warning:

警告您的内核中启用了透明大页面(THP)支持.这将在Redis中造成延迟和内存使用问题.要解决此问题,请以根用户身份运行命令从不回显>/sys/kernel/mm/transparent_hugepage/enabled",并将其添加到您的/etc/rc.local中,以便在重启后保留设置.禁用THP后必须重新启动Redis

WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled

是否可以通过Kubernetes禁用THP?也许通过初始化容器?

Is it possible to disable THP via Kubernetes? Perhaps via init-containers?

推荐答案

是的,使用init容器非常简单:

Yes, with init-containers it's quite straightforward:

apiVersion: v1
kind: Pod
metadata:
  name: thp-test
spec:
  restartPolicy: Never
  terminationGracePeriodSeconds: 1
  volumes:
    - name: host-sys
      hostPath:
        path: /sys
  initContainers:
    - name: disable-thp
      image: busybox
      volumeMounts:
        - name: host-sys
          mountPath: /host-sys
      command: ["sh", "-c", "echo never >/host-sys/kernel/mm/transparent_hugepage/enabled"]
  containers:
    - name: busybox
      image: busybox
      command: ["cat", "/sys/kernel/mm/transparent_hugepage/enabled"]

演示(请注意,这是系统范围的设置):

Demo (notice that this is a system wide setting):

$ ssh THATNODE cat /sys/kernel/mm/transparent_hugepage/enabled
always [madvise] never
$ kubectl create -f thp-test.yaml
pod "thp-test" created
$ kubectl logs thp-test
always madvise [never]
$ kubectl delete pod thp-test
pod "thp-test" deleted
$ ssh THATNODE cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]

这篇关于从Kubernetes禁用透明的大页面的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆