文档章节

4-kubernetes-总体架构

eddy_linux
 eddy_linux
发布于 2017/06/19 18:38
字数 1131
阅读 51
收藏 0
    1.kubernetes集群有两类节点组成:Master和Node,在Master上运行etcd,apiserver,controller Manager和scheduler四个组件,其中后三个组件构成了kubernetes的总控中心,负责对集群中所有资源进行管控和调度,在每个Node运行kubelet,proxy,docker daemon三个组件负责对本节点上的Pod的生命周记进行管理,以及实现服务代理功能另外在所有节点上都可以运行kubectl命令行工具,它提供了kubernetes集群管理工具集
    
    2.etcd是高可用的key/value存储系统,用于持久化存储集群中所有的资源对象,例如集群中的Node,Service,Pod,RC,Namespace等,apiserver则提供操作etcd的封装接口API,以REST方式提供服务,这些API基本上都是集群中资源对象的增删改查记忆监听资源变化的接口,比如创建Pod,RC,监听Pod变化等接口,apiserver是连接其他素有服务组件的枢纽,下面以RC与相关Service创建的完整流程为例,来说明kubernetes里面各个服务的的作用以及他们之间的交互关系

    3.我们通过kubectl提交一个创建RC的请求假设Pod副本数为1,该请求通过apiserver被写入到etcd中,此时controller Manager通过apiserver的监听资源变化的接口监听到这个RC时间,分析之后,发现当前集群中还没有它所对应的Pod实例,于是根据RC里面Pod模版定义生成一个Pod对象,通过apiserver写入到etcd中,接下来此时间被scheduler发现,它立即执行一个复杂的调度流程,为这个Pod选定一个落户的Node,可称这个过程为绑定Pod building,然后又通过apiserver将这一结果写入到etcd中,然后Node上运行的kubelet通过apiserver检测到这个新生的Pod并且按照他的定义启动该Pod并进行负责生命周期,随后通过kubectl提交一个映射到该Pod的Service的创建请求,controller Manager会通过Label标签查询到相关联的Pod实例,然后生成Service的Endpoint信息并通过apiserver写入到etcd中,接下来所有Node上运行的proxy进程通过apiserver查询并监听到Service对想与其对应的Endpoint信息,建立一个负载均衡器来实现Service访问到后端Pod的流量转发功能。

    4.从上面分析来看kubernetes各个组件功能:
           apiserver:提供资源对象的唯一操作入口,其他所有组件都必须通过它提供的api来操作资源数据,通过对相关资源数据的全量查询+编号监听,这些组件可以实时的完成相关的业务功能,比如某个新Pod一旦提交到apiserver中controller manager就会立即发现并开是调度。
           controller manager:集群内部的管理控制中心,主要目的实现kubernetes集群的故障检测和恢复的自动化工作,比如根据RC的定义完成Pod的复制和移除,以确保Pod实例数量符合RC副本的定义,根据Service与Pod的管理关系,完成服务的Endpoints对象的创建和更新,其他注入Node的发现,管理和状态监控,死亡容器所占磁盘空间以及本地缓存的镜像文件的清理等工作也是controller manager完成的
           scheduler:集群中的调度器,负责Pod在集群节点中的调度分配
           kubelet:负责本Node节点上的Pod创建,修改,监控,删除等生命周期管理,同时kubelet定时上报本Node的状态信息到apiserver里
           proxy:实现Service的代理及软件模式的负载均衡器
           客户端通过kubectl命令行工具或kubectl proxy来访问kubernetes系统,在kubernetes集群内部的客户端都可以直接使用kubectl命令管理集群,kubectl proxy是apiserver的一个反向代理,在kubernetes集群外部的客户端可以通过kubectl proxy来访问apiserver。
    5.apiserver内部有一套完整的安全机制包括认证授权,以及准入控制等相关模块,apiserver收到一个rest请求后会首先执行认证授权准入控制等相关逻辑,过滤非法请求然后将请求发送给apiserver的rest服务模块去执行
           

 

© 著作权归作者所有

eddy_linux
粉丝 22
博文 135
码字总数 188789
作品 0
成都
程序员
私信 提问
HDG 华为开发者汇 杭州站

在这骄阳似火的7月,除了即将到来的G20峰会,还有什么能让杭州人心潮澎湃呢?当然是7月30日的HDG 华为开发者汇 杭州站!一个属于开发者们的盛会,还在等什么,赶紧燥起来! 活动简介: HDG华...

华为开发者社区
2016/07/21
489
0
HDG 华为开发者汇 杭州站

在这骄阳似火的7月,除了即将到来的G20峰会,还有什么能让杭州人心潮澎湃呢?当然是7月30日的HDG 华为开发者汇 杭州站!一个属于开发者们的盛会,还在等什么,赶紧燥起来! 活动简介: HDG华...

华为开发者社区
2016/07/21
10
0
七款Kubernetes工具助您扩展容器架构

最初由Google开发的容器编排工具Kubernetes已成为敏捷和DevOps团队的重要资源。作为一个开源工具,Kubernetes正在成为一个生态系统,而其他工具也正在开发一些组件来支持Kubernetes。这些扩展...

Docker
2018/07/06
0
0
“即服务”理念再延伸——以微服务形式实现镜像处理

本文针对分布式系统中的镜像处理的痛点,提出了两个潜在的可能的解决方案,一为Google Function与Serverless,二为Imageup微服务,相对而言,可能第二种解决方案更加适合目前的场景。 分布式...

Docker
2018/05/12
0
0
Kubernetes1.6安装指南 (二进制文件方式)

Kubernetes的总体架构 部署环境说明 主机名 IP 操作系统 角色 node201 10.0.0.201 centos 7.3 64位 Master node202 10.0.0.202 centos 7.3 64位 Node node203 10.0.0.203 centos 7.3 64位 No......

chenhaifeng2016
2017/05/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

3_数组

3_数组

行者终成事
44分钟前
7
0
经典系统设计面试题解析:如何设计TinyURL(二)

原文链接:https://www.educative.io/courses/grokking-the-system-design-interview/m2ygV4E81AR 编者注:本文以一道经典的系统设计面试题:《如何设计TinyURL》的参考答案和解析为例,帮助...

APEMESH
今天
7
0
使用logstash同步MySQL数据到ES

概述   在生成业务常有将MySQL数据同步到ES的需求,如果需要很高的定制化,往往需要开发同步程序用于处理数据。但没有特殊业务需求,官方提供的logstash就很有优势了。   在使用logstas...

zxiaofan666
今天
10
0
X-MSG-IM-分布式信令跟踪能力

经过一周多的鏖战, X-MSG-IM的分布式信令跟踪能力已基本具备, 特点是: 实时. 只有要RX/TX就会实时产生信令跟踪事件, 先入kafka, 再入influxdb待查. 同时提供实时sub/pub接口. 完备. 可以完整...

dev5
今天
7
0
OpenJDK之CyclicBarrier

OpenJDK8,本人看的是openJDK。以前就看过,只是经常忘记,所以记录下 图1 CyclicBarrier是Doug Lea在JDK1.5中引入的,作用就不详细描述了,主要有如下俩个方法使用: await()方法,如果当前线...

克虏伯
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部