当前位置: 首页 > news >正文

通俗搞懂 K8s CRD 和 CR:是什么、有什么用、怎么用

很多刚接触 K8s 的朋友,对 CRD、CR 这两个概念很迷糊,觉得是高阶复杂知识点。其实它俩核心逻辑特别简单,是 K8s 自定义扩展能力的核心。今天用大白话讲清楚,零基础也能看懂。
一、先搞懂:CRD 和 CR 到底是什么?

  1. 前置小认知:K8s 原生资源
    我们平时常用的 K8s 资源,都是官方提前定义好的,比如 Pod、Deployment、Service、ConfigMap。
    这些是 K8s 自带的「固定模板」,你只能按照官方规则用,不能随便改规则、新增资源类型。
  2. CRD:自定义资源模板(蓝图)
    CRD 全称:自定义资源定义(CustomResourceDefinition)
    大白话:CRD 就是你自己在 K8s 里新建的一种「资源模板」。
    K8s 原生资源不够用时,我们通过 CRD 告诉 K8s:我要新增一种全新的资源类型,定义好它的字段、规则、格式。
    打个比方:
    K8s 原生自带「员工模板」(Pod/Deployment),字段只有姓名、岗位;但我需要「程序员专属模板」,需要新增编程语言、项目字段,这个新建模板的动作,就是 CRD。
  3. CR:自定义资源实例(具体对象)
    CR 全称:自定义资源(CustomResource)
    大白话:CR 就是基于 CRD 模板,创建出来的具体实例。
    继续用上面的例子:CRD 是「程序员模板」,那根据这个模板创建出来的「张三、后端程序员」这条具体数据,就是 CR。
    核心关系总结
    CRD = 模板(类),CR = 实例(对象)
    先有 CRD(注册规则),才能有 CR(具体资源)。
    二、CRD + CR 有什么用?
    核心作用:突破 K8s 原生限制,无限扩展 K8s 能力
    K8s 官方资源只能覆盖通用场景,但实际业务中很多个性化需求原生不支持,比如:自动扩缩容、网关规则、备份策略、数据库运维、微服务治理等。
    如果没有 CRD,这些个性化功能只能用脚本、外部程序实现,杂乱难维护。
    有了 CRD/CR 之后,所有自定义功能都能像操作原生 K8s 资源一样管理,统一命令、统一监控、统一运维。
    最常见的实际场景
  • Ingress-Nginx:用 CRD 定义路由规则、限流规则
  • Prometheus 监控:用 CRD 定义监控采集规则、告警规则
  • ArgoCD/Flux:用 CRD 定义持续部署规则
  • istio 服务网格:几乎所有路由、熔断、治理规则都是 CRD/CR 实现
    三、最简实操:手把手学会怎么用
    全程只做两件事:1. 部署 CRD(注册模板) 2. 创建 CR(使用模板)
    步骤1:编写一个简单的 CRD(自定义模板)
    新建 crd-demo.yaml,定义一个自定义资源:自定义应用(MyApp),包含名称、副本数两个字段。
apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: name: myapps.demo.com spec: group: demo.com names: kind: MyApp plural: myapps scope: Namespaced versions: - name: v1 served:truestorage:true

执行命令部署 CRD,让 K8s 识别这个新资源:
kubectl apply -f crd-demo.yaml
此时 K8s 就新增了一种资源类型:MyApp,和 Pod、Deployment 同级。
步骤2:编写 CR(创建具体资源实例)
新建 cr-demo.yaml,基于上面的 CRD 模板,创建一个具体的资源:

apiVersion: demo.com/v1 kind: MyApp metadata: name: my-first-app spec: appName:"测试应用"replicas:2执行命令创建 CR: kubectl apply-fcr-demo.yaml

步骤3:查看自定义资源
查看我们创建的 MyApp 资源(CR):
kubectl get myapps
能看到刚刚创建的 my-first-app,说明操作成功。
四、关键补充:为什么大家都用它?

  1. 统一运维方式:不管是原生资源还是自定义资源,都用 kubectl 操作,不用记各种奇葩命令;
  2. 可扩展、可定制:业务需要什么能力,就定义什么 CRD,适配所有场景;
  3. 生态基础:现在 K8s 主流中间件、运维工具,全部基于 CRD/CR 实现,是进阶 K8s 的必备知识点。
    五、极简总结(牢记即可)
  4. CRD:自定义资源模板,给 K8s 新增资源类型,定规则;
  5. CR:基于 CRD 模板创建的具体业务资源;
  6. 核心价值:扩展 K8s 原生能力,实现个性化业务运维;
  7. 使用顺序:先装 CRD,再建 CR。
http://www.cnnetsun.cn/news/4196164.html

相关文章:

  • AI编程术语大全(二):Vibe Coding -AI 编程核心术语与实战指南
  • C语言问题之指针和数组定义和使用
  • 三维扫描一键变 CAD:Scan2CAD 把家具模型自动摆进真实房间
  • 软件测试面试核心考察维度与高频技术问题解析
  • 企业级Spring Boot库存管理系统管理系统源码|SpringBoot+Vue+MyBatis架构+MySQL数据库【完整版】
  • 集合排序和流排序
  • 【C++ 面试真题】29. 聊聊 C++ 的线程管理(std::thread)
  • 单片机毕设项目:基于 STM32/51 单片机的4 通道无线病房呼叫液晶显示与语音报警系统设计 主从架构 NRF24L01 病床呼叫终端软硬件设计(020204)
  • 7个我自己常用的学习网站
  • 开源地理空间智能项目中的本体思想 4-2:影像篇——影像不进图谱,图谱给影像当索引
  • 【自适应滤波实战】归一化最小均方 (NLMS) 自适应噪声对消全解析:原理推导 + 数值实例 + Python 代码实现
  • c语言的纸币找零问题
  • 全球贸易进入“高关税时代”:企业必须重新学习如何做全球生意
  • DeepSeek Harness + GLM-5.3 超详细实战教程:我拼了套自己的AI 工位,还自己开发插件!
  • 扫描件加文本层:OCRmyPDF 离线使用完整指南
  • 溶血磷脂酰胆碱 (LPC):脂质代谢关键毒性分子,云克隆 ELISA 试剂盒助力脂质组与炎症损伤科研检测
  • 压电定位平台为什么要闭环?开环误差、传感器基准与Python测试
  • 大二学生用myBuilder两周搭出完整ERP,面试官直接让他演示了一遍
  • 如何获得更快更私密的浏览体验:开源浏览器 Thorium 完整指南
  • DeepSeek Harness 极简模式跑 Terminal Bench,模型基准测试实操
  • KeyboardChatterBlocker 实战教程:按键调阈值,修掉机械键盘连击
  • 【单片机课设毕设项目】基于 51/STM32 单片机的红外人体感应防盗报警环境监控系统设计 基于 51/STM32 单片机的 LCD1602 显示环境感知智能安防系统设计(017504)
  • Python Web后端框架FastAPI vs Flask
  • 网络安全等保合规文档整理
  • 【 C++ 】AVL树
  • 从ChatiSS九种体质舌面诊参数解码中医AI的Token底盘逻辑
  • 评价类模型
  • 2026深度测评10款降AI率工具红黑榜!优缺点全曝光,达标率对标顶级水准
  • MAA明日方舟自动化助手:新手 5 分钟跑通全流程,把重复劳动交给它
  • 单片机毕设项目:融合温光人体检测的 STM32 智能晾衣架设计与开发 本地显示 + 远程 APP 监控 STM32 智能晾衣架系统研究(017204)