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

部署Kubernetes时之所以禁用Swap、Selinux和Firewall,主要是考虑集群的高效稳定运行。
防火墙和Selinux虽然对安全有重要影响,但其管理成本较高,且需要专业运维人员进行维护,会造成额外的工作量。
交换在集群的计算中发挥着独特的作用。
计算集群主要处理短期计算任务,快速申请大量内存和CPU资源完成计算,然后输出结果并退出。
在这些情况下,如果发生内存不足(OOM),更有意义的是直接杀死进程并通知运维或作业提交者进行故障转移或重新启动进程。
使用swap续命会导致节点挂掉,集群性能大幅下降,运维可能无法及时收到错误消息。
更严重的是,如果swap在机械磁盘阵列中,过度使用swap可能会导致系统无法正常运行,即使不以root身份登录,根本不执行任何重要操作。
节点崩溃是严重的问题,一旦发现通常会造成重大损害。
程序错误可以通过自动重试来纠正。
但是,如果重试失败,则会发生意外情况。
此时,应该停止该作业并等待手动处理,而不是继续尝试运行它,这将导致所有后续作业失败。
计算机集群通常会关闭交换,除非有明确的理由表明交换可以提供实际好处。
与运行MySQL等面向服务的程序的集群相比,计算机集群并不关注单个进程或作业的失败,因为程序面对大量用户时可能没有经过严格的测试,并且发生故障的概率也很大。
此类故障较高。
计算机集群的关键是避免整个集群无法处理作业的情况,这是一种极其严重的事故。
禁用swap意味着一旦发生内存溢出,系统将立即终止相应的进程,并允许正常运行的程序运行。
这使得资源分配更加公平、高效,同时避免了由于挂起而导致的集群性能下降,保证了集群的稳定和高效运行。