部署Kubernetes(k8s)时,为什么要关闭swap、selinux、firewalld

作者:知乎用户
链接:https://www.zhihu.com/question/374752553/answer/2665255695
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

防火墙和selinux基本上都是自找麻烦的事情,不关不是不能用,但是你得加钱招会搞的运维来处理问题。

至于swap,在计算集群(请注意计算集群这四个字的含义,这种集群主要运行一些生存周期短暂的计算应用,申请大量内存-动用大量CPU-完成计算-输出结果-退出,而不是运行诸如mysql之类的服务型程序)中,我们通常希望OOM的时候直接杀掉进程,向运维或者作业提交者报错提示,并且执行故障转移,把进程在其他节点上重启起来。而不是用swap续命,导致节点hang住,集群性能大幅下降,并且运维还得不到报错提示。更可怕的是有一些集群的swap位于机械硬盘阵列上,大量动用swap基本可以等同于死机,你甚至连root都登录不上,不用提杀掉问题进程了。往往结局就是硬重启。

节点hang住是非常恶劣的情况,往往发现问题的时候,已经造成了大量损失。而程序出错可以自动重试,重试还OOM说明出现了预料之外的情况(比如程序bug或是预料之外的输入、输入文件大小远超预期等问题),这种时候就应该放弃这个作业等待人员处理,而不是不停地尝试着执行它们,从而导致后面的其他作业全部完蛋。

所以计算集群通常都是关闭swap的,除非你十分明确swap可以给你的应用带来收益。

计算集群和诸如执行mysql的集群有一个根本不同就是计算集群不在意单个进程、单个作业的失败(由于面向的用户很宽泛,这些作业所执行的程序很可能未经严格的测试,它们客观上出问题的几率远高于mysql等成熟的程序),但是绝对不接受hang住引起整个集群无法处理任何作业,这是非常严重的事故。

关闭swap的含义其实就是OOM了就赶紧滚蛋,让正常的程序进来继续执行,OOM的程序让用户去处理。

posted @ 2022-12-20 16:28  老油条666  阅读(270)  评论(0编辑  收藏  举报