添加新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将带来一次后台软件框架变革的原因所在。

最低0.47元/天 解锁文章
4949

被折叠的 条评论
为什么被折叠?



