Operator

    Operator是将运维人员对软件操作的知识给代码化,同时利用Kubernetes强大的抽象来管理大规模的软件应用。

    Operator使用了Kubernetes的自定义资源扩展API机制,如使用CRD(CustomResourceDefinition)来创建。Operator通过这种机制来创建、配置和管理应用程序。

    • :创建etcd集群
    • Rook:云原生环境下的文件、块、对象存储服务
    • :创建Prometheus监控实例

    以上为CoreOS官方提供的Operator,另外还有很多很多其他开源的Operator实现。

    Operator基于Kubernetes的以下两个概念构建:

    • 资源:对象的状态定义
    • 控制器:观测、分析和行动,以调节资源的分布
    1. 在单个Deployment中定义Operator,如:https://coreos.com/operators/etcd/latest/deployment.yaml
    2. 需要为Operator创建一个新的自定义类型,这样用户就可以使用该对象来创建实例
    3. Operator应该利用Kubernetes中内建的原语,如Deployment、Service这些经过充分测试的对象,这样也便于理解
    4. Operator应该向后兼容,始终了解用户在之前版本中创建的资源
    5. 当Operator被停止或删除时,Operator创建的应用实例应该不受影响
    6. Operator应该进行“Chaos Monkey”测试,以模拟Pod、配置和网络故障的情况下的行为。

    我们都知道在 Kubernetes 上安装应用可以使用 Helm 直接安装各种打包成 Chart 形式的 Kubernetes 应用,但随着 Kubernetes Operator 的流行,Kubernetes 社区又推出了 OperatorHub,你可以在这里分享或安装 Operator:。

    另外,awesome-operators 中罗列了目前已知的 Operator。