codecamp

Kubernetes 开发云控制器管理器

开发云控制器管理器

FEATURE STATE: Kubernetes v1.11 [beta]

cloud-controller-manager​ 是指嵌入特定云的控制逻辑之 控制平面组件。 ​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​ 接口来注册其自身实现代码, 从而更新一个用来记录可用云驱动的全局变量。

开发

树外(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

很多云驱动都将其控制器管理器代码以开源代码的形式公开。 如果你在开发一个新的 cloud-controller-manager,你可以选择某个树外(Out-of-Tree) 云控制器管理器作为出发点。

树内(In Tree)

对于树内(In-Tree)驱动,你可以将树内云控制器管理器作为集群中的 DaemonSet 来运行。 


Kubernetes 安全地清空一个节点
Kubernetes 开启服务拓扑
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

Kubernetes 管理集群

Kubernetes Service

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }