Kubernetes基本概念和术语之Pod

Pod是kubernetes中最重要也最基本的概念,如下图,是pod的组成示意图

 每个Pod都有一个特殊的被称为 “根容器”的Pause容器,Pause容器对应的镜像属于kubernetes平台的一部分,除了pause容器,每个pod还包含一个或多个紧密相关的用户业务容器

为什么kubernetes会设计出一个全新的pod的概念并且pod有这样特殊的组成结构?

  1. 在一组容器作为一个单元的情况下,无法根据单元中某个容器的死亡来判定整个单元是否存活,所以引进了与业务无关并且不易死亡的pause容器作为pod的根容器,以它的状态代表整个容器组的状态,就巧妙的解决了这个难题
  2. pod里的多个业务容器共享pause容器的 IP、Volume,这样既简化了密切关联的业务容器之间的通信,也很好的解决了文件共享问题

kubernetes为每个pod都分配了唯一的IP地址,称之为Pod IP,一个pod里的多个容器共享pod ip地址。kubernetes要求底层网络支持集群内任意两个pod之间的TCP/IP直接通信,这通常采用虚拟二层网络技术实现,例如Flannel、Open vSwitch等,因此,我们要牢记一点:在kubernetes里,一个pod里的容器与另外主机上的pod容器能够直接通信。

Pod其实有两种类型:普通的Pod、静态Pod(static pod),后者不存在etcd存储里,而是存放在某个具体的Node上的某个具体文件中,并且只在此Node上启动运行。普通的Node创建后存放在etcd存储里,随后被master调度到某个具体的Node上并进行绑定,随后被对应node上的kubelet进程实例化成一组相关的docker容器并启动起来。如果pod里的某个容器停止,kubernetes会自动检测到这个问题并重启该pod(重启pod里的所有容器),如果pod所在的Node宕机,则会将该Node上的所有pod重新调度到其他node节点上。

Pod、容器与Node关系见下图:

猜你喜欢

转载自www.cnblogs.com/lemon-dog/p/12405524.html