17-Custom Resource 入门
Custom Resource 入门概念引入到目前为止你已经用过十几种 K8s 内置资源了——Pod、Deployment、Service、Ingress、NetworkPolicy……但你知道 K8s 还能自定义资源类型吗K8s 内置了 Deployment、Service、ConfigMap 等资源。但每个公司的业务需求千差万别——K8s 不可能内置所有资源类型。Custom Resource Definition (CRD) 让你自己定义新的资源类型然后像操作 Deployment 一样用 kubectl 管理它K8s 内置资源 你自定义的资源 ───────────── ────────────────── Deployment MySQLCluster Service TLSStore ConfigMap AlertRule Pod DataPipeline你定义的K8s 内置kubectl apply -fkubectl apply -fDeploymentServiceConfigMapMySQLCluster你的 CRDAlertRule你的 CRDetcd和其他资源一样存储学完本篇你将能够编写 CRD YAML定义一个全新的 K8s 资源类型含字段和验证规则创建、查询、删除 Custom Resource 实例像操作 Deployment 一样用 kubectl 管理理解 CRD 与 Operator 的关系为后续学习 Operator 打基础原理讲解CRD CR 自定义资源两个概念需要区分概念全称作用类比CRDCustom Resource Definition定义类型模板数据库建表CREATE TABLECRCustom Resource类型的实例数据插入数据INSERT INTO创建实例CR定义类型CRD定义结构定义结构kind: CustomResourceDefinition定义字段、验证规则kind: MySQLClustername: prod-dbreplicas: 3kind: MySQLClustername: staging-dbreplicas: 1创建一个简单的 CRDapiVersion:apiextensions.k8s.io/v1kind:CustomResourceDefinitionmetadata:name:websiteinfos.example.com# plural.groupspec:group:example.com# API 组versions:-name:v1served:truestorage:trueschema:openAPIV3Schema:type:objectproperties:spec:type:objectproperties:url:type:stringmaintainer:type:stringreplicas:type:integerminimum:1maximum:10required:[url]scope:Namespaced# 或 Clusternames:plural:websiteinfos# kubectl get websiteinfossingular:websiteinfo# kubectl get websiteinfo/xxxkind:WebsiteInfo# YAML 中 kind 的值shortNames:# kubectl get wi-wiCRD 关键配置字段含义示例groupAPI 组自定义的必须用非 k8s.io 域名example.comscopeNamespacedNamespace 隔离或Cluster集群级Namespacednames.plural复数名用于 URL 路径websiteinfosnames.kind资源类型名YAML 中的 kindWebsiteInfoversions支持的 API 版本列表v1,v1beta1schema用 OpenAPI v3 Schema 验证 CR 字段JSON Schema操作 CRCRD 创建后就可以像操作内置资源一样操作自定义资源apiVersion:example.com/v1kind:WebsiteInfometadata:name:my-blogspec:url:https://myblog.commaintainer:bgreplicas:3# 增删改查——和 Deployment 完全一样的命令kubectl apply-fwebsiteinfo.yaml kubectl get websiteinfos# 或简写 kubectl get wikubectl get wi my-blog-oyaml kubectl describe wi my-blog kubectl delete wi my-blogCRD 有什么用光有 CRD 只是把数据存到 etcd。要让 CR 真正驱动自动化操作——你需要Controller控制器CRD 只是数据模型 → 定义了数据库表结构 CRD Controller Operator → 你的自定义自动化平台kubectl apply CRCR 变更事件调和Reconcile创建 Pod/Service/等你etcdController你的自定义逻辑K8s APIOperator 框架如 kubebuilder, operator-sdk帮你生成 CRD 和 Controller 脚手架但本篇只讲 CRD——理解数据模型是后续 Operator 开发的基础。动手实验配套实验位于docs/labs/beginner/custom-resource/步骤 1部署实验环境cddocs/labs/beginner/custom-resourcebashsetup.sh步骤 2创建 CRDkubectl apply-fmanifests/websiteinfo-crd.yaml kubectl get crd# 输出中包含 websiteinfos.example.com# 查看 API 资源列表你的 CRD 已在其中kubectl api-resources|grepexample步骤 3创建自定义资源实例kubectl apply-fmanifests/my-website.yaml kubectl get websiteinfos kubectl get wi# 简写也可以步骤 4体验 CRD 的验证能力# 尝试创建一个无效的 CRreplicas: 100 超过了 maximum: 10kubectl apply-fmanifests/invalid-website.yaml# 预期错误信息指出 replicas 超过了最大值步骤 5查看和删除kubectl describe wi my-blog kubectl get wi my-blog-oyaml kubectl delete wi my-blog步骤 6清理bashteardown.sh自检问题[基础]CRD 和 CR 的区别是什么用数据库类比解释。[理解]如果只有一个 CRD 没有 Controller它能做什么不能做什么[应用]你公司想用 K8s 管理 MySQL 集群——创建一个MySQLClusterCR设置replicas: 3主从自动配置备份自动执行。哪些部分靠 CRD哪些部分靠 Controller查看答案CRD 建表语句DDL定义字段类型、约束、验证规则。CR 插入的数据行DML是符合 CRD 定义的实例。一个 CRD 可以有多个 CR 实例就像一张表可以有多行数据。有 CRD 没有 Controller你可以用kubectl apply/get/describe/delete操作 CR数据被存储在 etcd 中CRD 的 Schema 验证会生效字段类型、必填等。但它不会驱动任何实际操作——不会创建 Pod、不会配置网络、不会做任何自动化。就像一个数据库表你可以插入数据但没有程序来读取这些数据做事情。CRD 负责定义数据模型——MySQLCluster 的结构spec: replicas, version, storagesize; status: readyReplicas, primaryNode。Controller 负责所有自动化逻辑——创建 StatefulSet、配置主从复制、执行定时备份、更新 status、处理故障切换。CRD 你要什么Controller 怎么做到。两者结合就是 MySQL Operator。下一步你已经能扩展 K8s 的 API 了。接下来学习一种不同于 Helm 的配置管理方式→ 28. Kustomize 配置管理 本文来自 K8s Guide —— 开源免费的 Kubernetes 中文学习指南️ 初学者轨道 面试轨道从零基础到拿 Offer 一站式覆盖 每篇文章配套 Kind 实验脚本本地一键运行 本文源码docs/beginner/20-gateway-api.md⭐ 如果对你有帮助欢迎 Star github.com/callmebg/k8s-guide

相关新闻

机器学习的魅力

机器学习的魅力

知识点 1:线性回归(Linear Regression)—— “一条直线走天下”文字描述: 线性回归试图找到一条“最佳直线”来拟合数据点,使所有点到这条直线的垂直距离(残差)的平方和最小(最小二乘…

2026/8/2 2:33:35阅读更多 →
[具身智能-708]:ros2 topic pub --rate 10 /turtle1/cmd_vel 消息解析

[具身智能-708]:ros2 topic pub --rate 10 /turtle1/cmd_vel 消息解析

完整逐段拆解这条命令bash运行ros2 topic pub --rate 10 /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 1.0, z: 0.0}, angular: {x: 1.0, y: 1.0, z: 0.0}}"1. 基础命令分段表格片段含义ros2 topic pubROS2 命令:向话题发布消息--rat…

2026/8/2 2:33:35阅读更多 →
基于AI的文本关系分析:从模型部署到API集成的完整实践指南

基于AI的文本关系分析:从模型部署到API集成的完整实践指南

这次我们来看一个名为“看破了,你们中上真的是仇人吗?”的项目。从标题来看,这很可能是一个涉及情感分析、关系预测或社交网络挖掘的AI模型或工具。这类项目通常用于分析文本(如对话、评论、社交媒体内容)中人物或实体…

2026/8/2 2:33:35阅读更多 →
AnimateDiff完全指南:3小时从零掌握AI动画生成技术

AnimateDiff完全指南:3小时从零掌握AI动画生成技术

AnimateDiff完全指南:3小时从零掌握AI动画生成技术 【免费下载链接】animatediff 项目地址: https://ai.gitcode.com/hf_mirrors/ai-gitcode/animatediff AnimateDiff作为当前最先进的AI动画生成框架,能够将静态图像转化为流畅的动态序列&#x…

2026/8/2 3:54:10阅读更多 →
Active Directory域服务:企业IT集中管理的核心架构与实战指南

Active Directory域服务:企业IT集中管理的核心架构与实战指南

1. 从“域”说起:为什么企业需要集中管理如果你在一家超过几十人的公司工作过,大概率听说过“加域”、“域账号登录”这些词。很多朋友第一次接触“域”这个概念,可能是在入职时IT同事递给你一张纸条,上面写着服务器地址、用户名和…

2026/8/2 3:54:10阅读更多 →
华硕笔记本终极控制方案:5步完成GHelper轻量化替代工具完整配置指南

华硕笔记本终极控制方案:5步完成GHelper轻量化替代工具完整配置指南

华硕笔记本终极控制方案:5步完成GHelper轻量化替代工具完整配置指南 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook…

2026/8/2 3:54:10阅读更多 →
终极教程:如何免费解锁WeMod专业版功能,完整游戏修改体验

终极教程:如何免费解锁WeMod专业版功能,完整游戏修改体验

终极教程:如何免费解锁WeMod专业版功能,完整游戏修改体验 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer 还在为WeMod的高级…

2026/8/2 3:54:10阅读更多 →
Windows驱动管理终极指南:Driver Store Explorer让你的系统重获新生

Windows驱动管理终极指南:Driver Store Explorer让你的系统重获新生

Windows驱动管理终极指南:Driver Store Explorer让你的系统重获新生 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 你是否发现Windows系统盘空间越来越小?是否遇…

2026/8/2 3:54:10阅读更多 →
基于Zephyr RTOS与VSCode的STM32F103C8T6现代化开发环境搭建指南

基于Zephyr RTOS与VSCode的STM32F103C8T6现代化开发环境搭建指南

如果你是一名嵌入式开发者,正在寻找一个比传统 Keil、IAR 更现代、更高效的开发环境,并且对 STM32 这类经典 MCU 的开发流程感到繁琐,那么这篇文章就是为你准备的。 过去,STM32F103C8T6(俗称“蓝桥杯板”或“最小系统…

2026/8/2 3:52:09阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/2 0:00:10阅读更多 →
限时公开!某头部SaaS公司内部AI模板工厂架构文档(含5类行业模板源码+性能压测报告)

限时公开!某头部SaaS公司内部AI模板工厂架构文档(含5类行业模板源码+性能压测报告)

更多请点击: https://intelliparadigm.com 第一章:AI模板批量生成的核心价值与落地全景 AI模板批量生成正从实验性工具演进为现代软件工程的关键基础设施。它通过语义理解、上下文感知与结构化约束,将重复性高、模式明确的代码/文档/配置生成…

2026/8/2 0:00:12阅读更多 →
如何快速找回消失的网页:Web Archives浏览器扩展终极指南

如何快速找回消失的网页:Web Archives浏览器扩展终极指南

如何快速找回消失的网页:Web Archives浏览器扩展终极指南 【免费下载链接】web-archives Browser extension for viewing archived and cached versions of web pages, available for Chrome, Edge and Safari 项目地址: https://gitcode.com/gh_mirrors/we/web-a…

2026/8/2 0:00:13阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/2 0:00:10阅读更多 →
限时公开!某头部SaaS公司内部AI模板工厂架构文档(含5类行业模板源码+性能压测报告)

限时公开!某头部SaaS公司内部AI模板工厂架构文档(含5类行业模板源码+性能压测报告)

更多请点击: https://intelliparadigm.com 第一章:AI模板批量生成的核心价值与落地全景 AI模板批量生成正从实验性工具演进为现代软件工程的关键基础设施。它通过语义理解、上下文感知与结构化约束,将重复性高、模式明确的代码/文档/配置生成…

2026/8/2 0:00:12阅读更多 →
如何快速找回消失的网页:Web Archives浏览器扩展终极指南

如何快速找回消失的网页:Web Archives浏览器扩展终极指南

如何快速找回消失的网页:Web Archives浏览器扩展终极指南 【免费下载链接】web-archives Browser extension for viewing archived and cached versions of web pages, available for Chrome, Edge and Safari 项目地址: https://gitcode.com/gh_mirrors/we/web-a…

2026/8/2 0:00:13阅读更多 →
无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut 在数字媒体创作领域,视频编辑处理的质量损…

2026/8/2 1:29:34阅读更多 →
AI辅助本科论文写作:8大工具评测与高效使用指南

AI辅助本科论文写作:8大工具评测与高效使用指南

1. 本科生论文写作的AI辅助现状本科毕业论文是每个大学生必须跨越的一道坎。记得我当年写论文时,光是文献检索就花了整整两周时间,打印的参考文献堆满了半个书桌。如今AI技术的发展为学术写作带来了革命性变化,合理使用这些工具可以节省80%以…

2026/8/2 2:32:55阅读更多 →
如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手 【免费下载链接】ticket-purchase 大麦自动抢票,支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase 还在为抢不到热门演唱会门票…

2026/8/2 2:09:20阅读更多 →