Docker 如何限制k8s中交换内存的使用?

Docker 如何限制k8s中交换内存的使用?,docker,kubernetes,Docker,Kubernetes,我知道k8s默认情况下不支持交换 但由于我在k8s中有一个相当静态的pod部署(3个节点,每个节点都有一个solr+zookeeper pod),所以我决定在我所有的工作节点上设置2G交换,并允许通过--fail swap on=false启动kubelet来使用交换 现在我已经启动并运行了集群,它似乎运行正常 但是,我发现我的java进程使用了大量的交换,我担心这可能会影响性能 RSS:317160KB 交换:273232KB 我的问题是,有没有办法限制容器使用交换内存 我正在考虑设置--

我知道k8s默认情况下不支持交换

但由于我在k8s中有一个相当静态的pod部署(3个节点,每个节点都有一个solr+zookeeper pod),所以我决定在我所有的工作节点上设置2G交换,并允许通过--
fail swap on=false启动kubelet来使用交换

现在我已经启动并运行了集群,它似乎运行正常

但是,我发现我的java进程使用了大量的交换,我担心这可能会影响性能

  • RSS:317160KB
  • 交换:273232KB
我的问题是,有没有办法限制容器使用交换内存

我正在考虑设置
--内存交换

目前,基于Docker inspect,我的容器对交换使用没有限制(
“MemorySwap”:-1

但我就是找不到k8s中暴露的这个参数

我的虚拟机相关设置

vm.overcommit_kbytes = 0
vm.overcommit_memory = 1
vm.overcommit_ratio = 50
vm.swappiness = 20
vm.vfs_cache_pressure = 1000
p、 s.pod内存上的限制是否也会限制交换使用

谢谢大家阅读这篇文章

笔记 这就是我如何获得Java进程的RSS&SWAP

运行
top

27137 8983 20 0 3624720 317160 0 S 3.0 32.0 4:06.74 java

跑步

find /proc -maxdepth 2 -path "/proc/[0-9]*/status" -readable -exec awk -v FS=":" '{process[$1]=$2;sub(/^[ \t]+/,"",process[$1]);} END {if(process["VmSwap"] && process["VmSwap"] != "0 kB") printf "%10s %-30s %20s\n",process["Pid"],process["Name"],process["VmSwap"]}' '{}' \; | awk '{print $(NF-1),$0}' | sort -h | cut -d " " -f2-

27137 java 273232 kB

现在您知道了为什么如果存在活动的交换,kubelet在默认情况下拒绝启动。这在CRI中的任何地方都不会公开,也不会公开。

现在您知道了,如果存在激活的交换,为什么kubelet在默认情况下拒绝启动。这在CRI的任何地方都不会公开,也不会公开。

谢谢!是的,我知道启用它可能会遇到一些麻烦,所以我只启用了它,因为我的部署是静态的。经过几次实验,我想我发现了k8s的问题。似乎在某些平台上,k8s将允许无限的容器内存swap请参见:@JohntheTraveler只是一个补充:不,pod内存限制没有对swapK8s设置限制,因为项目和生态系统都假装swap根本不存在:)谢谢!是的,我知道启用它可能会遇到一些麻烦,所以我只启用了它,因为我的部署是静态的。经过几次实验,我想我发现了k8s的问题。似乎在某些平台上,k8s将允许容器使用无限内存swap请参见:@JohntheTraveler只是一个补充:不,pod内存限制没有对swapK8s设置限制,因为项目和生态系统都假装swap根本不存在:)
find /proc -maxdepth 2 -path "/proc/[0-9]*/status" -readable -exec awk -v FS=":" '{process[$1]=$2;sub(/^[ \t]+/,"",process[$1]);} END {if(process["VmSwap"] && process["VmSwap"] != "0 kB") printf "%10s %-30s %20s\n",process["Pid"],process["Name"],process["VmSwap"]}' '{}' \; | awk '{print $(NF-1),$0}' | sort -h | cut -d " " -f2-