部署Kubernetes(k8s)时，为什么要关闭swap、selinux、防火墙？
防火墙和selinux基本上都是自找麻烦的事情，不关不是不能用，但是你得加钱招会搞的运维来处理问题。

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

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

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

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

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