Operator是一种集合了打包,运行,维护的一类特殊的kubernetes 应用,它是Kuberente的一种扩展
在介绍Operator如何工作之前,我们要先了解Kubernetes 是如何工作的
kubernetes 自动化帮我们运维了一些无状态的应用,例如一个静态网站,因为是无状态的应用,所以任何一个实例都是可以被替代的,所以如果一个实例失败了,Kuberntes 会创建一个新的替代它
kuberntes 集群是一批机器的集合,分为master 和node ,master的作用就是负责control 我们集群中的Pod, pod在master 的安排下分发到各个node
其中controllers 会执行一个循环,不停的对比线上状态和设计状态,如果两者不一致,那么conrollers程序会采取相应的措施,Operator就是扩展了这一个过程
其实,我们日常生活中,很多应用程序都是有状态的,并不是可以随意替换的,例如启动顺序,依赖关系,配置,可能都是不可以随便替代的,特别是有时候数据也是需要持久化存储的
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
举个例子来说,Operator ETCD
etcd是一个轻量级的数据库,用来存储key-value, 但是,即使是最简单的数据库,如果你想搞一套,你最起码需要有人懂得如下内容:
- 如何在现有的etcd集群中增加一个新的节点,这包含通知其他node 新的节点信息,同步数据等
- 如何备份现有的数据
- 如何升级etcd的集群
现在,etcd Operator 懂得如何操作上述步骤,也就是说,你不需要懂,operator懂就可以了
Latest posts by Zhiming Zhang (see all)
- aws eks node 自动化扩展工具 Karpenter - 8月 10, 2022
- ReplicationController and ReplicaSet in Kubernetes - 12月 20, 2021
- public key fingerprint - 5月 27, 2021