我在許多實驗室機器上運行Kubernetes 1.2.0。機器已啓用交換。由於機器也用於其他目的,我無法在全局禁用交換。在kubelet上禁用交換
我正在觀察以下問題:如果我啓動具有內存限制的容器,容器會在達到內存限制後開始交換。我希望容器被殺死。
根據this issue這是一個已經解決的問題,但它仍然發生在Kubernetes 1.2.0上。如果我用docker inspect
檢查正在運行的容器,則可以看到MemorySwap = -1
和MemorySwappiness = -1
。如果我啓動內存限制較低的吊艙,它幾乎立即開始交換。
我有一些想法,但我無法弄清楚如何做這些:
- 變化所以沒有容器被允許調換
- 添加參數傳遞給在泊塢窗默認設置Kubernetes容器的配置,因此通過
--memory-swappiness=0
- 撥弄碼頭工人的cgroup中,並禁止對換組
如何防止集裝箱開始交換?
「東西仍然可以運行,但資源隔離不會很好」 - 這是不正確的。我有一個可能使用30GB內存的作業,啓用了交換功能,需要*天*才能完成。所以性能差異很大。我設置Kubernetes在機器閒置時運行作業;當使用機器時,節點自動排空。雖然這並不完美,但如果我沒有交換問題,它會很好地工作。 – morxa