k8s(3)-Pods和Nodes的概念
Pod是什么?
在前面创建部署时,Kubernetes创建了一个Pod来托管您的应用程序实例。Pod是一个Kubernetes抽象,表示一组一个或多个应用程序容器(如Docker或rkt),以及这些容器的一些共享资源。这些资源包括:
- 共享存储,作为卷
- 网络,作为唯一的群集IP地址
- 有关如何运行每个容器的信息,例如容器映像版本或要使用的特定端口
Pod为特定于应用程序的“逻辑主机”建模,并且可以包含相对紧密耦合的不同应用程序容器。例如,Pod可能既包含带有Node.js应用程序的容器,也包含一个不同的容器,用于提供Node.js网络服务器要发布的数据。Pod中的容器共享IP地址和端口空间,始终位于同一位置并共同调度,并在同一节点上的共享上下文中运行。
Pod是Kubernetes平台上的原子单元。当我们在Kubernetes上创建部署时,该部署会在其中创建包含容器的Pod(而不是直接创建容器)。每个Pod都与调度它的节点绑定,并保持在那里直到终止(根据重启策略)或删除。如果节点发生故障,则会在群集中的其他可用节点上调度相同的Pod。
Pods概念图
Nodes是什么?
Pod总是在节点上运行。Node是Kubernetes中的工作机器,可以是虚拟机器,也可以是物理机器,具体取决于集群。每个节点由Master管理。节点可以有多个pod,Kubernetes master会自动处理在群集中的节点上调度pod。Master的自动调度考虑了每个节点上的可用资源。
每个Kubernetes节点至少运行:
- Kubelet,负责Kubernetes Master和Node之间通信的过程; 它管理Pod和机器上运行的容器。
- 容器运行时(如Docker,rkt)负责从注册表中提取容器映像,解压缩容器以及运行应用程序。