CoreOS有状态应用管理的框架--Operator详解
来源:互联网 发布:网络骗贷十六万借呗 编辑:程序博客网 时间:2024/05/22 05:09
Operator是CoreOS推出的旨在简化复杂有状态应用管理的框架,它是一个感知应用状态的控制器,通过扩展Kubernetes API来自动创建、管理和配置应用实例。
Operator原理
Operator基于Third Party Resources扩展了新的应用资源,并通过控制器来保证应用处于预期状态。比如etcd operator通过下面的三个步骤模拟了管理etcd集群的行为:
- 通过Kubernetes API观察集群的当前状态;
- 分析当前状态与期望状态的差别;
- 调用etcd集群管理API或Kubernetes API消除这些差别。
Operator本质是通过在Kubenertes中部署对应的Third-Party Resource (TPR)插件,然后通过部署Third-Party Resource的方式来部署对应的应用。Third-Party Resource会调用Kubenertes部署API部署相应的Kubenertes资源,并对资源状态进行管理。
如何创建Operator
Operator是一个感知应用状态的控制器,所以实现一个Operator最关键的就是把管理应用状态的所有操作封装到配置资源和控制器中。通常来说Operator需要包括以下功能:
- Operator自身以deployment的方式部署
- Operator自动创建一个Third Party Resources资源类型,用户可以用该类型创建应用实例
- Operator应该利用Kubernetes内置的Serivce/ReplicaSet等管理应用
- Operator应该向后兼容,并且在Operator自身退出或删除时不影响应用的状态
- Operator应该支持应用版本更新
- Operator应该测试Pod失效、配置错误、网络错误等异常情况
如何使用Operator
为了方便描述,以Etcd Operator为例,具体的链接可以参考-Etcd Operator。
在Kubernetes部署Operator:
通过在Kubernetes集群中创建一个deploymet实例,来部署对应的Operator。具体的Yaml示例如下:
apiVersion: v1kind: ServiceAccountmetadata: name: admin namespace: default---kind: ClusterRoleBindingapiVersion: rbac.authorization.k8s.io/v1alpha1metadata: name: adminsubjects: - kind: ServiceAccount name: admin namespace: defaultroleRef: kind: ClusterRole name: cluster-admin apiGroup: rbac.authorization.k8s.io---apiVersion: extensions/v1beta1kind: Deploymentmetadata: name: etcd-operatorspec: replicas: 1 template: metadata: labels: name: etcd-operator spec: serviceAccountName: admin containers: - name: etcd-operator image: quay.io/coreos/etcd-operator:v0.4.2 env: - name: MY_POD_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - name: MY_POD_NAME valueFrom: fieldRef: fieldPath: metadata.name
# kubectl create -f deployment.yamlserviceaccount "admin" createdclusterrolebinding "admin" createddeployment "etcd-operator" created# kubectl get pod NAME READY STATUS RESTARTS AGEetcd-operator-334633986-3nzk1 1/1 Running 0 31s
查看operator是否部署成功:
# kubectl get thirdpartyresourcesNAME DESCRIPTION VERSION(S)cluster.etcd.coreos.com Managed etcd clusters v1beta1
对应的有状态服务yaml文件示例如下:
apiVersion: "etcd.coreos.com/v1beta1"kind: "Cluster"metadata: name: "example-etcd-cluster"spec: size: 3 version: "3.1.8"
部署对应的有状态服务:
# kubectl create -f example-etcd-cluster.yamlCluster "example-etcd-cluster" created# kubectl get clusterNAME KINDexample-etcd-cluster Cluster.v1beta1.etcd.coreos.com# kubectl get serviceNAME CLUSTER-IP EXTERNAL-IP PORT(S) example-etcd-cluster None <none> 2379/TCP,2380/TCP example-etcd-cluster-client 10.105.90.190 <none> 2379/TCP# kubectl get podNAME READY STATUS RESTARTS AGEexample-etcd-cluster-0002 1/1 Running 0 5hexample-etcd-cluster-0003 1/1 Running 0 4hexample-etcd-cluster-0004 1/1 Running 0 4h
其他示例
- Prometheus Operator
- Rook Operator
- Tectonic Operators
相关示例
- https://github.com/sapcc/kubernetes-operators
- https://github.com/kbst/memcached
- https://github.com/Yolean/kubernetes-kafka
- https://github.com/krallistic/kafka-operator
- https://github.com/huawei-cloudfederation/redis-operator
- https://github.com/upmc-enterprises/elasticsearch-operator
- https://github.com/pires/nats-operator
- https://github.com/rosskukulinski/rethinkdb-operator
- https://istio.io/
与其他工具的关系
- StatefulSets:StatefulSets为有状态服务提供了DNS、持久化存储等,而Operator可以自动处理服务失效、备份、重配置等复杂的场景。
- Puppet:Puppet是一个静态配置工具,而Operator则可以实时、动态地保证应用处于预期状态
- Helm:Helm是一个打包工具,可以将多个应用打包到一起部署,而Operator则可以认为是Helm的补充,用来动态保证这些应用的正常运行
阅读全文
0 0
- CoreOS有状态应用管理的框架--Operator详解
- Web应用的状态管理
- CoreOS部署及应用
- PHP使用者状态管理功能的应用
- operator new 和operator delete的重载应用
- 应用struts1.x框架的session管理
- operator声明为有元的原因
- CoreOS 称 Docker 有根本性缺陷,推出自己的容器引擎 Rocket
- 一个使用栈的OGRE游戏状态管理框架
- Java并发框架——同步状态的管理
- React 有状态组件及 key 属性的应用
- ASP应用程序设计的Web状态管理分析
- 淘宝的应用无状态(淘宝session框架)
- mysql运行状态管理,查看连接数状态,定位和杀掉有问题的连接线程
- mysql运行状态管理,查看连接数状态,定位和杀掉有问题的连接线程
- 应用数据流状态管理框架Redux简介、设计思想、核心概念及工作流
- CoreOS的Fleetctl笔记(一)
- CoreOS的适应场景介绍
- 负载均衡(SLB)使用最佳实践
- CSDN-markdown基本语法说明
- Makefile
- ios-AppDelegate中设置根视图控制器
- 【WebDriver】selenium自动化测试入门到进阶 二
- CoreOS有状态应用管理的框架--Operator详解
- 限制input输入类型(多种方法实现)
- 页面实战应用(持续更新)
- 初创企业想扩大工程师团队?先了解这五件事!
- HelloWorld
- Hadoop环境配置参考一
- 深度工作法让你超越自我
- Centos7安装mplayer播放器和一些简单开发环境的配置
- LSP相关