开发 Cloud Controller Manager
Kubernetes v1.11 [beta]
cloud-controller-manager 是一个 Kubernetes 控制平面 组件,它嵌入了云厂商特定的控制逻辑。cloud controller manager 使你能够将集群连接到云厂商的 API,并将与该云平台交互的组件与仅与集群交互的组件分离开来。
通过解耦 Kubernetes 与底层云基础设施之间的互操作逻辑,cloud-controller-manager 组件使得云厂商能够以与主要的 Kubernetes 项目不同的节奏发布特性。
背景
由于云厂商与 Kubernetes 项目相比以不同的节奏开发和发布,将特定于云厂商的代码抽象到 cloud-controller-manager
二进制文件中,使得云厂商能够独立于核心 Kubernetes 代码演进。
Kubernetes 项目提供了 cloud-controller-manager 的骨架代码和 Go 接口,允许你(或你的云厂商)插入自己的实现。这意味着云厂商可以通过导入核心 Kubernetes 包来实现 cloud-controller-manager;每个云厂商将通过调用 cloudprovider.RegisterCloudProvider
来注册自己的代码,以更新可用云厂商的全局变量。
开发
树外
为你的云构建一个树外 cloud-controller-manager
- 创建一个 Go 包,其实现满足 cloudprovider.Interface。
- 使用核心 Kubernetes 中 cloud-controller-manager 的
main.go
作为你的main.go
的模板。如上所述,唯一的区别应该是将要导入的云包。 - 在
main.go
中导入你的云包,确保你的包包含一个init
块来运行cloudprovider.RegisterCloudProvider
。
许多云厂商将其控制器管理器代码作为开源项目发布。如果你正在从头开始创建一个新的 cloud-controller-manager,你可以将现有的树外 cloud controller manager 作为起点。
树内
对于树内云厂商,你可以在集群中将树内 cloud controller manager 作为 DaemonSet 运行。参阅Cloud Controller Manager 管理获取更多信息。