Kubernetes架构

Kubernetes是容器编排工具,可以做到自动化运维、服务发现、服务负载均衡和滚动升级等,其架构如下图。

Kubernetes架构_第1张图片 Kubernetes架构图

如图所示,Kubernetes包括Master和Node两个部分,一个Master可以对应多个Node。

Master上包括API Server、kube-scheduler、Controller Manager、etcd组件;Node上主要有kubelet、kube-proxy等。下面介绍一下每个组件。

API Server

是组件间的交互枢纽和集群的访问入口。提供了资源对象(如Service、Deployment和Replication Controller等)的唯一操作入口,以REST方式提供服务,这些API都是针对shuniu资源对象的增删改查及监听资源变化的接口,如创建Pod、创建Deployment和监听资源的变化等接口。

kube-scheduler

调度器,为需要创建的Pod选择合适的Node。

Controller Manager

资源对象的自动化控制中心,比如Replication Controller(RC,副本控制器),用于保证集群中pod的副本数量与预期数量保持一致,即若replicas=3,当其中一个pod被销毁时,RC 就会新建一个pod,保证pod的副本数是3。

etcd

是Kubernetes默认提供的Key/Value存储系统,保存集群的所有数据。

kubelet:对Node上的pod生命周期的管理(pod的增删改查和监控),并定时上报Node的状态信息到Master的API Server。

kube-proxy

实现了负载均衡。

组件间的交互

1. 以RC创建的完整流程举例。

Kubernetes架构_第2张图片 Kubernetes组件交互图-以RC创建的完整流程为例

通过kubectl命令行工具提交一个创建RC(pod副本为1)的请求,API Server接收到请求并写入etcd,Controller Manager利用API Server的监听资源变化的接口监听到这个事件,发现集群中没有对应的pod,根据RC里面的pod模板定义生成一个pod对象,再利用API Server将pod对象写入etcd,接着这个事件被kube-scheduler发现,根据预选策略和优选策略选出合适的Node来创建Pod(注意,kube-scheduler并不会创建pod,真正的创建过程交给kubelet),并将选择的Node信息通过API Server写入etcd,被选的Node上的kubelet监听到需要创建新的pod,就真正去创建了pod。

2.上面我们并没有用到kube-proxy,以创建一个Service,并映射到上述的pod举例。

通过kubectl命令行工具提交一个创建Service的请求,API Server接收到请求并写入etcd,Controller Manager利用API Server的监听资源变化的接口监听到这个事件,通过Label标签查询到相关联的pod,然后生成Service的Endpoints信息并通过API Server写到etcd。所有Node上的kube-proxy通过API Server查询并监听到Service对象与其对应的EndPoints信息,建立一个负载均衡器来实现Service访问到后端pod的流量转发。

附上参考:龚正《Kubernetes权威指南》

你可能感兴趣的:(云计算,kubernetes)