Google Borg简介
特性
- 资源利用率高
- 不需要模拟操作系统
- 通过在线离线作业混合部署,提高物理资源利用率
- 服务器共享,在进程级别隔离进程。
- 应用高可用,故障恢复时间短。
- 调用策略灵活
- 应用接入方便,提供完备的Job描述语言,服务发现,实时状态监控和诊断工具
优势
- 对外隐藏底层资源管理、调度和故障处理
- 应用高可用
- 可弹性扩展
基本概念
workload
cell,每个cell是一个集群,用来划分资源
Job和task,作业调度
Naming,微服务见调用,服务发现
Borg架构
borgmaster
管理节点
- 处理客户端的请求,比如创建Job,查询Job
- 维护系统组件和服务状态,比如服务器和Task等
- 与borglet通信
scheduler
根据资源需求, 进行作业调度分发
调度策略
- worst fit 利用率最低的节点来运行任务 ,最终各个节点的利用率比较平均
- best fit 资源恰好满足的节点,作业会调度集中到一批机器上,这批机器的利用率高,利用率低的可以下线节省资源开销
- hybird
调度优化
borglet
作业节点
应用高可用
- 被抢占的离线业务会被重新放回pending queue等待重新调度
- 多副本跨故障域部署
- 支持幂等性,支持客户端重复操作
- 声明式输入,指明期望
- 当服务不可用时,要控制重新调度任务的速率。Borg无法区分是节点故障还是网络分区,如果是后者,等待网络恢复更利于保障服务的可用性。
Borg系统自身高可用
borgmaster多副本设计
采用简单的底层工具来部署borg实例,避免过多外部依赖
每个cell的Borg独立部署,避免相互影响
Borg 调度原理
资源回收具体体现在哪里
隔离性
安全性隔离
- 早起采用chroot jail,后来采用Namespace
性能隔离
- 采用基于cgroup的容器技术实现
- 在线任务是延时敏感型的,优先级高;离线任务优先级低
- borg通过不同优先级之间的抢占式调度来优先保证在线业务的性能,牺牲离线任务
- Borg将资源类型分为两类
- 可压榨型:CPU是可压榨型,资源耗尽进程不会中止
- 不可压榨型:内存是不可压榨型,耗尽进程会终止;磁盘也是不可压榨型
Kubernetes是谷歌开源的容器集群管理系统,是大规模容器管理技术borg的开源版本,主要功能包括
- 基于容器的应用部署,维护和升级
- 负载均衡和服务发现
- 跨机器和跨区域的集群调度
- 自动伸缩
- 无状态服务和有状态服务
- 插件机器保证扩展性