Pod

容器提供了强大的隔离功能,所以有必要把为 Service 提供服务的这组进程放入容器中进行隔离。为此,Kubernetes 设计了 Pod 对象,将每个服务进程包装到相应的 Pod 中,使其成为 Pod 中运行的一个容器(Container)

为了建立 Service 和 Pod 间的关联关系,Kubernetes 首先给每个 Pod 贴上一个标签(Label),给运行MySQL 的 Pod 贴上 name=mysql 标签,给运行 PHP 的 Pod 贴上 name=php 标签,然后给相应的Service 定义标签选择器(Label Selector),比如 MySQL Service 的标签选择器的选择条件为 name=mysql,意为该 Service 要作用于所有包含 name=mysql Label 的 Pod 上。这样一来,就巧妙地解决了 Service 与 Pod 的关联问题。

  • Pod 运行在一个我们称之为节点(Node)的环境中,这个节点既可以是物理机,也可以是私有云或者公有云中的一个虚拟机,通常在一个节点上运行几百个 Pod;

  • 每个 Pod 里运行着一个特殊的被称之为Pause 的容器,其他容器则为业务容器,这些业务容器共享 Pause 容器的网络栈和 Volume 挂载卷,因此它们之间的通信和数据交换更为高效,在设计时我们可以充分利用这一特性将一组密切相关的服务进程放入同一个 Pod 中

  • 并不是每个 Pod 和它里面运行的容器都能“映射”到一个 Service上,只有那些提供服务(无论是对内还是对外)的一组 Pod 才会被“映射”成一个服务。

最后更新于