开发 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

  1. 创建一个 Go 包,其实现满足 cloudprovider.Interface
  2. 使用核心 Kubernetes 中 cloud-controller-manager 的 main.go 作为你的 main.go 的模板。如上所述,唯一的区别应该是将要导入的云包。
  3. main.go 中导入你的云包,确保你的包包含一个 init 块来运行 cloudprovider.RegisterCloudProvider

许多云厂商将其控制器管理器代码作为开源项目发布。如果你正在从头开始创建一个新的 cloud-controller-manager,你可以将现有的树外 cloud controller manager 作为起点。

树内

对于树内云厂商,你可以在集群中将树内 cloud controller manager 作为 DaemonSet 运行。参阅Cloud Controller Manager 管理获取更多信息。

最后修改于 2023 年 1 月 11 日太平洋标准时间 11:12 AM:更新 /tasks/administer-cluster 部分中的页面权重 (b1202c78ff)