Kubernetes Pod 简介

Pods


英文原文: https://kubernetes.io/docs/tutorials/kubernetes-basics/explore-intro/

当你创建了一个应用部署后,Kubernetes就会产生一个Pod来托管你的应用实例。一个Pod是Kubernetes的一个抽象概念,代表了一组容器(比如Docker或者rkt)和这些容器的一些共享资源,容器里面包含了一个或多个应用程序,共享资源包括:

  • 共享存储,比如卷。

  • 网络,比如一个唯一的集群IP地址。

  • 关于如何运行每个容器的信息,比如容器镜像版本,或者指定的可用端口。

一个Pod建立了一个特定应用的“逻辑主机”模型,它可以包含多个不同的,但相对来说紧密相关的应用容器。比如,一个Pod可能同时包含你的Node.js应用容器,以及另一个为Node.js服务器提供数据的容器。在一个Pod中的容器共享一个IP地址和端口空间,总是共同被定位以及共同被调度,并运行在同一个节点的共享上下文中。

Pod是Kubernetes平台上的原子单元。当我们在Kubernetes中创建一个应用部署时,部署操作会创建出内含了容器的Pods(而不是直接创建这些容器)。每一个Pod都和它被安排的节点绑定,并一直留在那里直到销毁(根据重启协议)或者删除。假如节点宕机,完全相同的Pods将会被安排在集群的其它可用节点上。

在一个Pod中的多个容器,如果它们紧密相关并且需要共享资源,比如磁盘,那么这些容器必须只能共同调度。

Pods图例


Alt text

节点[Nodes]


一个Pod总是运行在一个节点上。一个节点是在Kubernetes中的一台工作机器,可能是一台虚拟机,也可能是一台物理机,这依赖于集群环境。每一个节点都是由主节点[Master]管理。一个节点可以有多个pod,并且Kubernetes主节点会在整个集群中自动处理pods在节点中的调度问题。主节点的自动化调度会考虑到每一个节点的可用资源。

每一个Kubernetes节点上,至少运行:

  • Kubelet,一个进程,负责Kubernetes主节点和节点之间的通讯;它还管理着运行在这台机器上的Pods和容器。

  • 一个容器运行时(比如Docker,rkt),负责从一个登记仓库中拉取容器镜像,解压容器,并运行应用。

节点图例


Alt text