在Kubernetes的世界,Pod是部署操作中的最小原子单位。每一个Pod由一个或多个容器构成,在集群中体现为一个独立的节点来部署。部署操作是一个原子操作,即“要么全部成功,要么什么都不做”(all-or-nothing)。Pod的定义和部署是通过声明式地使用一种YAML格式的清单文件来完成的,通常会使用诸如Deployment这样更高阶的controller来部署它们。用户可以使用kubectl命令来将清单文件POST到API Server,它(清单文件)会被保存在集群存储中,并且被转换为PodSpec,后者会被调度到集群中拥有足够资源的节点中。在工作节点上接收PodSpec的进程是kubelet。它是运行在集群中每个节点上的Kubernetes的代理。它负责根据PodSpec来拉取所有所需镜像并启动Pod中所有的容器。如果只是在集群中部署一个独立的Pod(不是通过controller部署的Pod),如果Pod所在的节点宕机,那么这个Pod不会被调度到其他的节点上。因此,绝大多数情况下应该借助更高阶的controller(Deployment和DaemonSet)来部署Pod。它们能够提供诸如自愈和回滚等能够真正发挥出Kubernetes威力的特性。