K8s-CRD实战

news/2024/4/27 16:54:25

CRD

CRD的全称是CustomResourceDefinition,是Kubernetes为提高可扩展性,
让开发者去自定义资源(如Deployment,StatefulSet等)的一种方法.

Controller

controller是由controller-manager进行管理,通过API Server提供的接口实时监控整个集群的每一个资源对象的当前状态,
当状态发生变化时,会尝试通过CRUD操作将系统状态修复到"期望状态".

整理架构图

在这里插入图片描述

组件解释

Informer即自带缓存和索引机制,可以触发Handler的客户端库.使用了Reflector包,
它是一个可以通过ListAndWatch机制获取并监视API对象变化的客户端封装.

Reflector和Informer之间,用到了一个“增量先进先出队列”进行协同.
而Informer与要编写的控制循环之间,则使用了一个工作队列来进行协同.

在实际应用中,除了控制循环之外的所有代码,实际上都是 Kubernetes 为你自动生成的,
即:pkg/client/{informers, listers, clientset}里的内容。

源码解析

https://jimmysong.io/kubernetes-handbook/develop/client-go-informer-sourcecode-analyse.html

案例参考

https://github.com/kubernetes/sample-controller, 注意go版本需要选用1.22

# assumes you have a working kubeconfig, not required if operating in-cluster
go build -o sample-controller .# run sample-controller
./sample-controller -kubeconfig=$HOME/.kube/config# create a CustomResourceDefinition
kubectl create -f artifacts/examples/crd-status-subresource.yaml# create a custom resource of type Foo
kubectl create -f artifacts/examples/example-foo.yaml# check deployments created through the custom resource
kubectl get deployments

案例效果

在这里插入图片描述
使用k edit调整pod实例数量
在这里插入图片描述

案例补充

GOPATH, GOROOT, GOBIN的区别

GOPATH: Go第三方库安装路径, go mod推行后,会使用索引查询该路径下的依赖包

GOROOT: Go安装路径

GOBIN: Go可执行二进制文件安装路径

Go Mod管理依赖解释

require (B vx.x.xB1 vx.x.x //indirectB2 vx.x.x //indirect
)

在这里插入图片描述

require (B vx.x.xB2 vx.x.x //indirect
)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.cpky.cn/p/10771.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

Leetcode 79. 单词搜索

心路历程: 做完这道题才发现是回溯,一开始想的是递归,判断完第i个字符后,只需要挨个判断第i1个字符在不在第i个字符的邻域。后来发现由于不能重复使用元素,所以需要维护一个visited列表,并且在遍历所有可能…

网络安全(黑客)——2024自学

01 什么是网络安全 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域,都有攻与防两面…

python打开文件并读取文件内容(python readlines读取文件内容)

通过open 方法打开 test .py 文件,以读“ r ”的方式打开。通过 调用readlines() 方法逐行的来读取文件。中的数据 try的语句块中,用 for 循环来逐行的打印 test.py 文件中的数据,每循环一次休眠一下。在 finally 语句块中执行文件的 clos…

主键约束

Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 主键约束可以看成是非空约束再加上唯一约束 也就是说设置为主键列,不能为空,不能重复 像一般用户编号是不可能重复的,也不可能为空的 …

【观察】戴尔科技:软件驱动存储创新,全面拥抱AI智能时代

毫无疑问,数字经济已成为稳增长促转型,推动中国经济高质量发展的重要引擎。根据信通院发布的《中国数字经济发展研究报告(2023)》显示,2022年,我国数字经济规模首次突破50万亿元,达到50.2万亿元…

微信小程序小白易入门基础教程1

微信小程序 基本结构 页面配置 页面配置 app.json 中的部分配置,也支持对单个页面进行配置,可以在页面对应的 .json 文件来对本页面的表现进行配置。 页面中配置项在当前页面会覆盖 app.json 中相同的配置项(样式相关的配置项属于 app.js…