Update operator demand

Signed-off-by: Jimmy song <rootsongjc@gmail.com>
pull/383/head
Jimmy song 2019-10-21 20:22:53 +08:00
parent 18fe9e2200
commit 079af6d188
1 changed files with 30 additions and 11 deletions

View File

@ -8,23 +8,41 @@ Operator是将运维人员对软件操作的知识给代码化同时利用Kub
Operator使用了Kubernetes的自定义资源扩展API机制如使用[CRD](../concepts/custom-resource.md)CustomResourceDefinition来创建。Operator通过这种机制来创建、配置和管理应用程序。
当前CoreOS提供的以下四种Operator
- [etcd](https://coreos.com/operators/etcd/docs/latest/)创建etcd集群
- [Rook](https://github.com/rook/rook):云原生环境下的文件、块、对象存储服务
- [Prometheus](https://coreos.com/operators/prometheus/docs/latest/)创建Prometheus监控实例
- [Tectonic](https://coreos.com/tectonic/)部署Kubernetes集群
以上为CoreOS官方提供的Operator另外还有很多很多其他开源的Operator实现。
当前CoreOS依靠社区力量创建了众多的 Operator<https://operatorhub.io/>
Operator基于Kubernetes的以下两个概念构建
- 资源:对象的状态定义
- 控制器:观测、分析和行动,以调节资源的分布
## Operator 用途
若您有以下需求,可能会需要用到 Operator
- 按需部署一个应用程序
- 需要备份和恢复应用程序的状态(如数据库)
- 处理应用程序代码的升级以及相关更改,例如数据库架构或额外的配置设置
- 发布一个服务要让不支持Kubernetes API的应用程序能够发现
- 模拟整个或部分集群中的故障以测试其弹性
- 在没有内部成员选举程序的情况下为分布式应用程序选择领导者
## 一个Operator用途的详细示例
下面是一个使用 Operator 的详细示例。
- 一个名为SampleDB的自定义资源您可以将其配置到集群中。
- 确保正在运行的Deployment的Pod中包含Operator的控制器部分。
- Operator代码的容器镜像。
- 查询控制平面以找出配置了哪些SampleDB资源的控制器代码。
- Operator的核心是告诉API Server如何使现实与代码里已配置的资源匹配。
- 如果添加新的SampleDBOperator将设置PersistentVolumeClaims以提供持久的数据库存储设置StatefulSet以运行SampleDB并设置Job来处理初始配置。
- 如果删除它Operator将建立快照然后确保删除了StatefulSet和卷。
- Operator还管理常规数据库备份。对于每个SampleDB资源Operator确定何时创建可以连接到数据库并进行备份的Pod。这些Pod将依赖于ConfigMap和/或具有数据库连接详细信息和凭据的Secret。
- 由于Operator旨在为其管理的资源提供强大的自动化功能因此会有其他支持代码。对于此示例代码将检查数据库是否正在运行旧版本如果是则创建Job对象为您升级数据库。
## 创建Operator
Operator本质上是与应用息息相关的因为这是特定领域的知识的编码结果这其中包括了资源配置的控制逻辑。下面是创建Operator的基本套路
Operator本质上是与应用息息相关的因为这是特定领域的知识的编码结果这其中包括了资源配置的控制逻辑。下面是创建Operator的基本步骤
1. 在单个Deployment中定义Operatorhttps://coreos.com/operators/etcd/latest/deployment.yaml
2. 需要为Operator创建一个新的自定义类型[CRD](../concepts/custom-resource.md),这样用户就可以使用该对象来创建实例
@ -46,5 +64,6 @@ Operator本质上是与应用息息相关的因为这是特定领域的知识
- [awesome-operators - github.com](https://github.com/operator-framework/awesome-operators)
- [OperatorHub - operatorhub.io](https://www.operatorhub.io)
- [Writing a Kubernetes Operator in Golang](https://medium.com/@mtreacher/writing-a-kubernetes-operator-a9b86f19bfb9)
- [Introducing Operators: Putting Operational Knowledge into Software](https://coreos.com/blog/introducing-operators.html)
- [Automating Kubernetes Cluster Operations with Operators](https://thenewstack.io/automating-kubernetes-cluster-operations-operators/)
- [Introducing Operators: Putting Operational Knowledge into Software - coreos.com](https://coreos.com/blog/introducing-operators.html)
- [Automating Kubernetes Cluster Operations with Operators - thenewstack.io](https://thenewstack.io/automating-kubernetes-cluster-operations-operators/)
- [Operator pattern - kubernetes.io](https://kubernetes.io/docs/concepts/extend-kubernetes/operator)