2.1.1 Pod 资源对象

Pod 资源对象是一种集合了一到多个应用容器、存储资源、专用IP及支撑容器运行的其他选项的逻辑组件,如下图所示。换言之,Pod 代表着 Kubernetes 的部署单元及原子运行单元,即一个应用程序的单一运行实例,它通常由共享资源且关系紧密的一个或多个应用容器组成。

Pod 通常由一个到多个共享网络和存储资源的容器组合而成
图 1.4.1.1 - Pod 通常由一个到多个共享网络和存储资源的容器组合而成

Kubernetes 的网络模型要求其各 Pod 对象的 IP 地址位于同一网络平面内(同一 IP 网段),各 Pod 之间可使用其 IP 地址直接进行通信,无论他们运行于集群内的哪个工作节点之上,这些 Pod 对象都像是运行于同一局域网中的多个主机。

读者可以将每个 Pod 对象想象成一个逻辑主机,它类似于现实世界中的物理主机或VM(Virtual Machine),运行于同一个 Pod 对象中的多个进程也类似于物理机或 VM 上独立运行的进程。不过,Pod 对象中的各进程均运行于彼此隔离的容器中,并于各容器间共享两种关键资源:网络存储卷

  • 网络(networking):每个 Pod 对象都会被分配一个集群内专用的 IP 地址,也称为 Pod IP,同一 Pod 内部的所有容器共享 Pod 对象的 Network 和 UTS 名称空间,其中包括主机名、IP 地址和端口等。因此,这些容器间的通信就可以基于本地回环接口 lo 进行,而与 Pod 外的其他组件的通信则需要使用 Service 资源对象的 ClusterIP 及其相应的端口完成。

  • 存储卷(volume): 用户可以为 Pod 对象配置一组“存储卷”资源,这些资源可以共享给其内部的所有容器使用,从而完成容器间数据的共享。存储卷还可以确保在容器终止后被重启,甚至是被删除后也能确保数据不会丢失,从而保证了生命周期内的 Pod 对象数据的持久化存储。

一个 Pod 对象代表某个应用程序的一个特定实例,如果需要扩展应用程序,则意味着为此应用程序同时创建多个 Pod 实例,每个实例均代表应用程序的一个运行的“副本”(replica)。这些副本化的 Pod 对象的创建和管理通常由一组称之为“控制器”(Controller)的对象实现,例如,Deployment 控制器对象。

创建 Pod 时,还可以使用 Pod Preset 对象为 Pod 注入特定的信息,如 ConfigMap、Secret、存储卷、卷挂载和环境变量等。有了 Pod Preset 对象,Pod 模版的创建者就无须为每个模版显示提供所有信息,因此,也就无须事先了解需要配置的每个应用的细节即可完成模版定义。这些内容将在后面的章节中予以介绍。

基于期望的目标状态和各节点的资源可用性,Master 会将 Pod 对象调度至某选定的工作节点运行,工作节点于指向的镜像仓库(image registry)下载镜像,并于本地的容器运行时环境中启动容器。Master 会将整个集群的状态保存与 etcd 中,并通过 API Server 共享给集群的各个组件及客户端。

results matching ""

    No results matching ""