Kubernetes的Master节点和Node节点
2017-01-14
Master #
Kubernetes集群中的Master节点是集群的控制节点,负责整个集群的管理和控制。针对集群执行的控制命令都是发送给Master节点的。 因为Master节点如此重要,所以Master节点默认是不执行工作负载的。Master节点上运行的主要组件如下:
- kube-apiserver: kube-apiserver提供HTTP Rest服务,是集群控制的入口
- kube-controller-manager: 是Kubernetes集群中所有资源对象的自动化控制中心
- kube-scheduler: 负责Pod的调度
Node #
Node节点是Kubernetes集群中的工作负载节点,Node上的工作负载由Master分配,当某个Node宕机时,Master会将上面的工作负载转移到其他节点上去。 Node节点上上运行的主要组件如下:
- kubelet: 负责Pod的创建、启动、监控、重启、销毁等工作,同时与Master节点协作,实现集群管理的基本功能。kubelet把自己注册到Master节点,当Node节点纳入集群管理的范围后,kubelet进程就定时向Master节点上上报自身的资源情况。Master节点掌握着每个Node节点的资源情况,就可以实施高效的资源调度策略。当某个Node超过指定时间未上报信息,Master会将该Node标记为Not Ready,同时会进行工作负载转移。
- kube-proxy: 实现Kubernetes Service的通信以及负载均衡。
使用kubeadm向集群中添加node #
在Node节点上执行kubeadm join命令,确保Master节点上防火墙开放9898端口(kube-discovery监听端口)。
1kubeadm join --token=10f67a.e80383425484d239 192.168.61.100
如果添加Node节点失败,可以在Node节点上执行以下命令完成清理和重置。
1kubeadm reset
2ifconfig cni0 down
3ip link delete cni0
4ifconfig flannel.1 down
5ip link delete flannel.1
6rm -rf /var/lib/cni/
添加成功后可以在Master节点上使用kubectl get nodes命令查看
1kubectl get nodes
2NAME STATUS AGE
3cent0 Ready,master 37m
4cent1 Ready 15m
5cent2 Ready 1m
查看node的详细信息
1kubectl descibe node cent2
在dashboard的Node详细页面可以更直观的查看这些信息,包括:Node的名称、标签、已经分配的系统资源数量和总量(CPU、内存、Pod数量等)。