kubernetes中master节点和node节点的组件

kubernetesmaster中比较重要的组件

1)apiserver

k8s的重要组件之一,作为整个k8s集群的大脑,负责对外提供kubernetes的API服务,Master组件都通过调用APIserver提供的接口来实现各自的功能,生产环境一般也v K 2 U会对a2 F % r W s Fpiserc n C ( R , over做高可用,多master架构。比如,deplotment Controller就通过apiserver来监控其管理的各个pod节点

2)schedulB U Yer

监听apiserver的新建pod副本信息,并通过调度算法计算一个合适node? f I | ? M .点进行,然后将pod信息绑定到目标Node节点上,并把信息写入到etcd键值数据库中。绑定以后,Node上的kubelet就会接管pod接下来的声明周期管理。

3)contronller-A U a v xmanager

维护整个集群的状态,故障检测,自动扩展,滚动更新等等。每个集群都有f G W P ^ f u I R对应的controller,这些controller通过apiserve监控节点资源状态,而这些控制器就是通过con* S S e T x I 5 (troller-manager进行管理。

4)etcd

k8s的重要组件,为kubernetes提供一个高可用键值数据库,保存kubernetes集群资源中的所有的配置和集群资源对象的状态。所有的p @ X Z @ & R变更通过apiserver处理完以后存储在etcd键值库中,生产上一般使用多台组集群,一般为3,5等奇数台,偶数台会产生集群脑裂的问题。
kubernetes中master节点和node节点的组件

比如我新建一个Nginx的pod,首先通过kubectl命b ! # 8 B B令或者web界面或者一些其他的api接口,调用APIserver新建pod,然后scheduler接受到APIserver想新建pod[ F ` ( 6 [ ! N的需求后,就在通过算法计算我后端的那个Node节点比较合适,一旦绑定,把相关信息写入etcd键值库后,通知Node的kubelet组件,然后kubelet按照要求新建好pod,controller-manager通过pod的控制器进行维护nginx的pod状态等等

kubernetes中node中比较重要的组件

1)kubelett 2 n W Z j

负责pod的生命周期管理,监视分配给当前节点的pod,同时还与Master节点维+ g ~ C 5 e护和管理Node上的所有容器,实现集群管理的基本功能。简单来说kublet就是集群中- 4 [ ? r的agent端,负责让pod的运行资源与期望的状态一致

2)kube-proxy

实现service通信和负载均衡的重要组件,将service的请求转发的后端节点的pod上。

3)docker

pod的运行环境,也可以是rkt容器,一o % M T 8 0 B 9 a个pod可以是一个或者一组容器。

kubernetes中master节点和node节点的组件

kubernetes中其他比较重要的组件

1)CNI

一个标准的容器网络接口,支持: D 2 c e J J *k8s,docker等,由于其实一种标准库,所以,CNI的规范实现相对来说较为简单,支持 8 p g O {k8s的各种网络模型。

2)coreDNS

实现了集群J 6 # o r内部通过服务器名进行访问的解析。用于服务发现