深入剖析 Kubernetes
张磊
Kubernetes 社区资深成员与项目维护者
116705 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 57 讲
再谈开源与社区 (1讲)
结束语 (1讲)
深入剖析 Kubernetes
15
15
1.0x
00:00/00:00
登录|注册

27 | 聪明的微创新:Operator工作原理解读

使用Pod的DNS记录代替IP地址
为每一个EtcdCluster对象启动一个控制循环
响应EtcdCluster对象的变化
为每一个EtcdCluster对象启动一个控制循环
创建EtcdCluster对象的Informer
创建Etcd集群
创建EtcdCluster的YAML文件
创建EtcdCluster的CRD
创建Etcd Operator的Deployment
在自定义控制器里根据自定义API对象的变化完成具体的部署和运维工作
利用Kubernetes的自定义API资源(CRD)描述“有状态应用”的部署
需要知道节点固定的IP地址
需要规划好集群的拓扑结构
适合本地容器化部署
无需额外的服务发现机制
Etcd Restore Operator
Etcd Backup Operator
添加和删除成员节点的操作
控制循环的业务逻辑
定义EtcdCluster对象的Informer
创建EtcdCluster的CRD
Etcd Operator的工作原理流程图
Etcd Operator的特殊之处
Etcd Operator的控制循环
Etcd Operator的部署
Operator的工作原理
CRD的性能瓶颈原因
不适用的场景
可以帮助生成Operator的框架代码
由CoreOS公司开发
Operator可以控制StatefulSet
控制循环的业务逻辑
添加新节点的操作
创建种子节点的Pod
组建集群
动态添加新的Etcd节点
创建种子节点
难点
优点
Etcd Operator的备份和恢复
Etcd Operator的实现
Etcd Operator
CRD的适用性
Operator Framework
Operator与StatefulSet
Etcd Operator的实现
部署流程
静态集群
Operator
总结
Etcd集群
Operator工作原理

该思维导图由 AI 生成,仅供参考

你好,我是张磊。今天我和你分享的主题是:聪明的微创新之 Operator 工作原理解读。
在前面的几篇文章中,我已经和你分享了 Kubernetes 项目中的大部分编排对象(比如 Deployment、StatefulSet、DaemonSet,以及 Job),也介绍了“有状态应用”的管理方法,还阐述了为 Kubernetes 添加自定义 API 对象和编写自定义控制器的原理和流程。
可能你已经感觉到,在 Kubernetes 中,管理“有状态应用”是一个比较复杂的过程,尤其是编写 Pod 模板的时候,总有一种“在 YAML 文件里编程序”的感觉,让人很不舒服。
而在 Kubernetes 生态中,还有一个相对更加灵活和编程友好的管理“有状态应用”的解决方案,它就是:Operator。
接下来,我就以 Etcd Operator 为例,来为你讲解一下 Operator 的工作原理和编写方法。
Etcd Operator 的使用方法非常简单,只需要两步即可完成:
第一步,将这个 Operator 的代码 Clone 到本地:
$ git clone https://github.com/coreos/etcd-operator
第二步,将这个 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
立即购买
登录 后留言

全部留言(51)

  • 最新
  • 精选
  • Vincen
    是否可以将operator和自定义控制器划等号

    作者回复: 原理上是一个东西

    2018-10-24
    5
    38
  • ethfoo
    etcd operator现在使用empty dir存储etcd数据,万一真的出现大部分节点挂掉,但是数据备份又不是实时的,会存在部分数据丢失的情况吧?那为什么etcd operator不使用pv呢?

    作者回复: 要是大部分数据丢失备份又不实时的时候,用pv把数据找回来就能完美work,那还要raft干啥。

    2018-10-24
    11
    15
  • johnson.skiii
    张大,请教个问题。 如果ETCD每个pod不绑定pv的话,那么当其中一个挂掉的话,etcd operator会再启动一个pod,但是启动到那一台worker未知;那么,由于raft机制,leader会同步数据给这个新的pod,这个过程可能会很耗时; 与其这样,能否限定运行etcd的pod使用特定的pv,这样当出现pod挂掉的情况,leader同步数据也会更快。

    作者回复: 恢复数据这个操作还是要的

    2018-12-09
    2
    11
  • 柯察金
    我问一个问题,平时开发人员需要用到的 CRD 的地方多吗,如果要自定义的话还是挺麻烦的呢

    作者回复: kubebuilder operatorsdk都是帮你简化操作的工具

    2019-01-08
    7
  • DJH
    请教老师,EtcdBackup和EtcdRestore资源创建(并运行)后会自动删除吗?是否需要手工删除?

    作者回复: 需要自己清理

    2018-10-24
    7
  • IOVE.-Minn
    老师,在测试官方的prometheus-operator。因为我的集群是二进制部署的,我想监控到我的组件,kube-contorller-manager和kube-scheduler组件,我做了一些修改(把这些组件的bind address设定为了0.0.0.0,自己单独创建了他们的ep)。当时是能在prometheus的targets看到,并且也能监控到。但是过了一段时间后,这些svc和ep会自动失效。这个问题怎么来查看呢?

    作者回复: kube proxy不知道你的改动

    2018-10-26
    2
    2
  • 每日都想上班
    我有4台master,其中一台master我给它系统重装,然后再加入master,是不是可以平滑操作?

    作者回复: 可以

    2018-10-24
    2
  • hochuenw
    老师请问怎么看metacontroller这个项目

    作者回复: 概念很好的,适合云上的用户玩,但是不适合自己定制开发

    2018-10-27
    1
  • qingbo
    我看到这种非StatefulSet的pod有DNS记录的时候好奇了一下,发现是指定了subdomain和service名字一样才可以。不知道是后来加进k8s的还是一开始就有,以前觉得除了StatefulSet的pod都没有DNS的……

    作者回复: 需要service

    2019-04-18
    2
  • Johnson
    使用这个operator创建的etcd的每个节点–initial-cluster参数并不是都一样的啊,存在拓扑关系,而且最后添加的节点才有所有的列表。那问题来了,前面创建的节点是如何知道所有的节点呢?删除节点的时候是只删除最后添加的节点吗?我感觉要是任意删除的话,会影响其他的节点,老师帮忙解答一下 谢谢

    作者回复: 这个参数怎么生成的不是文中已经详细解释了?

    2018-11-23
    2
收起评论
显示
设置
留言
51
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部