避免OOM
如何避免虚拟机出现OOM¶
在开设具有大量内存活动的vm(内存负载高的vm)时,容易出现OOM,那实际生产环境中如何避免该问题出现?
实际在设置时,guest的内存大小要小于limits。这样预留的内存就给pod
virt-launcher使用了,预留内存大小根据实际情况进行设置。
memory:
# 预留内存100M
guest: 8092M
cpu:
cores: 2
resources:
# overcommitGuestOverhead 该值默认为 false
overcommitGuestOverhead: false
requests:
memory: 8192M
limits:
memory: 8192M
一般来说,overcommitGuestOverhead被设计为用于非保证QOS的虚拟机(虚拟机不指定resources.limits.memory时), 这些虚拟机不受内存限制,可以使用来自节点的更多内存,并且有足够的资源。 一个非常保守的假设与overcommitGuestOverhead: true相结合:如果swap被禁用(通常应该禁用),则不能使用此功能。 在某些极端情况下,使用swap来运行k8s是有意义的,但我不建议在一般情况下启用它(最明显的问题是kubelet无法再检测内存压力)。