kubernetes专题二:k8s架构
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,所以这个问题不是我们思考的了。
相关文章
- 使用Django,Prometheus,和Kubernetes定制应用指标
- 从零开始入门 K8s | Kubernetes 调度和资源管理
- kubernetes-v1.20.4 二进制部署-kubelet、kube-proxy
- Kubernetes详解(七)——Service对象部署和应用
- 【云原生 | Kubernetes 系列】--Gitops持续交付 CD Push Pipeline实现
- 【云原生 | Kubernetes 系列】--Istio基础和部署
- 【云原生 | Kubernetes 系列】--Gitops持续交付 ArgoCD自动同步策略
- 没有Kubernetes怎么玩Dapr?
- [K8s] Kubernetes 是什么 不是什么
- 【K8S】K8S 1.18.2安装dashboard(基于kubernetes-dashboard 2.0.0版本)
- y40.第三章 Kubernetes从入门到精通 -- k8s 资源对象(十三)
- y35.第三章 Kubernetes从入门到精通 -- k8s集群环境搭建(八)
- y46.第三章 Kubernetes从入门到精通 -- ceph 在k8s中的使用案例(十九)
- 【云原生之kubernetes实战】在k8s环境下部署jpress开源网站
- 【云原生 • Kubernetes】配置管理 - Secret & ConfigMap
- 【ML on Kubernetes】第 11 章:Kubernetes 上的机器学习
- Kubernetes inotify watch 耗尽
- 【云原生 | Kubernetes 系列】--K8s环境rdb,cefs的使用
- Kubernetes部署_使用kubernetes部署prometheus+grafana监控系统(Kubernetes工作实践类)
- 在 Kubernetes 上运行高可用的 Kafka 集群