K8S Operator实践总结.docx
《K8S Operator实践总结.docx》由会员分享,可在线阅读,更多相关《K8S Operator实践总结.docx(7页珍藏版)》请在第一文库网上搜索。
1、K8SOperator实践总结前言前段时间接触了k8sOPeratOr开发,在开发的过程中碰到了很多问题,现将开发过程中碰到的问题及经验进行总结。一、开发流程步骤1 .开发前提 了解k8s中内置资源的使用及CIient-go(C1ien1go不是必须项如果了解更好,笔者也是在开发结束后通过阅读Qubernetes源码剖析第五章补上这一课的) 有GO语言基础 了解k8soperator编程模式 了解kubebui1der(kubebui1der官方链接:https:/book,kubebui1der.ioquick-start.htm1),熟悉如何构建operator项目以及kubebui1de
2、r官方链接中的示例demo2 .开发某个产品的OPerator时,在进行开发前最好先在k8s集群中手动部署待开发的产品,熟悉该产品相关运维操作的同时也了解该OPerator最终是在对哪些k8s内置资源进行管理以及内置资源的相关配置;3 .理清楚OPerator中涉及的操作包含哪些,例如集群构建、节点迁移、资源配额管理等;此外还需要好好设计spec和status;4 .经过前面步骤后我们就进入实际开发过程了,在第三步的基础上我们可以知道operator中涉及到的操作最终都是对k8s内置资源的操作,所以第一步可以对涉及到的k8s内置资源的相关操作进行开发,然后开发集群构建流程、维护流程等。二、开发
3、总结1在对k8s内置资源相关操作进行开发时,可以将所有内置资源相同的方法抽象出一个接口,比如创建资源、判断资源是否存在等2 .在创建内置资源时,例如一个Pod,可以对照k8s源码中对应资源的结构体定义来构建3 .在创建内置资源时,可以使用OWnerRefrenCe来做资源关联,这样当OWner资源被删除时,被。Wn的资源会级联删除,其本质是k8sGC机制。具体调用contro11eruti1的SetContro11erReference如下函数:SetContro11erReference-contro11eruti1.SetContro1IerReference这里涉及到k8sGC原理,下图
4、是k8sGC的GC是GarbageCo11ector的简称,它是负责删除集群中的资源对象,GC由三个部分组成,分别是:Scanner.GarbageProcessor和Propagator0 ScannerSCanner主要完成的任务是周期性地扫描系统中所有资源对象,并将这些资源对象放到DirtyQUeUe中 GarbageProcessorGarbageProcessor由两部分组成,分别是DirtyQUeUe和Workers,每个Worker的任务有三个:(1)从DirtyQUeUe中取出资源(2)判断该资源的OWnerReferenCeS是否为空,如果为空则继续处理DirtyQueue中
5、下一个资源(3)如果资源的OWnerReferenCeS不为空,则检查OWnerReferenCeS中的每个条目是否存在,如果至少有一个存在则什么也不做,如果都不存在则请求AP1Server删除该资源PrOPagatorProPagator是由EVentQUeue、一个WOrker和一个表示owner-dependant关系的DAG组成的。DAG只存储name/uid/orphan三元MoPrOPagator会监控所有资源的创建/更新/删除事件,并将事件放入到EventQueue中OWorker负责从EVentQueue中取出事件并根据事件类型做出对应的处理。如果是创建或者更新事件,则会更新D
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- K8S Operator实践总结 Operator 实践 总结
