首页 » 翻译 » Kubernetes » 正文

Kubernete 开发系列 kubernetes Operator

Operator是一种集合了打包,运行,维护的一类特殊的kubernetes 应用,它是Kuberente的一种扩展

在介绍Operator如何工作之前,我们要先了解Kubernetes 是如何工作的

kubernetes 自动化帮我们运维了一些无状态的应用,例如一个静态网站,因为是无状态的应用,所以任何一个实例都是可以被替代的,所以如果一个实例失败了,Kuberntes 会创建一个新的替代它

kuberntes 集群是一批机器的集合,分为master 和node ,master的作用就是负责control 我们集群中的Pod, pod在master 的安排下分发到各个node

其中controllers 会执行一个循环,不停的对比线上状态和设计状态,如果两者不一致,那么conrollers程序会采取相应的措施,Operator就是扩展了这一个过程

k8s1

 

其实,我们日常生活中,很多应用程序都是有状态的,并不是可以随意替换的,例如启动顺序,依赖关系,配置,可能都是不可以随便替代的,特别是有时候数据也是需要持久化存储的

kubernetes 不可能把所有有状态的应用程序的相关代码都帮我们写好,所以它就提供了一种扩展,让我们能够有一种方式来做有状态应用的水平扩展,这就是Operator

Operator 就是一个简易版的SRE, Operator 帮助我们来管理对应的应用,Operator知道应用启动先后顺序,知道如何处理错误,知道如何存储,如何恢复,这些Operator就帮我们来处理,我们不需要懂这些

 

Operator是如何工作的呢

Operator是对原有的Kubernetes control plane 和API 进行了扩展,它最简单的形式就是增加了新的endpoints 到API中,我们叫这种是Customer resource (CR), 并同时在control plane 中增加了与我们CR对应的监控和维护的脚本,这样我们的control plane就可以根据我们CR的状态做出相应的action

k8s2

 

 

举个例子来说,Operator ETCD

etcd是一个轻量级的数据库,用来存储key-value, 但是,即使是最简单的数据库,如果你想搞一套,你最起码需要有人懂得如下内容:

  • 如何在现有的etcd集群中增加一个新的节点,这包含通知其他node 新的节点信息,同步数据等
  • 如何备份现有的数据
  • 如何升级etcd的集群

现在,etcd Operator 懂得如何操作上述步骤,也就是说,你不需要懂,operator懂就可以了

 

 

Zhiming Zhang

Senior devops at Appannie
一个奔跑在运维路上的胖子
Zhiming Zhang

Latest posts by Zhiming Zhang (see all)