您当前的位置:首页 > 问答 > 内容

CRD是什么意思(CRD的概念及使用)

CRD是什么意思(CRD的概念及使用)

什么是CRDCRD?CRDCRD的全名是CustomResourceDefinitions,即自定义资源。K8s内置了一些资源,比如Pod、Deployment、ReplicaSet等。而CRD则为用户提供了定制新资源的方式来扩展k8s的功能。使用CRD可以很容易地扩展k8s的功能,而无需修改k8s的源代码。例如,腾讯云TKE使用logcollectors.ccs.cloud.tencent.com CRD添加日志收集服务,Istio也广泛使用CRD。值得一提的是,k8s的另一种扩展方式是apiservice,通过API定制HPA:metrics . k8s . io是其最典型的应用。您可以使用kubectl api-resources命令查看群集中已定义的资源:[root @ node k8s]# ku bectl API-resources名称简称APIGROUP名称空间KINDconfigmaps cm true ConfigMapendpoints EP true endpoints events ev true event namespaces ns false namespace persistentvolumes PV false PersistentVolumepods po true podtemplates true podtemplateststorage class sc storage . k8s . io false storage class.从上面的输出中,我们可以窥见一二。CRD至少包括以下属性:名称:CRD的复数名称;CLI中使用的资源的简称;API s组名namespace:是否有namespace属性KIND:需要用资源文件来标识资源。此外,CRD提供了一种定义资源的方法,但它需要控制器的配合才能实现。K8s kube-controller-manager组件提供了多种内置控制器,如cronjob、daemonset、deployment、namespace等。它监视资源的创建/更新/删除并做出相应的动作。对于CRD,也可以编写相应的控制器来完成相应的功能。k8s用的是CRD。CRD本身就是一种资源。大于1.7.0版的集群可以使用apiextensions.k8s.io/v1beta1API来访问CRD,而大于1.16.0版的集群可以使用apiextensions.k8s.io/v1API.创建CRDCRD资源文件的示例:

# apiextensions.k8s.io/v1beta1kind: custom resource definition元数据:#该名称必须符合以下格式:name:crontabs . stay . k8s . io spec:#组名,使用API:/APIs//group: stay.k8s.io #版本列表,表示此CRD版本支持的版本:-name: v1 #打开/关闭此API served: true #只能有一个版本。要将存储设置为true storage:true # namespace/cluster,请指示CRD是命令空间属性还是群集属性。作用域中使用的名称:namespace names:# API://API///plural:crontabs #是单数名称。cli中使用的单数:crontab #通常是大写字母的单数名称。应该在资源中使用缩写:-ct # in kind: CronTab # cli来阻止无法识别的字段。PreserveunkKnownfields只能在集群版本1.15或更高版本中使用:false #创建资源文件时要验证的字段是validation:open apiv 3 schema:type:object properties:spec:type:object properties:cronspec:type:string image:type:string licas:type:integer。然后创建CRD:

[root @ nodek8s]# ku bectl create-fcrd-test . yml customresourcedidefinition . API extensions . k8s . io/crontabs . stay . k8s . io created然后你就可以找到crd了:

[root @ nodek 8s]# ku bectl get crdcrontabs.stay.k8s.io在crontabs . stay . k8s . io创建的名称2019-10-08t1009zcrd已创建。可以通过URL:3359169 . 254 . 128 . 15:60002/APIs/stay . k8s . io/v1/namespaces/default/crontabs访问crontab资源。

创建自定义对象创建CRD后,可以创建其资源的对象。资源示例:# crontab . ymla piversion:tay.k8s.io/v1'种类:crontab元数据:名称:new-crontab规格:cronspec:* * * *'image: new-image注意,spec中的字段应该满足CRD的要求。创建它:

[root @ nodek 8s]# ku bectl create-f crontab . yml crontab.staight.k8s.io/new-crontab创建然后你就可以看到这个对象了:

[root @ nodek 8s]# ku bectl get crontab name a new-crontab 28s摘要CRD用于定制资源,是扩展k8s最常用的方式。

只创造CRD没有实际意义。如果您希望CRD工作,您需要创建一个控制器来监视资源变化并做出相应的动作。

审计唐子红

标签:资源CRD名称


声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,谢谢。

上一篇: 磐正主板启动快捷键(电脑开机启动项选择快捷键大全)

下一篇: pro有什么优点?(摩托罗拉aura)



猜你感兴趣

推荐阅读

网站内容来自网络,如有侵权请联系我们,立即删除! | 软文发布 | 粤ICP备2021106084号