Edit This Page

开发云控制器管理器

FEATURE STATE: Kubernetes v1.11 [beta]

在即将发布的版本中,云控制器管理器将是把 Kubernetes 与任何云集成的首选方式。 这将确保驱动可以独立于核心 Kubernetes 发布周期开发其功能。

FEATURE STATE: Kubernetes 1.8 [alpha]

在讨论如何构建自己的云控制器管理器之前,了解有关它如何工作的一些背景知识是有帮助的。云控制器管理器是来自 kube-controller-manager 的代码,利用 Go 接口允许插入任何云的实现。大多数框架和通用控制器的实现在 core,但只要满足 云提供者接口,它就会始终执行它所提供的云接口。

为了深入了解实施细节,所有云控制器管理器都将从 Kubernetes 核心导入依赖包,唯一的区别是每个项目都会通过调用 cloudprovider.RegisterCloudProvider 来注册自己的驱动,更新可用驱动的全局变量。

开发

Out of Tree

要为您的云构建一个 out-of-tree 云控制器管理器,请按照下列步骤操作:

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

用现有的 out-of-tree 云驱动作为例子可能会有所帮助。你可以在这里找到 清单

In Tree

对于 in-tree 驱动,您可以将 in-tree 云控制器管理器作为群集中的 Daemonset 运行。有关详细信息,请参阅 运行的云控制器管理器文档