返回介绍

Operator

发布于 2019-09-08 09:21:11 字数 2792 浏览 997 评论 0 收藏 0

Operator是由CoreOS开发的,用来扩展Kubernetes API,特定的应用程序控制器,它用来创建、配置和管理复杂的有状态应用,如数据库、缓存和监控系统。Operator基于Kubernetes的资源和控制器概念之上构建,但同时又包含了应用程序特定的领域知识。创建Operator的关键是CRD(自定义资源)的设计。

工作原理

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

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

当前CoreOS提供的以下四种Operator:

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

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

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

  • 资源:对象的状态定义
  • 控制器:观测、分析和行动,以调节资源的分布

创建Operator

Operator本质上是与应用息息相关的,因为这是特定领域的知识的编码结果,这其中包括了资源配置的控制逻辑。下面是创建Operator的基本套路:

  1. 在单个Deployment中定义Operator,如:https://coreos.com/operators/etcd/latest/deployment.yaml
  2. 需要为Operator创建一个新的自定义类型CRD,这样用户就可以使用该对象来创建实例
  3. Operator应该利用Kubernetes中内建的原语,如Deployment、Service这些经过充分测试的对象,这样也便于理解
  4. Operator应该向后兼容,始终了解用户在之前版本中创建的资源
  5. 当Operator被停止或删除时,Operator创建的应用实例应该不受影响
  6. Operator应该让用户能够根据版本声明来选择所需版本和编排应用程序升级。不升级软件是操作错误和安全问题的常见来源,Operator可以帮助用户更加自信地解决这一问题。
  7. Operator应该进行“Chaos Monkey”测试,以模拟Pod、配置和网络故障的情况下的行为。

OperatorHub

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

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

参考

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文