K8S组件说明
一个K8S集群由Master节点和Node节点两部分组成,接下来我们就说说这两部分分别包含了哪些组件。
通过以上两个图可以更好的对我们的组件进行了解!
Master节点
1.API Server
K8S集群中的核心组件,整个集群管理的API接口。集群内部各个模块之间的调用都是通过API Server进行交互的,我们对于K8S集群的操作也都是由API Server进行下发的。API Server提供的验证和授权保证了整个集群的安全。
2.Etcd
K8S是没有真正使用到数据库的,所以它把关键数据都存放在了我们的Etcd上(键值存放)。K8S集群的数据是随时发生变化的,比如说用户提交了新任务,增加了新的Node,或者Node发生了宕机,容器死掉了等等操作,都会触发我们数据的变更,而这些数据,都会由我们的Etcd进行存放,所以,也就说明了K8S上的其它组件只需要监听Etcd中的数据,就可以知道自己应该做什么。又因为Etcd只和API Server直接对接,既可以说明了Etcd上的数据都是由API Server负责汇总写入和输出的。一句话总结,Etcd保存了整个K8S集群的状态信息。
3.Scheduler
说直白点,就是当我们的Pod要创建时,Scheduler负责将我们的Pod分配归属到对应的Node上。
4.Controller manager
Pod的所有状态都是由Controller负责控制的,然后所有Controller由Controller manager进行统一管理。也可以理解为Controller manager是负责我们K8S集群内Node、Namespace、Service、Token、Replication等资源对象的管理者,使我们的Pod维持在我们预期的工作状态。
Node节点
1.Pod
Pod是K8S最基本的操作单元,一个Pod代表集群中运行的一个进程,一个Pod由一个或多个容器组成。
2.Kubelet
是每个Node上运行的代理,负责与我们的API Server进行对接。容器的创建删除等操作都是由Kubelet进行执行的,Kubelet通过API Server监测到Scheduler产生的Pod绑定事件,然后从Etcd中获取Pod清单,然后创建删除容器。Kubelet还会周期性的监测着该Node上的容器状态,再反馈给API Server。
3.Kube-proxy
可以理解为网络代理,也可以说是个路由表,负责为我们的Service资源提供cluster内部的访问和负载均衡。