Pod
Pod是一组容器的集合,我们都知道容器是利用了以下六种命名空间隔离技术形成的:
Mount(mnt)
Process ID(pid)
Network(net)
Inter-process communication(IPC)
UTS(主机名)
User ID(user)
同样,在一个Pod中的所有的容器,并不是这几个命名空间全部隔离的,而是有一部分隔离,有一部分共享,下面将进行具体的介绍。
同一Pod中容器之间的隔离
同一Pod中共享的命名空间:
Network(net):它们具有相同的IP和不同的端口,不同的容器绑定不同的端口,同一Pod中的所有容器可以通过localhost互相进行通信;
UTS:它们具有相同的主机名;
IPC:它们可以通过IPC进行通信;
PID:该命名空间是最新的Kubernetes和Docker版本才有的,但是特征默认未激活;
需要注意的是,默认情况下,每个容器都有自己的Mount命名空间,即有自己的文件系统,但是当使用Volume来共享文件目录时,这些容器就可以共享目录了。
判断何时在Pod中使用多个容器
当决定是将两个容器放入一个Pod还是两个单独的Pod时,需要问自己以下问题:
它们需要一起运行还是可以在不同的主机(node)上运行?
它们代表的是一个整体还是相互独立的组件?
它们必须一起进行扩缩容还是可以分别进行?
Last updated
Was this helpful?