Pod
Pod是一个或多个若干相关容器的组合,Pod包含的容器运行在同一台宿主机上,这些容器使用相同的网络命名空间、IP地址和端口,相互之间能通过localhost来发现和通信。另外,这些容器还可共享一块存储卷空间。在Kubernetes中创建、调度和管理的最小单位是Pod,而不是容器,Pod通过提供更高层次的抽象,提供了更加灵活的部署和管理模式。
Pod是Kubernetes的基本操作单元,也是应用运行的载体。
Pod是容器的集合,容器是真正的执行体。相比原生的容器接口,Pod提供了更高层次的抽象,但是Pod的设计并不是为了运行同一个应用的多个实例,而是运行一个应用多个紧密联系的程序。而每个程序运行在单独的容器中,以Pod的形式组合成一个应用。
Replication Controller
Replication Controller用来控制管理Pod副本(Replica,或者称为实例),Replication Controller确保任何时候Kubernetes集群中有指定数量的Pod副本在运行。如果少于指定数量的Pod副本,Replication Controller会启动新的Pod副本,反之会杀死多余的副本以保证数量不变。另外,Replication Controller是弹性伸缩、滚动升级的实现核心。
注:官方建议使用Deployment代替
Service
Service是真实应用服务的抽象,定义了Pod的逻辑集合和访问这个Pod集合的策略。Service将代理Pod对外表现为一个单一访问接口,外部不需要了解后端Pod如何运行,这给扩展和维护带来很多好处,提供了一套简化的服务代理和发现机制。
Label
Label是用于区分Pod、Service、Replication Controller的Key/Value对,实际上,Kubernetes中的任意API对象都可以通过Label进行标识。每个API对象可以有多个Label,但是每个Label的Key只能对应一个Value。Label是Service和Replication Controller运行的基础,它们都通过Label来关联Pod.
Master
Kubernetes里的Master指的是集群控制节点,每个Kubernetes集群里需要有一个Master节点来负责整个集群的管理和控制,基本上Kubernetes所有的控制命令都是发给它,它来负责具体的执行过程.
在Master运行的组件有:
- kube-apiserver, 提供了HTTP Rest接口的关键服务进程,是Kubernetes里所有资源的增、删、改、查等操作的唯一入口,也是集群控制的入口进程.
- etcd, 强一致性高可用的key-value存储系统,kubernetes用来存储集群的数据。
- Kube-scheduler,负责资源调度(Pod调度)的进程,为新建的Pod分配Node。
- Kube-controller-manager,Kubernetes里所有资源对象的自动化控制中心,负责执行各种控制器。
Node
Kubernetes属于主从分布式集群架构,Kubernetes Node(简称为Node,早期版本叫作Minion)运行并管理容器。Node作为Kubernetes的操作单元,用来分配给Pod(或者说容器)进行绑定,Pod最终运行在Node上,Node可以认为是Pod的宿主机。
Node节点上运行的组件有:
- kubelet, 负责Pod对应的容器的创建、启停等任务,同时与Master节点密切协作,实现集群管理的基本功能。
- Kube-proxy, 实现Kubernetes Service的通信与负载均衡机制的重要组件。
- container runtime, 负责运行容器。