Borg, Omega, and Kubernetes
参考:Borg, Omega, and Kubernetes,ACM Queue,2016 年。
Google 从事大规模 Linux 容器的管理工作已有十余年,期间开发了三种不同的容器管理系统。
#最早
- Babysitter 托管长时间运行的服务。
- Global Work Queue 托管短时间运行的批处理作业。
#Borg
Borg 统一了 Babysitter 和 Global Work Queue 的功能
随着越来越多的应用程序被开发出来以便在 Borg 平台上运行,我们的应用团队和基础设施团队也为该平台打造了一套完善的工具与服务生态系统。这些系统能够实现作业的配置与更新、资源需求的预测、将配置文件动态推送至正在运行的作业中、服务发现与负载均衡、自动扩缩容、机器生命周期管理、配额管理等功能。
由于规模庞大、功能齐全且极其稳定,Borg 依然是谷歌主要的容器管理系统。
#Omega
Borg 结构杂乱、包含很多临时拼凑的功能。Omega 旨在解决这些问题。
Omega 将集群的状态存储在基于 Paxos 协议的集中式事务存储系统中,集群控制平面的各个组件(如调度器)都可以访问该系统;同时,它还使用乐观并发控制机制来处理偶尔出现的冲突。
这种解耦机制使得 Borgmaster 的功能可以被拆分成多个独立的组件,这些组件可以相互协作,而无需所有变更都通过一个单一的、集中式的控制单元来处理。Omega 的许多创新举措都是基于这一理念的(包括多调度器)现已被整合进 Borg 中。
#Kubernetes
诞生于这样一个时代:外部开发者开始对 Linux 容器产生兴趣,而 Google 也通过销售公共云基础设施发展起了日益壮大的业务。
与 Borg 的区别:Borg 是作为 Google 内部系统开发的,而 Kubernetes 是作为开源项目开发的。
Kubernetes 的控制面更正式(RESTful API)。
#容器
最初的容器 = 通过 chroot 隔离 “/” 文件系统
FreeBSD jails 增加了更多隔离功能,例如 PID Namespace
Solaris 做了很多改进
cgroups 是最新的技术
容器所提供的资源隔离功能使谷歌的资源利用率远高于行业平均水平;容器技术提供了必要的资源管理工具,同时还能通过强大的内核级资源隔离机制,防止各个进程之间相互干扰。
现代容器不只是实现 隔离,还包括 镜像,Google 内部有 MPM (Midas Package Manager) 来构建和发布镜像,外部有 Docker image registry
#面向应用的基础设施
随着时间的推移,人们逐渐意识到,容器化的优势并不仅限于提升资源利用率。它还能让数据中心从以机器为中心转变为以应用为中心
- 提升开发和部署效率。