27 | 聪明的微创新:Operator工作原理解读
张磊
该思维导图由 AI 生成,仅供参考
你好,我是张磊。今天我和你分享的主题是:聪明的微创新之 Operator 工作原理解读。
在前面的几篇文章中,我已经和你分享了 Kubernetes 项目中的大部分编排对象(比如 Deployment、StatefulSet、DaemonSet,以及 Job),也介绍了“有状态应用”的管理方法,还阐述了为 Kubernetes 添加自定义 API 对象和编写自定义控制器的原理和流程。
可能你已经感觉到,在 Kubernetes 中,管理“有状态应用”是一个比较复杂的过程,尤其是编写 Pod 模板的时候,总有一种“在 YAML 文件里编程序”的感觉,让人很不舒服。
而在 Kubernetes 生态中,还有一个相对更加灵活和编程友好的管理“有状态应用”的解决方案,它就是:Operator。
接下来,我就以 Etcd Operator 为例,来为你讲解一下 Operator 的工作原理和编写方法。
Etcd Operator 的使用方法非常简单,只需要两步即可完成:
第一步,将这个 Operator 的代码 Clone 到本地:
第二步,将这个 Etcd Operator 部署在 Kubernetes 集群里。
不过,在部署 Etcd Operator 的 Pod 之前,你需要先执行这样一个脚本:
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文深入探讨了Kubernetes中Operator的工作原理和实际应用,对于想要深入了解该领域的读者具有很高的参考价值。文章以Etcd Operator为例,详细介绍了一个Operator的工作原理和编写过程。通过对EtcdCluster的CRD定义和实践流程的讲解,读者可以快速了解Operator的工作原理和应用场景,以及如何编写自定义控制器来实现自动化部署和管理有状态应用。此外,文章还讨论了Etcd集群的组建方式和Etcd Operator的自动化工作流程,以及Etcd Operator的特殊之处在于为每一个EtcdCluster对象都启动了一个控制循环,并发地响应这些对象的变化,从而简化了Etcd Operator的代码实现并提高了其响应速度。文章还介绍了Etcd Operator的工作原理,包括控制循环的启动和执行Diff流程,以及对比实际状态和期望状态的差异,并通过添加或删除成员节点来实现集群的调谐工作。此外,还讨论了Etcd集群的高可用性和数据备份恢复操作。总的来说,本文对于想要深入了解Kubernetes中Operator的读者具有一定的参考价值。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《深入剖析 Kubernetes》,新⼈⾸单¥68
《深入剖析 Kubernetes》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(51)
- 最新
- 精选
- Vincen是否可以将operator和自定义控制器划等号
作者回复: 原理上是一个东西
2018-10-24538 - ethfooetcd operator现在使用empty dir存储etcd数据,万一真的出现大部分节点挂掉,但是数据备份又不是实时的,会存在部分数据丢失的情况吧?那为什么etcd operator不使用pv呢?
作者回复: 要是大部分数据丢失备份又不实时的时候,用pv把数据找回来就能完美work,那还要raft干啥。
2018-10-241115 - johnson.skiii张大,请教个问题。 如果ETCD每个pod不绑定pv的话,那么当其中一个挂掉的话,etcd operator会再启动一个pod,但是启动到那一台worker未知;那么,由于raft机制,leader会同步数据给这个新的pod,这个过程可能会很耗时; 与其这样,能否限定运行etcd的pod使用特定的pv,这样当出现pod挂掉的情况,leader同步数据也会更快。
作者回复: 恢复数据这个操作还是要的
2018-12-09211 - 柯察金我问一个问题,平时开发人员需要用到的 CRD 的地方多吗,如果要自定义的话还是挺麻烦的呢
作者回复: kubebuilder operatorsdk都是帮你简化操作的工具
2019-01-087 - DJH请教老师,EtcdBackup和EtcdRestore资源创建(并运行)后会自动删除吗?是否需要手工删除?
作者回复: 需要自己清理
2018-10-247 - IOVE.-Minn老师,在测试官方的prometheus-operator。因为我的集群是二进制部署的,我想监控到我的组件,kube-contorller-manager和kube-scheduler组件,我做了一些修改(把这些组件的bind address设定为了0.0.0.0,自己单独创建了他们的ep)。当时是能在prometheus的targets看到,并且也能监控到。但是过了一段时间后,这些svc和ep会自动失效。这个问题怎么来查看呢?
作者回复: kube proxy不知道你的改动
2018-10-2622 - 每日都想上班我有4台master,其中一台master我给它系统重装,然后再加入master,是不是可以平滑操作?
作者回复: 可以
2018-10-242 - hochuenw老师请问怎么看metacontroller这个项目
作者回复: 概念很好的,适合云上的用户玩,但是不适合自己定制开发
2018-10-271 - qingbo我看到这种非StatefulSet的pod有DNS记录的时候好奇了一下,发现是指定了subdomain和service名字一样才可以。不知道是后来加进k8s的还是一开始就有,以前觉得除了StatefulSet的pod都没有DNS的……
作者回复: 需要service
2019-04-182 - Johnson使用这个operator创建的etcd的每个节点–initial-cluster参数并不是都一样的啊,存在拓扑关系,而且最后添加的节点才有所有的列表。那问题来了,前面创建的节点是如何知道所有的节点呢?删除节点的时候是只删除最后添加的节点吗?我感觉要是任意删除的话,会影响其他的节点,老师帮忙解答一下 谢谢
作者回复: 这个参数怎么生成的不是文中已经详细解释了?
2018-11-232
收起评论