Pod 与容器设计模式 简述

  容器本质上是一个进程,是一个视图被隔离,资源受限制的进程,容器里面PID=1的进程就是应用本身,这意味着管理容器等同于直接管理应用本身,这是一种不可变设施的理念,即你的应用就等同于你的基础设施,它一定是不可变的。

  Pod实际上是kubernetes 中抽象出来的一个进程组,由于容器之间原本是被Linux Namespace 和 cgroups隔离开的,所以 Pod 所要面对的问题是如何去打破这个隔离,然后共享某些资源,这也是Pod设计中要解决的核心难题。所需要共享资源分为两个部分:网络 和 存储。

  第一个问题是,Pod里面的多个容器如何去共享网络?kubernetes 提供了这样的解决方案:它会在每个Pod里面,额外起一个Infra container 小容器来共享整个Pod里面的Network Namespace,所以在一个Pod里面的所有容器,它们看到的网络视图是完全一样的。

  第二个问题便是存储。Pod 中容器之间共享存储是非常简单的,这得益于kubernetes 的Volume机制,关键的是kubernetes把Volume变成了Pod level,所以同属于一个Pod的容器,它们共享所有的Volume。

 

你可能感兴趣的:(Pod 与容器设计模式 简述)