K8S从Borg演进而来,了解Borg系统的架构是很有借鉴意义的,可以对比后续K8S中的组件来了解Google做了哪些优化。
不过值得一提的是Borg
系统在Google内部运行了10多年之后,才于2015的一篇Large-scale cluster management at Google with Borg
论文中介绍了一些细节。
每个Cell
代表着一个集群,而每个集群主要由三个部件组成,分别是scheduler
、BorgMaster
以及Borglet
。
scheduler
负责提交任务给BorgMaster
,由BorgMaster
来进行任务的分发和Borglet
的管理;BorgMaster
与Borglet
是中心与节点的关系。BorgMaster
在收到scheduler
的任务时,会将任务记录在Paxos Store
中,然后由调度器从中读取任务然后进行分发。由于Borg
是个高可靠的系统,所以BorgMaster
将会有多个副本,每次从中选举出一个leader
,其他的作为备份。Borglet
是运行在节点机器上的Borg
代理,负责本地机器的管理。
需要注意的是每个Borglet
在与BorgMaster
进行通信的时候,比如上报自己信息时并不会直接发送给BorgMaster
,而是会经过link shard
,link shard
中只存储Borglet
增量的改变信息,防止在BorgMaster
的压力过大。
BorgMaster
的副本个数应是大于1的奇数,一方面是为了高可靠,一方面是奇数方面选举时投票。
需要深入了解的知识
Paxos
分布式存储是什么;