在kubelet上禁用交换

我在一些实验室机器上运行Kubernetes 1.2.0。 机器已启用交换。 由于机器也用于其他目的,所以我不能在全局禁用交换。

我正在观察以下问题:如果启动具有内存限制的容器,容器将在达到内存限制后开始交换。 我希望容器被杀死。

根据这个问题,这是一个已经解决的问题,但它仍然发生在Kubernetes 1.2.0。 如果我用MemorySwap = -1 docker inspect正在运行的容器,那么我可以看到MemorySwap = -1MemorySwappiness = -1 。 如果我开始一个低内存限制的吊舱,它几乎立即开始交换。

我有一些想法,但我不知道如何做到这些:

  • 更改Docker中的默认设置,以便不允许容器交换
  • 将参数添加到Kubernetes容器configuration,以便它传递--memory-swappiness=0
  • 摆弄docker的cgroup,不允许交换组

我怎样才能防止容器开始交换?

如果你只是在玩耍,那么就不用费心去换掉。 东西仍然可以运行,但是资源隔离不会起作用。 如果你认真使用Kubernetes来需要资源隔离,那么你不应该在机器上运行其他的东西。

Interesting Posts