从Borg到Kubernetes — 为什么要开源?

一、背景演进:Google 三代容器管理系统

时间线:
2003-2013    Borg (内部系统)
     ↓
2013-2014    Omega (过渡系统)
     ↓
2014-至今    Kubernetes (开源)

Borg (2003-2013)

  • Google 内部集群管理系统
  • 管理数千个应用、数十万 jobs
  • 完全封闭,未开源

Omega (2013-2014)

  • Borg 的简化版本
  • 仍为内部使用
  • 为 K8s 奠定基础

Kubernetes (2014-)

  • 2014年6月6日公开宣布开源
  • 基于 Borg 经验,但做了大量改进
  • 2015年捐赠给 CNCF

二、为什么要开源 Kubernetes?

2.1 竞争压力:对抗 AWS

┌──────────────────────────────────────────────────────┐
│                 2013-2014 年的市场环境                │
├──────────────────────────────────────────────────────┤
│  Amazon AWS 已占据主导地位                            │
│  Google Cloud Platform (GCP) 是后来者                 │
│  Docker 2013年开源,容器技术兴起                       │
└──────────────────────────────────────────────────────┘

Brendan Burns (K8s 联合创始人) 在 Google Cloud Blog 分享:

“我们一直认为开源 Kubernetes 是正确的方式。最重要的是,我们能够与许多优秀的工程师合作,他们真正了解部署容器的企业需求。”

2.2 社区反馈:加速迭代

优势 说明
即时反馈 问题或设计缺陷立即被发现
众包智慧 全球开发者贡献代码和修复
生态建设 形成围绕 K8s 的完整生态系统
标准化 避免各家重复造轮子

2.3 商业策略:云服务的差异化

谷歌的商业逻辑:

开源 Kubernetes → 降低采用门槛
       ↓
用户习惯 K8s → 更倾向于选择 GCP
       ↓
GCP 获得竞争优势 → 增加云服务收入

关键洞察:

  • K8s 成为”事实标准”后,谷歌可以通过 GKE (Google Kubernetes Engine) 提供托管服务
  • 虽然 K8s 本身免费,但与之配套的云服务可以收费

2.4 避免重蹈覆辙

Borg 时代的问题:

  • 内部系统无法复用
  • 其他公司重复开发类似系统
  • 错失行业标准制定机会

Kubernetes 的策略:

  • 开源 = 定义行业标准
  • 让所有人基于同一套系统
  • Google 作为主要贡献者保持影响力

三、Kubernetes vs Borg:核心改进

3.1 设计哲学的改变

维度 Borg Kubernetes
开源 ❌ 内部专用 ✅ 完全开源
复杂度 非常复杂 更简洁、模块化
抽象层次 面向 Google 内部需求 面向通用场景
生态系统 CNCF 驱动

3.2 关键技术改进

Borg → Kubernetes 的演变:

1. Pod 替代 Alloc
   - Borg: Alloc (资源分配单元)
   - K8s: Pod (更灵活的封装)

2. Labels 替代 Job Index
   - Borg: 每个 task 有 job 内索引
   - K8s: key-value labels,支持多维分组

3. Declarative API
   - Borg: 命令式
   - K8s: 声明式 + Control Loop

4. Service Mesh 雏形
   - Borg: 紧耦合
   - K8s: 解耦,Service 抽象

5. Extensibility
   - Borg: 闭源,难扩展
   - K8s: API 扩展机制 (CRD, Custom Controllers)

3.3 代码对比示例

Borg 配置 (Borgcfg):

# 内部格式,非标准化
job "web-server" {
  cpu = 1
  memory = 512MB
  disk = 1GB
  ...
}

Kubernetes Manifest:

1
2
3
4
5
6
7
8
9
10
11
12
13
# 标准化 YAML,跨平台
apiVersion: v1
kind: Pod
metadata:
name: web-server
spec:
containers:
- name: web
image: nginx
resources:
requests:
memory: "64Mi"
cpu: "250m"

四、开源带来的影响

4.1 行业格局重塑

2014年前:
  - 容器编排:各家各搞一套
  - Docker Swarm、Mesos、Cloud Foundry...

2014年后:
  - Kubernetes 成为事实标准
  - 2015年 CNCF 成立,K8s 成为首个项目
  - 各大云厂商均提供 K8s 服务

4.2 数据对比

指标 数据
GitHub Stars 100,000+
贡献者 3,000+
活跃企业 数百 home
云厂商支持 AWS、Azure、GCP、阿里云…

4.3 CNCF 的贡献

2015年7月:CNCF (云原生计算基金会) 成立
    ↓
Kubernetes 成为首个入驻项目
    ↓
Google + Linux Foundation 共同维护
    ↓
避免被单一厂商控制

五、总结:开源策略的成功逻辑

核心原因

┌─────────────────────────────────────────────────┐
│  1. 商业竞争需要                                 │
│     → 对抗 AWS,为 GCP 争取优势                   │
│                                                  │
│  2. 技术迭代需要                                 │
│     → 全球开发者反馈,加速进化                    │
│                                                  │
│  3. 行业标准需要                                 │
│     → 避免碎片化,建立统一标准                    │
│                                                  │
│  4. 生态构建需要                                 │
│     → 周边工具、培训、认证形成闭环                │
│                                                  │
│  5. 人才吸引需要                                 │
│     → 开源项目吸引顶级工程师加入                  │
└─────────────────────────────────────────────────┘

一句话概括

开源 Kubernetes 是 Google 的战略决策:用开源换标准,用标准换生态,用生态换竞争优势。

这不仅是技术决策,更是商业智慧——让全行业基于谷歌的技术栈发展,而谷歌从中获得最大的商业回报。