欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Kubernetes架构

程序员文章站 2022-07-09 19:23:21
Kubernetes是容器编排工具,可以做到自动化运维、服务发现、服务负载均衡和滚动升级等,其架构如下图。Kubernetes架构图如图所示,Kubernetes包括Master和Node两个部分,一个Master可以对应多个Node。Master上包括API Server、kube-scheduler、Controller Manager、etcd组件;Node上主要有kubelet、kube-proxy等。下面介绍一下每个组件。API Server是组件间的交互枢纽和集群的访问入口...

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

Kubernetes架构
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架构
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权威指南》

本文地址:https://blog.csdn.net/weixin_42146764/article/details/107521297