K8s-CRD实战

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

shell 复制代码
# 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管理依赖解释

shell 复制代码
require (
	B vx.x.x
	B1 vx.x.x //indirect
	B2 vx.x.x //indirect
)
shell 复制代码
require (
	B vx.x.x
	B2 vx.x.x //indirect
)
相关推荐
会飞的小蛮猪24 分钟前
K8s-1.29.2二进制安装-第二章(K8s及ETCD下载及安装)
云原生·容器·kubernetes·etcd
Gold Steps.29 分钟前
Alloy+Loki+Minio+Grafana云原生K8S日志收集方案
云原生·kubernetes·grafana
会飞的小蛮猪9 小时前
K8s-1.29.2二进制安装-第一章
云原生·容器·kubernetes
树下水月13 小时前
docker 启动后 如何通过对应的进程 找docker-compose.yaml 编排文件
运维·docker·容器
平行云14 小时前
实时云渲染支持在网页上运行UE5开发的3A大作Lyra项目
unity·云原生·ue5·webgl·虚拟现实·实时云渲染·像素流送
凯子坚持 c14 小时前
Docker 网络管理深度解析与实践指南
运维·docker·容器
kevin_水滴石穿14 小时前
在镜像生成时从内网获取字体安装包并配置
linux·docker·容器
阿里云云原生14 小时前
AI 原生落地成果获认可,阿里云云原生多项案例入选信通院「AI 云」典型示范
云原生
LILR_15 小时前
简单学docker
运维·docker·容器
阿里云云原生15 小时前
阿里云可观测 2025 年 11 月产品动态
阿里云·云原生·云计算·可观测