Kubernetes使用Linux容器技术来实现应用的隔离。因此在深入学习k8s之前,我们需要先学习容器的基础知识以便更好地去理解k8s的原理机制。
揭开容器的神秘面纱
当一个应用只由较少数量的大组件构成时,完全可以给每个组件分配一个专用的虚拟机,以及通过给每个组件分配它自己的操作系统实例来隔离它们的环境。
但是当这些组件变得越来越小且数量变得越来越多时,就不能给每个组件分配专用的VM,除非你不想节约硬件资源、降低硬件成本。但是硬件资源只是一方面,每个VM通常还需要独立配置和管理,想象一下有大量的虚拟机等着你去配置和管理时你会是什么心情。这不仅是力资源的浪费,还会让系统管理员的工作变得更加高负荷。
利用Linux容器技术隔离应用组件
越来越多的开发人员开始转向Linux容器技术,而不是使用虚拟机来隔离每个微服务环境(或者通常说的进程)。容器技术使我们能够在同一台宿主机上运行多个服务,不仅为每个服务提供不同的环境,还将它们彼此隔离,就像虚拟机一样,但是需要的开销更小。
容器中运行的进程实际上还是在宿主机的操作系统上,跟其他进程没啥区别,不像虚拟机,进程是运行在不同的操作系统上的。但是需要注意的是,容器中的进程仍然是与其他进程隔离的。对于进程本身而言,看起来就像是机器和操作系统上运行的唯一进程。