《 Kubebuilder v2 使用指南 》

Gitbook

《 Kubebuilder v2 使用指南 》专栏已整理打包为gitbook电子书,阅读更紧凑和连贯,推荐点击直达:
Gitbook-《 Kubebuilder v2 使用指南 》

前言

K8s内置的build-in 资源类型,可以组合使用以满足绝大部分场景的部署需求,更进一步地,对于追求更高自由度、有特殊需求的场景下,在kubernetes v1.7 后的版本开始支持CRD(CustomResourceDefinition),无需修改组件代码,即可通过CRD向APIServer注入自定义资源的方式,对内置资源进行上层封装,实现自定义环境部署和运行逻辑。APIServer会根据CRD的指定,自动生成CRD的restful路径,有关此路径的restful请求,转发给对应的CRD controller,以外部插件的形式实现了对k8s内置资源以及内置控制逻辑的扩展,很大程度地增加了管理和使用kubernetes的灵活性。

而作为kubernetes的进阶玩法,上手CRD需要一定的k8s使用经验和go开发基础。此前通过阅读controller部分的源码:Kubernetes Controller源码阅读 ,可清晰地认识到管理每种资源的设计核心是控制器。控制器通过informer机制,与apiserver交互,按照预先设计的逻辑,对watch资源进行不断地修正、收敛,使资源的状态 不断接近、最终达成指定的目标状态。显而易见的是,CRD的设计核心,同样也是控制器。

Why kubebuilder

如果参照内置controller的实现,用client-go来从头到尾自己撸一个CRD controller,比较繁琐。好在CRD功能从alpha到现在已经有一年有余了,市面上已有多款CRD脚手架工具。比较常用的有Kubernetes OperatorKubebuilder,两者大概对比了一下,其中Kubernetes Operator由CoreOS出品,包管理用的是go dep;而Kubebuilder由k8s-sig官方团队打造,包管理使用的是go mod。go mod比较友好的是不依赖GOPATH,大概率会成为今后的主流,且还是官方的团队出品。因此,选择了Kubebuilder

Kubebuilder 使用步骤

kubebuilder构建CRD一般分为如下几步:

  • 1.项目初始化
  • 2.设计CRD的结构,具体来说即CRD资源的Spec和Status结构设计
  • 3.设计和实现CRD Controller(Reconciler)的运行逻辑
  • 4.本地调试和测试
  • 5.正式发布到k8s中运行

专栏内的各篇文章,大致按照这几个步骤来进行编排。

专栏导航

Kubebuilder的官方文档友好度尚可,直接以CRD CronJob对build-in Job资源的管理举例,但个人感觉精细度略显不足,且目前全网kubebuilder v2版本的第三方文档都很缺乏,所以在使用过程中踩了不少坑。因此开一个专栏,从零开始,将我的CRD实例的设计的思路、代码实现、使用过程中遇到的问题 整理出来放在专栏中,希望给后面看到的朋友提供一些帮助,对于如何设计和实现自己所需要的CRD以及利用kubebuilder有更为清晰的认识。

专栏有以下几篇文章:

  • 环境准备
  • 认识Kubebuilder
  • 从零开始设计一个CRD
  • 实现CRD控制逻辑
  • CRD Admission Webhook
  • 本地调试和发布Controller
  • 踩到的坑

Github

专栏中基于kubebuilder构建的CRD实例完整的代码已经放入github中,供需要的朋友参考,有帮助的话希望能加个star:

https://github.com/yinwenqin/CRD-Unit

Reference

https://book.kubebuilder.io/

https://book-v1.book.kubebuilder.io/basics/simple_controller.html

《 Kubebuilder v2 使用指南 》-P1-总览篇相关推荐

  1. 《 Kubebuilder v2 使用指南 》-P6-CRD Admission Webhook

    CRD Admission Webhook 前言 前面的文章中,实现了Unit资源对象实例持久化之后的controller管理的过程.除此之外,Kubernetes额外支持了一些很有趣且实用的功能,例 ...

  2. Eigen 使用指南(入门篇)

    Eigen 使用指南(入门篇) 1 安装Eigen 1.1 Window10(64位)+Visual Studio2017 2 Eigen 的使用 2.1 矩阵类Matrix 1.2.2 矩阵初始化与 ...

  3. 当NLPer爱上CV:后BERT时代生存指南之VL-BERT篇

    当NLPer爱上CV:后BERT时代生存指南之VL-BERT篇 小鹿鹿lulu 被数学/NLP/炼丹持续折磨的吃货一枚 前言 BERT的出现让NLP发展实现了一个大飞跃,甚至有大佬说NLP已经没有可以 ...

  4. amd860k能装黑苹果吗_黑苹果配置 篇六:黑苹果硬件选购指南之终篇--2019年8月

    黑苹果配置 篇六:黑苹果硬件选购指南之终篇--2019年8月 2019-08-17 17:31:38 26点赞 238收藏 33评论 你是AMD Yes党?还是intel和NVIDIA的忠实簇拥呢?最 ...

  5. BurpSuite插件开发指南之 Java 篇

    Her0in · 2016/05/27 16:53 此文接着 <BurpSuite插件开发指南之 API 下篇> .在此篇中将会介绍如何使用Java 开发 BurpSuite 的插件,重点 ...

  6. Spark性能优化指南:基础篇

    前言 在大数据计算领域,Spark已经成为了越来越流行.越来越受欢迎的计算平台之一.Spark的功能涵盖了大数据领域的离线批处理.SQL类处理.流式/实时计算.机器学习.图计算等各种不同类型的计算操作 ...

  7. XGBoost-Python完全调参指南-参数解释篇

    本文转自XGBoost-Python完全调参指南-参数解释篇.对XGBoost有需要小伙伴可以参看.并在此基础上,添加了一些内容. 在analytics vidhya上看到一篇<Complete ...

  8. chrome调试工具高级不完整使用指南(基础篇)

    一.前言 本文记录的是作者在工作上面对chrome的一些使用和情况的分析分享,内容仅代表个人的观点.转发请注明出处(http://www.cnblogs.com/st-leslie/),谢谢合作 二. ...

  9. 《算法竞赛进阶指南》数论篇

    <算法竞赛进阶指南>数论篇(1)-最大公约数,素数筛,欧拉函数,同余,欧拉定理,BSGS <算法竞赛进阶指南>数论篇(1)-最大公约数,素数筛,欧拉函数,同余,欧拉定理,BSG ...

最新文章

  1. JAVA如何检测GC日志
  2. Unshielded Twisted Pair - CAT5, 5e 6
  3. 一文读懂人类信息存储进化史
  4. 2020-11-24
  5. android开发版本,Android开发之版本统一规范
  6. STM32F103ZET6 点灯的三种操作方式(库函数、寄存器、位操作)
  7. GRPC: 如何实现分布式日志跟踪?
  8. 计算机项目开发流程,产品开发项目建议流程图怎样画
  9. c++中的new_面试中常见的C语言与C++区别的问题
  10. 微信小程序富文本组件mp-html
  11. 使用matlab如何求卷积,利用MATLAB求解卷积的方法分类
  12. 二代U盾/迷你充电宝/护颈仪液晶段码屏驱动芯片:VK1088B QFN32 超小体积封装LCD驱动芯片
  13. php获取多选框的值
  14. oracle学习篇十二:索引
  15. MOS管自举电容工作原理电路设计及其分析
  16. 在OpenCV + Python中使用色彩空间进行图像分割
  17. 算法系列:Reservoir Sampling
  18. 【Python】html格式转md格式
  19. 淘宝“蓝鲸计划”细节内容曝光 收编谷歌中国资源
  20. 半双工通信模块碰撞问题

热门文章

  1. 在Linux下编写Daemon(Linux启动流程2)
  2. 【Hive】内置函数—日期函数
  3. beacon设备使用记录
  4. [洛谷]P1010 [NOIP1998 普及组] 幂次方
  5. 瑞萨E1仿真器(R0E000010KCE00)支持的MCU系列--V850 Family
  6. POJ 1287-Networking
  7. 解决win10家庭版电脑互传文件的问题,详细图解,手把手教学,亲测有效!!!!
  8. TcaplusDB君 · 行业新闻汇编(11月15号)
  9. R数据分析当中的化整为零(Split-Apply-Combine)策略
  10. c语言中的汉诺塔问题详解