zl程序教程

您现在的位置是:首页 >  后端

当前栏目

kubernetes专题二:k8s架构

2023-09-11 14:22:57 时间

k8s的前身——Borg的架构图

BorgMaster:Borg的主节点,主要任务是处理请求转发到对应的Borglet,是整个集群的大脑。为了防止BorgMaster的单节点故障,master会有很多副本,这里的副本是奇数个数,一般大于1,一般为3/5/7个的数量。

scheduler:调度器,将请求写入到Paxos(持久化存储)数据库中。

Borglet:Borg的工作集群,真正处理任务的节点。

请求访问方式(调度集群管理):有几种请求访问方式,分别是:

  • web browsers
  • command-line tools
  • borgcfg、config file

分别是浏览器、命令行和配置文件或文件等。

Borg框架的工作原理

通过几种方式访问BorgMaster,由BorgMaster做分发处理,将任务分发给对应的scheduler(调度器),调度器将任务持久化到Paxos数据库中,Borglet会实时监听数据库,有对应的请求则执行任务。

k8s架构图

 k8s是一个CS架构的组件,分为master服务器、node节点。

kubectl:命令行工具

web UI:前端界面。

master是k8s的领导者,node是负责具体任务的节点。

scheduler:调度器

replication controller:rc,副本控制器,控制器,用来维持副本的数量或者期望值。我们期望容器运行多个副本,就是由rc来控制的,一旦副本数量不满足我们的期望值,rc便要将副本数量改写为我们的期望值或者申请到我们的期望值。

api server:一切服务请求访问的入口。api server与各个模块进行交互,非常繁忙,为了减轻api server的压力,各个请求不会每次都请求api server,而是在本地生成缓存。

k8s工作原理

通过web UI或者kubectl发起任务请求到master,master中的scheduler(调度器)接收到任务后将请求分发给api server,api server再将请求分发给etcd。调度器和etcd并不会直接交互。etcd就类似Borg框架的Paxos数据库,接收到api server的请求后将数据写入到etcd。node节点。

etcd是使用Go语言开发的一个开源的、高可用的分布式key-value存储系统,可以用于配置共享和服务的注册和发现。

类似项目有zookeeper和consul。

etcd官方将它定位成一个可信赖的分布式键值存储服务,它能够为整个分布式集群存储一些关键数据,协助分布式集群的正常运转。

可信赖:为了让etcd能够持久化,不会造成单节点故障,天生支持集群化,并不需要其他的组件参与便可以完成自己的集群化方案。不像mysql,如果需要集群化还需要其他组件的参与。

分布式键值存储服务:意味着扩缩容非常方便,键值存储,KV结构,存储非常方便。

协助分布式集群的正常运转:保存分布式集群需要持久化的配置文件、配置信息。一旦集群死亡,可以借助etcd进行数据恢复。

这就是etcd在k8s中的定位。

etcd存储有两个版本,v2版、v3版,v2会将数据全部写入内存中,v3会引入一个本地的持久化操作,机器宕机之后数据不会丢失,会从本地磁盘恢复。

v1.11(含)之前只支持v2版,并不支持v3版,目前的版本已经很高了,官方稳定版已经到了v3.5、v3.6-DRAFT,所以这个问题不是我们思考的了。