开发云控制器管理器

    该功能目前处于 beta 状态,意味着:

    • 版本名称包含 beta (例如 v2beta3)。
    • 代码经过了充分测试,启用该功能被认为是安全的。默认情况下被启用。
    • 在后续的 beta 或稳定版本中,对象的模式、语义可能以不兼容的方式发生变化。当这种情况发生时,我们将提供迁移到下一个版本的说明。这可能需要删除、编辑和重建 API 对象,编辑过程可能需要一些思考。这可能导致依赖该功能的应用程序停机一段时间。
    • 建议仅在非业务关键场景使用该功能,因为在后续版本中可能会发生不兼容的更改。如果您有多个可以独立升级的集群,那么您可能可以放松这个限制。
    • 请尝试使用我们的 beta 版功能,并给出反馈!在它们退出 beta 测试阶段之后,我们将很难去做更多的更改。

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

    该功能目前处于 alpha 状态,意味着:

    • 版本名称包含 alpha(例如 v1alpha1)。
    • 可能存在问题,启用该功能可能会暴露 bug。默认情况下被禁用。
    • API 可能会在以后的软件版本中以不兼容的方式被更改,而不另行通知。
    • 建议仅在短期测试集群中使用该功能,这是因为使用该功能会增加出现 bug 的风险,而且缺乏长期支持。

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

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

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

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

    In Tree