Master
k8s中master是指集群控制的节点,每个k8s集群都需要有一个master节点,其负责整个集群的管理和控制,基本上k8s所有的控制命令都是发给它,它来负责具体的执行过程,Master节点通常是一个独立的X86服务器,或者是一台虚拟机,如果它宕机或者不可用,我们所用的控制指令都失效了。Master节点上运行着这么一组关键进程:
- kube-apiserver:提供了一组http restful接口,是k8s中所有资源的增删改查等操作的唯一入口(好理解)
- k8s里面所有资源对象的自动化控制中心,资源对象的大总管(大概理解,没有用过)
- kube-scheuduler:负责资源调度(pod调度)的进程,相当于公交公司的调度室
Node
除了master,集群中的其他机器被称为Node节点,可以是一台物理机器,也可以是一台虚拟机。Nodej节点才是k8s集群中工作负载节点,每个node都会被Master分配一些负载(Docker容器),当node宕机的时候,其上的工作负载会被master自动转移到其他节点中去。
每个Node上都会运行下面一组关键进程:
- kubelet:负责pod中对应容器的创建,启动,暂停任务等
- kube-proxy:实现service的通信和负载均衡的重要组件
- DockerEnginer:docker引擎,负责本机的容器创建和管理工作
node节点可以在运行期间动态增加到k8s集群中,kubelet会向master注册自己,这也是k8s推荐的node管理方式。一旦node被纳入集群的管理范围,kebulet进程就会定时向master节点汇报自身的情报,比如说操作系统,Docker版本,机器的CPU和内存情况,以及之前有哪些pod在运行等。
这样可以帮助master获知每一个node的资源使用情况,并实现高效均衡的资源调度策略;当某个node超过指定时间不上报信息时,会被master节点判定为”失联“,Node的状态被标记为不可用(Not Ready), 随后Master会触发“工作负载大转移”的自动流程。
