众所周知,[Kubernetes](http://kubernetes.io) 是 Google 于 2014 年 6 月基于其内部使用的 [Borg](https://research.google.com/pubs/pub43438.html) 系统开源出来的容器编排调度引擎。其实从 2000 年开始,Google 就开始基于容器研发三个容器管理系统,分别是 Borg、Omega 和 Kubernetes。这篇由 Google 工程师 Brendan Burns、Brian Grant、David Oppenheimer、Eric Brewer 和 John Wilkes 几人在 2016 年发表的[《Borg, Omega, and Kubernetes》](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44843.pdf)论文里,阐述了 Google 从 Borg 到 Kubernetes 这个旅程中所获得知识和经验教训。
## Borg、Omega 和 Kubernetes
Google 从 2000 年初就开始使用容器(Linux 容器)系统,Google 开发出来的第一个统一的容器管理系统在内部称之为 “Borg”,用来管理长时间运行的生产服务和批处理服务。由于 Borg 的规模、功能的广泛性和超高的稳定性,一直到现在 Borg 在 Google 内部依然是主要的容器管理系统。
Omega 是 Google 的第二套容器管理系统,它是 Borg 的延伸。它之所以被创建,是为了提高 Borg 生态系统的软件工程水平。随着越来越多的应用被开发并运行在 Borg 上,Google 开发了一个广泛的工具和服务的生态系统。Omega 应用了 Borg 中已经被验证的成功模式,但从头开始构建,以实现更一致的架构。这些系统提供了配置和更新作业、预测资源需求、动态推送配置文件到运行中的程序、服务发现、负载均衡、自动扩容、机器生命周期管理和配额管理等功能。Omega 的许多创新(包括多个调度器)都被纳入了 Borg。
- [Borg, Omega, and Kubernetes: Lessons learned from three container-management systems over a decade - queue.acm.org](https://queue.acm.org/detail.cfm?id=2898444)