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?