叶工好容6-自定义与扩展

本篇主要介绍扩展的本质以及CRD与Operator之间的区别,帮助大家理解相关的概念以及知道要进行扩展需要做哪些工作。

CRD(CustomerResourceDefinition)

自定义资源定义,代表某种自定义的配置或者独立运行的服务。

用户只定义了CRD没有任何意义,只是注册了一种资源,但没有执行器参与逻辑处理。我们要去开发一个控制器去专门处理CRD的调度逻辑,控制器就是一个一直在工作的生产者消费者模型,监听着对象的变化,当对象发生改变时,就会根据对象的期望,去做相应的处理,最终达成对象的期望。像Deployment就是一个控制器。 而我们开发控制器的过程就是operator开发。

Operator

用来扩展Kubernetes API,特定的应用程序控制器。

严格来说只要新定义一个CRD一定会配套开发一个operator,否则没有任何意义。但开发operator不一定要新定义CRD,因为这个控制器可以是对已有资源类型的处理。

脚手架开发

由于k8s的基础架构模块已固定,在没有脚手架之前operator的开发是个很复杂的过程,于是官方给了operator开发的脚手架kubebuilder,同样受追捧的还有CoreOS出品的Operator-SDK。

总述:没脚手架前,图中涉及到的我们都要开发;有脚手架后,图中涉及到的我们只需要开发绿色部分。

scheme:k8s原生资源与CRD资源的映射依赖关系,因为最底层都是借助原生资源完成的,CRD只是他们的打包和封装。

cache:资源的共享信息,接收API调用,根据当前信息判断增删改查操作。

watcher:观察者模式,触发增删改操作,封装成命令包推送到Queue中。

Reconcller:开发者真正要编写的逻辑部分,对CRD的读写操作是通过controller manager中的client。

Read Client:对CRD的读直接走cache

Write Client:对CRD的写直接走API Server

相关推荐
苦逼IT运维3 小时前
从 0 到 1 理解 Kubernetes:一次“破坏式”学习实践(一)
linux·学习·docker·容器·kubernetes
腾讯云开发者3 小时前
言出法随 -- Chaterm如何通过ASR精准操作K8S
云原生·容器·kubernetes
主机哥哥4 小时前
2026年阿里云五种方案快速部署 OpenClaw(Clawdbot)详细教程
阿里云·云计算
m0_694845574 小时前
music-website 是什么?前后端分离音乐网站部署实战
linux·运维·服务器·云计算·github
伟大的大威5 小时前
NVIDIA DGX Spark (ARM64/Blackwell) Kubernetes 集群 + GPU Operator 完整部署指南
大数据·spark·kubernetes
新新学长搞科研5 小时前
【智慧城市专题IEEE会议】第六届物联网与智慧城市国际学术会议(IoTSC 2026)
人工智能·分布式·科技·物联网·云计算·智慧城市·学术会议
翼龙云_cloud5 小时前
亚马逊云代理商: RDS 误删实例急救指南 5 步找回数据
服务器·云计算·aws
翼龙云_cloud5 小时前
阿里云代理商: 如何选择适合自己的阿里云 ECS 配置?
服务器·阿里云·云计算
only_Klein6 小时前
kubernetes Pod 通信过程演示
网络·kubernetes·tcpdump
以太浮标6 小时前
华为eNSP模拟器综合实验之- DHCP Option 43 解析
服务器·网络·华为·云计算