一、Master
Master会通过Node Controller来定期检查所管理的Node资源的健康状况,完成Node的生命周期管理,负责整个集群的管理和控制。
Master节点上运行着以下一组关键进程:
- Kubernetes API Server(kube-apiserver):提供了HTTP Rest接口的关键服务进程,是Kubernetes里所有资源的增、删、改、查等操作的唯一入口,也是集群控制的入口进程;
- Kubernetes Controller Manager:Kubernetes里所有资源对象的自动化控制中心,可以理解为资源对象的“大总管”
- Kubernetes Scheduler:负责资源调度(Pod调度)的进程,相当于公交公司的“调度室”
二、Node
Node是实际工作的计算实例,在创建Kubernetes集群过程中,都要预装一些必要的软件来响应Master的管理。目前,Node的配置还只能通过人工手动进行,未来可以支持通过Master来自动配置。
1、Node节点的重要属性:
- 地址信息:
主机名(HostName):节点所在系统的主机别名
外部地址(ExternalIP):集群外部客户端可以通过该地址访问到的节点
内部地址(InternalIP):集群内部可访问的地址,外部无法通过该地址访问节点
- 阶段状态:
待定(Pending):新创建的节点,还未就绪状态,需要进一步的配置;
运行中(Running):正常运行中的节点,可被分配Pod,会定期汇报运行状态消息;
终止(Terminated):节点已经停止,处于不可用状态,判断条件为5分钟内未收到运行状态消息
- 资源容量
常见如操作系统资源,如CPU、内存、最多存放的Pod个数等
- 节点信息
包括:操作系统内核信息、Kubernetes版本信息、Docker引擎版本信息等
2、每个Node节点上都运行着以下一组关键进程:
- kubelet:负责Pod对应的容器的创建、启停等任务,同时与Master密切协作,完成集群管理的基本功能(定时向Master汇报自身的情况)
- kube-proxy:实现K8S Service的通信与负载均衡机制
- Docker Engine:负责本机的容器创建和管理工作
$ kubectl get nodes -o wide
$ kubectl describe node nodeName // 查看某个node的详细信息
node详细信息包括如下:
- Node基本信息:名称、标签、创建时间等
- Node当前的运行状态,Node启动以后会做一系列的自检工作,比如磁盘是否满了,如果满了就标注 OutOfDisk=true
- Node的主机地址与主机名
- Node上的资源总量,包括CPU、内存总量、最大可调度Pod的数量
- Node可分配资源
- 主机系统信息
- 当前正在运行的Pod列表概要信息
- 已分配的资源使用概要信息
- Node相关的Event信息