从零开始构建operator(二)添加API和controller

添加新API和controller

说明

这里需要说明一下,新API和controller之间的关系,本质上说他们没有直接关系。

CRD

在kubernetes中添加新API的方法叫CRD(另外一种叫做聚合层,不是本文关注的重点,感兴趣的同学可以自行参考官网),是一种在不改变原有API Server接口的情况动态扩展API方法。在本文档中如无特殊说明扩展API等同于CRD。每个CRD对应着一种资源类型,用户创建了新的CRD之后,就可以通过新的API创建该CRD描述的资源,比如名称为ZnbaseCluster的CRD描述的是运行在kubernetes上的znbase集群。kubernetes的API server自动添加了对该资源的请求的处理程序,当然处理程序实现的仅为对该资源属性的查询修改等。本质是将其存储在ETCD上,然后将REST操作转换为对ETCD存储对象的操作。

controller

而controller是本质上是一个事件队列和一个无限的循环,在启动的时候向API server订阅kubernetes的若干事件,当事件发生时API Server将事件放入事件队列中。controller不间断地处理事件队列中的事件,向kubernetes或目标系统输出控制指令,推动目标系统进入预想状态。
可以看出controller实际上是一种软件框架,具有声明式接口、幂等操作等特性,其应用场景不限于kubernetes,完全可以用于其他后台应该程序。这也是有些人认为controller将带来一次后台软件框架变革的原因所在。

CRD和controller的关系

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值