一、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节点的重要属性:

  • 地址信息:
  1. 主机名(HostName):节点所在系统的主机别名
  2. 外部地址(ExternalIP):集群外部客户端可以通过该地址访问到的节点
  3. 内部地址(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信息