kubebuilder 上手体验
§ 0x01 kubebuilder是什么?
kubebuilder以下简称kb,是k8s社区编写CRD的工具。它可以自动化生成CRD工程代码,提高编写operator的效率。官网的示例CronJob对于初学者来说太复杂了,我试了下,基本的代码可以运行起来。
§ 0x02 与sdk-operator的区别是什么?
应该是sdk-operator比较先出现,kubebuilder是后来者。极客时间上学习k8s时,张磊还没有提及kubebuilder。两者没有什么本质区别,不过看知乎中的说法,两者社区有融合的趋势。新手还是学习kubebuilder比较好。
https://www.zhihu.com/question/290497164
§ 0x03 安装
除了官网的kubebuilder,还有其他的工具controller-gen, kustomize需要安装,官网的文档里没有说安装方法。
3.1 kubebuilder
按照官网文档的命令,安装比较简单。https://book.kubebuilder.io/quick-start.html
安装完成,通过如下命令确认安装成功。
$ kubebuilder version <<<
Version: main.version{KubeBuilderVersion:"3.1.0", KubernetesVendor:"unknown", GitCommit:"92e0349ca7334a0a8e5e499da4fb077eb524e94a", BuildDate:"2021-05-29T05:57:53+01:00", GoOs:"darwin", GoArch:"amd64"}
一定要使用比较新的kubbuilder版本。
3.2 安装controller-gen
controller-gen是用来生成控制器代码的工具。
可以去github仓库中找到安装方法。go get + go install即可安装。mac下面可以直接使用brew install controller-gen
安装。
3.3 安装kustomize
kustomize是用来生成CRD定义的工具。安装方法参考controller-gen。
基本的工具安装完成后,还需要一个k8s集群,1.16+的。并且本地配置好有kubectl。
§ 0x04 创建一个hello工程
4.1 初始化一个go的工程目录。
执行如下命令。
mkdir -pv hello
go mod init example.com/hello
4.2 初始化kubebuilder工程
执行如下命令。
kubebuilder init --domain example.com --license apache2 --owner "lin lin"
完成后,会生成Makefile和main.go等工程框架。
创建一个API。
kubebuilder create api --group me --version v1 --kind Case
$ kubebuilder create api --group me --version v1 --kind Case
Create Resource [y/n]
y
Create Controller [y/n]
y
有两个交互提示,都选y。
执行过程中有报错,提示一个go的依赖未找到,可以通过手动go get方式拉取。
至此工程已经初始化完成了。
4.2 安装
执行make install
,即可自动把CRD安装到k8s集群中。通过kubectl get crd
确认安装结果。
4.3 编写资源定义yaml,创建资源
创建如下的定义。符合定义的API GVK要素。在执行make run ENABLE_WEBHOOKS=false
之后,
执行kubectl apply -f case.yaml,创建资源,可以在终端上看到operator的Reconcil循环中有监测到资源的变动。
apiVersion: me.example.com/v1
kind: Case
metadata:name: hello
spec:foo: "world"
2021-08-04T20:37:37.617+0800 INFO controller-runtime.metrics metrics server is starting to listen {"addr": ":8080"}
2021-08-04T20:37:37.617+0800 INFO setup starting manager
2021-08-04T20:37:37.618+0800 INFO controller-runtime.manager starting metrics server {"path": "/metrics"}
2021-08-04T20:37:37.619+0800 INFO controller-runtime.controller Starting EventSource {"controller": "case", "source": "kind source: /, Kind="}
2021-08-04T20:37:37.719+0800 INFO controller-runtime.controller Starting Controller {"controller": "case"}
2021-08-04T20:37:37.719+0800 INFO controller-runtime.controller Starting workers {"controller": "case", "worker count": 1}
2021-08-04T20:37:37.976+0800 DEBUG controller-runtime.controller Successfully Reconciled {"controller": "case", "request": "default/hello"}
2021-08-04T20:37:48.188+0800 DEBUG controller-runtime.controller Successfully Reconciled {"controller": "case", "request": "default/hello"}
至此整个示例完成了。由于没有编写任何代码,所以Reconcil中只能看到有事件,具体是添加还是删除,还是扩容都还不知道。这是下一步的工作。下一步就是扩展api/v1的CR的完整定义,并在Reconcil循环中进行真正的业务逻辑了。
§ 0x05 总结
- kubebuilder真的比较方便。生成的工程结构也清晰;
- 新手至少能跑通hello-world还是比较重要的,之前按照网上的自定义控制器流程,怎么着都跑不通,很受挫。
kubebuilder 上手体验相关推荐
- 石头机器人拖地水量调节_石头扫地机器人T7上手体验:电控水箱和超大容量,扫拖一体全能型...
[微创WEC科技]前段时间,给大家带来了石头扫地机器人P51的体验,今天给大家带来一个更"猛"一点的,就是今年石头机器人的旗舰产品:T7. 石头扫地机器人T7上手体验视频 要知道石 ...
- 三星s10android10功能,三星S10系列现场上手体验:“安卓机皇”真的名副其实
[手机中国评测]在二月的最后一天,三星召开新品发布会,三星S10系列国行版惊艳亮相.作为三星今年的的一款旗舰,可以说集万众宠爱于一身,同时也承载着众多用户的期许.从MWC发布后来看,三星S10可以说是 ...
- Face ID 上手体验信息汇总:面部解锁流畅,原理移植AR让人憧憬
昨天,苹果举行了 iPhone X 试用会,传来了不少上手体验评测,今天52VR就来为大家总结一下 Face ID 和Animoji的表现,并探究其中所用到的技术在未来AR方面更深层次的应用前景. 哦 ...
- uos系统不激活能用吗_国产统一操作系统UOS真的能代替window系统吗? UOS上手体验...
近一段时间,Win10的更新搞得人心惶惶,新功能没见多少,问题却此起彼伏.常常是一个旧Bug搞定了,又带来一堆新Bug.近日,中兴新支点.深度.中国电子集团.诚迈科技等四家国产操作系统厂商,合力推出了 ...
- android camera 3a,买相机送手机 pixel 3a 上手体验
买相机送手机 pixel 3a 上手体验 2019-05-29 08:29:42 23点赞 14收藏 20评论 创作立场声明:独立主观有点方 购买理由 有人说过,人生就是连续的选择题,人们总是在取与舍 ...
- IOS基础基于pod上手体验FMDB框架
IOS基础基于pod上手体验FMDB框架 // // ViewController.m // FMDBSingleOC // // Created by 鲁军 on 2021/3/17. //#imp ...
- AFN框架和SDWebImage框架的上手体验
AFN框架和SDWebImage框架的上手体验 资料来源2015-10-15 ,我曾经尝试安装cocoaPods,并且成功了,但是版本更新太快,api函数封装有所变化,为了保证资料的准确一致,先学习过 ...
- 第6讲 | 理解区块链之前,先上手体验一把数字货币
初次接触到区块链的你,肯定是一头雾水:"区块链是什么,这玩意到底怎么回事". 其实对于区块链的原理,你大可不必着急,咱们可以直接上手体验一下目前区块链的第一大应用:数字货币. 本篇 ...
- html5input输入框设置无边框_芯片充电两大改变,无看点的iPad8,上手体验发现并不简单!...
前不久,苹果召开了秋季新品发布会,但与以往不同的是,往年本该成为"配角"的iPad,没想到此次成为了主角之一,面对着外观不变仅升级芯片新发布的iPad 8,大家好像没有过多的激情, ...
最新文章
- 我在学python-你们以为我在学C++?其实我在学Python!人生苦短!
- 【Flask项目2】创建用户模块的蓝图(7)
- step3 . day5 数据结构之线性表 栈和队的应用-球钟问题
- 红帽、微软和 Codenvy 联合推出语言服务器协定(Language Server Protocol,LSP)项目
- 使用PWM实现语音播放
- C#类、接口、虚方法和抽象方法
- flutter实现Icon可以用Image替换
- 父与子的python之旅_《父与子的编程之旅:与小卡特一起学Python》作者:Warren Sande - kindle电子书下载 - 我的书库...
- 文字输入效率神器:输入法辅助工具 KeyboardHolder
- Pthread多线程
- 12 个动画设计方法,帮助你快速实现炫酷的网页动画效果
- MeanTeacher论文学习笔记
- Ol3中Map事件全解析
- 指针分配和释放空间(转)
- 循环遍历时跳出循环方法汇总
- 测量误差(error)的概念
- QT Linux实现AT指令处理框架
- Blocking Queue
- 为了保证页面输出安全,我们经常需要对一些特殊的字符进行转义,请写一个函数 escapeHtml,将<, >, , “进行转义
- PTA 6-10 二分查找