Kubernetes基本概念和术语之Master和Node

kubernetes中的大部分概念,如Node、Pod、Replication Controller、Service等都可以看做是一种 “资源对象”,几乎所有的资源对象都可以通过kubectl工具(或者API接口)来实现增、删、改、查等操作,并将其保存在etcd中进行持久化存储,从这个角度来看,kubernetes其实是一个高度自动化的资源控制系统,它通过对比etcd库里保存的 “资源期望状态”与当前环境中的“实际资源状态”的差异来实现自动控制和自动纠错。

在介绍资源对象之前,我们先了解一下kubernetes集群中的两种管理角色:Master和Node

1.Master

kubernetes中的master指的是集群控制节点,每个kubernetes集群里都需要有一个Master节点来负责整个集群的管理和控制,基本上kubernetes的所有控制命令都发给它,它来负责具体的执行过程。Master节点通常会占据一个独立的服务器(高可用建议用3台服务器),主要原因就是他太重要了,是整个集群的“首脑”。

Master节点上运行着以下关键进程:

  1. kubernetes API Server(kube-apiserver):提供了HTTP Rest接口的关键服务进程,是kubernetes里所有资源的增、删、改、查等操作的唯一入口,也是集群控制的入口进程
  2. kubernetes Controller Manager(kube-controller-manager):kubernetes里所有资源对象的自动化控制中心,可以理解为资源对象的 “大总管”
  3. kubernetes Scheduler(kube-scheduler):负责资源调度(pod调度)的进程,相当于公交公司的 “调度室”

         另外,在master节点上还需要启动一个etcd服务,因为kubernetes里的所有资源对象的数据都是保存在etcd里的

2.Node

除了master,kubernetes集群中的其他机器被称为Node节点,在较早的版本中也被称为minion。与master一样,Node可以是物理机也可以是虚拟机,Node节点才是kubernetes集群中的工作负载节点,每个Node节点都会被master分配一些工作负载(docker容器)。

每个Node节点上都运行着以下关键进程:

  1. kubelet:负责Pod对应的容器的创建、启停等任务,同时与master节点密切协作,实现集群管理的基本功能
  2. kube-proxy:实现kubernetes Service的通信与负载均衡机制的重要组件
  3. Docker Engine(docker):Docker引擎,负责本机的容器创建和管理工作

Node节点可以在运行期间动态增加到kubernetes集群中,前提是这个节点上已经正确安装、配置和启动了以上关键进程。在默认情况下,kubelet会向master注册自己,这也是官方所推荐的Node管理方式。一旦Node被纳入集群管理范围,kubelet进程就会定时向master节点汇报自身情况,例如操作系统、docker版本、CPU和内存情况,以及当前有哪些Pod在运行等,这样master就可以知道每个Node的资源使用情况,并实现高效均衡的资源调度策略,长时间失联的Node会被标记为不可用 “Not ready”,随后master会触发 “负载转移”的自动流程

3.相关命令

  1. kubectl get nodes:查看集群中有多少个node
  2. kubectl describe node {node_name}来查看某个Node的详细信息