相对更加灵活和编程友好的管理"有状态应用"的解决方案,它就是:Operator
会议一下有状态应用:
- 比如数据库集群,数据挂载需要有顺序
- 维护拓扑关系的应用
使用statefulSet这个对象来描述。
CRD又是什么?
Operator的工作原理,实际上是利用了Kubernetes的自定义API资源(CRD),来描述我们想要部署的"有状态应用";然后在自定义控制器里,根据自定义API对象
的变化,来完成具体的部署和运维
工作。
编写一个Etcd Operator,与我们前面编写一个自定义控制器的过程,没什么不同
CRD是custom resource definition,允许用户自定义资源,类似Pod和Node这样的资源。
总结:
Operator利用CRD,结合控制器,来描述有状态的应用。Operator是一套代码,会先创建CRD定义,然后自定义控制器来控制CR的创建过程,
operator需要编写代码