Operator

    Operator基于Third Party Resources扩展了新的应用资源,并通过控制器来保证应用处于预期状态。比如etcd operator通过下面的三个步骤模拟了管理etcd集群的行为:

    1. 通过Kubernetes API观察集群的当前状态;
    2. 分析当前状态与期望状态的差别;
    3. 调用etcd集群管理API或Kubernetes API消除这些差别。

    如何创建Operator

    • Operator自动创建一个Third Party Resources资源类型,用户可以用该类型创建应用实例
    • Operator应该利用Kubernetes内置的Serivce/ReplicaSet等管理应用
    • Operator应该向后兼容,并且在Operator自身退出或删除时不影响应用的状态
    • Operator应该支持应用版本更新
    • Operator应该测试Pod失效、配置错误、网络错误等异常情况

    为了方便描述,以Etcd Operator为例,具体的链接可以参考-。

    在Kubernetes部署Operator:
    通过在Kubernetes集群中创建一个deploymet实例,来部署对应的Operator。具体的Yaml示例如下:

    对应的有状态服务yaml文件示例如下:

    部署对应的有状态服务:

    其他示例

    与其他工具的关系

    • StatefulSets:StatefulSets为有状态服务提供了DNS、持久化存储等,而Operator可以自动处理服务失效、备份、重配置等复杂的场景。
    • Puppet:Puppet是一个静态配置工具,而Operator则可以实时、动态地保证应用处于预期状态
    • Helm:Helm是一个打包工具,可以将多个应用打包到一起部署,而Operator则可以认为是Helm的补充,用来动态保证这些应用的正常运行