禁用来自Kubernetes的透明巨大页面

我通过Kubernetes部署Redis容器并获得以下警告:

警告您在内核中启用了透明巨大页面(THP)支持。 这将导致Redis的延迟和内存使用问题。 要解决这个问题,请以超级用户身份运行“echo never> / sys / kernel / mm / transparent_hugepage / enabled”命令,并将其添加到/etc/rc.local中,以便在重新启动后保留设置。 在THP禁用后,必须重新启动Redis

是否可以通过Kubernetes禁用THP? 也许通过init容器?

是的,使用init-containers非常简单:

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"] 

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

 $ 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]