K8S 为什么关闭 SELinux 和交换内存

在学习搭建 K8S 环境和使用 K8S 时,所有教程必然会提到的事情就是关闭节点的 SELinux 和交换内存,如同自然规律一样。

那么为什么会有这样的要求呢?

交换内存

计算机的物理内存是有限的,而进程对内存的使用是不确定的,所以物理内存总有用完的可能性。那么当系统的物理内存不足时,系统会把某些进程的一些暂时用不到的内存页保存到磁盘中,然后把物理内存页分配给更紧急的用户使用。当进程用到时再从磁盘读回到内存中即可。有了内存交换功能,系统可使用的内存就可以远远大于物理内存的容量。

但是在使用 K8S 时,如果内存不够了,其更希望的结果是把后续的 Pod 放到其他节点,或者把当前节点的某些 Pod 驱逐,而并不期望使用交换内存续命。因为使用交换内存会降低整个系统的性能,更好的方法是增加硬件资源。

SELinux

他是 Linux 的一个安全子系统,类似一个防火墙。问题是这玩意控制的粒度很细,想用好门槛比较高,所以为了让小白们迅速部署 K8S,避免出现一些奇奇怪怪的问题,就形成了一个默认规则,一律关闭。

还有一个原因是,多数节点都位于堡垒内部,和外部环境隔离相对安全。

所以,关闭 SELinux 不是必须的操作。生产环境中如果关闭了 SELinux 需要有其他手段保护节点机器的安全,例如硬件防火墙、云平台安全套件等。

你可能感兴趣的:(docker,kubernetes,容器,云原生)