K8S的 Custom Resource Definition(CRD)之初体验
K8S Custom Resource Definition(CRD)之初体验
CRD(Custom Resource Definition) 是 kubernetes 强大扩展能力的一处体现,联系到编程场景,CRD 相当于是类(class),custom resource 相当于是对象或者实例,通过 CRD 可以创建自己定义的资源类型,api server 会直接支持,可以通过 kubectl 命令创建对应的资源并对资源进行删/查/改的操作,资源对象会被保存在 etcd 中,可以像操作 pod 那样操作自己创建的 resouce。
这篇随笔以发布博文场景为例体验一下 kubernetes 的 CRD,对应的 custom resource 就是 BlogPost。
首先,编写 BlogPost 的 CRD 清单文件 blogpost-crd.yaml,给 BlogPost 定义了3个属性:title, pushishdate, body,从编程角度就是创建了一个 BlogPost 类
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:name: blogposts.kube.zxl.com
spec:group: kube.zxl.comscope: Namespacednames:kind: BlogPostsingular: blogpostplural: blogpostslistKind: BlogPostListversions:- name: v1# Each version can be enabled/disabled by Served flag.served: true# One and only one version must be marked as the storage version.storage: trueschema:openAPIV3Schema:type: objectproperties:spec:type: objectproperties:title:type: stringurl:type: stringpublishdate:type: string body:type: string
编写清单注意事项:
metadata.name
是spec.names.plural
+ “.” +spec. group
的组合,如果写blogposts.kube.zxl.com
,会包下面的错误metadata.name: Invalid value: "blogpost.kube.zxl.com": must be spec.names.plural+"."+spec.group
- scope 有2种,一种是
Cluster
,一种是Namespaced
,比如 node 资源的 scope 是 Cluster,pod 资源的 scope 是 Namespaced,Cluster 资源的 url 路径是/clusters/{cluster}/{plural}
,Namespaced 资源的 url 路径是/clusters/{cluster}/namespaces/{namespace}/{plural}
- 属性不支持日期类型,只支持 “array”, “boolean”, “integer”, “number”, “object”, “string” 五种类型。
然后,基于清单文件创建 CRD
$ kubectl create -f blogpost-crd.yaml
customresourcedefinition.apiextensions.k8s.io/blogposts.kube.zxl.com created
查看已创建的 CRD
kubectl get crd | grep blogposts
blogposts.kube.zxl.com 2021-03-08T08:28:17Z
接下来基于创建好的 CRD 创建 BlogPost 资源,从编程角度就是 new 一个 BlogPost 对象,从需求角度就是发布一篇博文。
编写清单文件 blogpost-1.yaml
apiVersion: kube.zxl.com/v1
kind: BlogPost
metadata:name: blogpost-1
spec:title: "学亮编程手记title部分"url: "https://www.zxl.com"publishdate: "2021-03-02 16:28"body: "学亮编程手记body部分"
创建资源
$ kubectl create -f blogpost-1.yaml
blogpost.kube.zxl.com/blogpost-1 created
创建成功之后就可以用 kubectl 命令操作 blogposts 资源
列出资源
$ kubectl get blogposts
NAME AGE
blogpost-1 94s
查看资源
kubectl describe blogposts blogpost-1
输出如下
kubectl describe blogposts blogpost-1
Name: blogpost-1
Namespace: production
Labels: <none>
Annotations: <none>
API Version: kube.zxl.com/v1
Kind: BlogPost
Metadata:Creation Timestamp: 2021-03-08T09:09:51ZGeneration: 2Managed Fields:API Version: kube.zxl.com/v1Fields Type: FieldsV1fieldsV1:f:spec:.:f:body:f:publishdate:f:title:Manager: kubectl-createOperation: UpdateTime: 2021-03-08T09:09:51ZAPI Version: kube.zxl.com/v1Fields Type: FieldsV1fieldsV1:f:metadata:f:annotations:.:f:kubectl.kubernetes.io/last-applied-configuration:f:spec:f:url:Manager: kubectl-client-side-applyOperation: UpdateTime: 2021-03-08T09:16:31ZResource Version: 151288200UID: 75930e48-0c1a-4450-b9ef-e010201b154a
Spec:Body: 学亮编程手记body部分Publishdate: 2021-03-02 16:28Title: 学亮编程手记title部分URL: https://www.zxl.com
Events: <none>
体验完毕。
K8S的 Custom Resource Definition(CRD)之初体验相关推荐
- k8s自定义controller三部曲之一:创建CRD(Custom Resource Definition)
k8s系统中controller扮演着重要角色,开发自定义controller是深入学习和理解controller的有效途径,<k8s自定义controller三部曲>系列会逐步完成一次完 ...
- 【云原生】Kubernetes CRD 详解(Custom Resource Definition)
文章目录 一.概述 二.定制资源 1)定制资源 和 定制控制器 2)定制控制器 3)Operator 介绍 1.Operator Framework 2.Operator 安装 3.安装 Operat ...
- Custom Resource Definitions Operator
概念? k8s CRD相关 Custom Resource Definitions https://weread.qq.com/web/reader/9fc329507191463c9fcee6dkd ...
- Vue开发异常: Error: custom keyword definition is invalid: data.errors should be boolean
2019独角兽企业重金招聘Python工程师标准>>> 一. Error: custom keyword definition is invalid: data.errors sho ...
- k8s_难产的ingress架构初体验(一)
在 https://editor.csdn.net/md/?articleId=106170316中跟着github中的说明进行了初体验.但是发现并不是每个模块都会用到. github说明 后端ser ...
- Rasa课程、Rasa培训、Rasa面试系列之:Rasa 3.x部署安装初体验
Rasa课程.Rasa培训.Rasa面试系列之:Rasa 3.x部署安装初体验 Rasa 3.x部署安装 进入Ananconda系统,新建rasa虚拟环境 conda create --name in ...
- 从源码深处体验Spring核心技术--IOC容器初体验
开局经验之谈:可能从这一篇文章开始,小伙伴们都会有点晕车的感觉了,但是这个系列并不是只是介绍下spring表面的一些肤浅的东西,本系列的目的是为了让大家从源码层次深入理解Spring,这也是大家在未来 ...
- ASP.NET Core 3.0 上的gRPC服务模板初体验(多图)
早就听说ASP.NET Core 3.0中引入了gRPC的服务模板,正好趁着家里电脑刚做了新系统,然后装了VS2019的功夫来体验一把.同时记录体验的过程.如果你也想按照本文的步骤体验的话,那你得先安 ...
- 我的Go+语言初体验——(6)整型有理数数据类型
我的Go+语言初体验--(6)整型有理数数据类型 "我的Go+语言初体验" | 征文活动进行中- Go+ 语言使用后缀 'r' 表示有理数,支持整型.分数型.浮点型三种有理数数据类 ...
最新文章
- golang 逐行 读文件
- 《移动项目实践》实验报告——Android网络通信
- GStreamer基础教程04 - 动态连接Pipeline
- 直接插入排序(C语言)实现
- Android开发技术周报 Issue#77
- 【win32汇编】0x04 第一个窗口程序
- Python中参数iterable的意义
- 从著名的list_head看linux内核中OO 从Unix分层内核栈以及中断处理看Linux内核的另类
- win10桌面不见了如何找到
- php图片留白,img底部留白问题的六大解决方法
- MySql 删除索引
- Vue + Echart 绘制地图区域标记
- 【陈工笔记】# 如何用WPS演示给PPT加水印 #
- 使用 Packer 自动执行 VMware vsphere 模板
- 图像处理方面的一些期刊
- 高考成绩四川查询时间2021等位分,2021年艺考时间
- JavaScript中split()方法详解
- python配色_[转]修改Python IDLE代码配色及语法高亮主题
- Android图片素描效果
- 常见软件开发模型对比