我一直把Rancher当Docker控制面板用,每个cluster都是单节点,启动一个算一个。最近就遇到这么个问题,一个node硬盘不足,触发了kubelet的eviction策略,于是kubelet干掉了两个container,又重启了两个——在唯一那个node上。如此循环往复了一刻钟,我就收获了几十个failed的container。
解决这个问题的方法很简单,用YAML方式编辑Rancher Cluster的设置,把kubelet的eviction策略设成空即可。
1 2 3 4 5 6 |
services: kubelet: extra_args: eviction-hard: "" eviction-soft: "" eviction-minimum-reclaim: "" |
然后测试一下:
1 |
fallocate -l 37580963840 test.35g |
应该就不会触发DiskPressure了。
说来这个eviction的设计也是很扯淡,它竟然是kubelet在本地计算的,不考虑整个cluster的情况。那我花那么多内存跑个etcd意义何在呢?
参考: