什么是CRDCRD?CRD·CRD的全名是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 -资源名称简称APIGROUP命名空间KINDconfigmaps cm True ConfigMapendpoints EP True endpoints events ev True event namespaces ns false namespace persistent volumes PV false persistent volume pods po True pod templates True pod templates storage class s storage . k8s . io false storage class...从上面的输出可以一窥端倪。CRD至少包括以下属性:
名称复数:CRD是简称:CLI中使用的资源简称是API group:API中使用的组名是namespace:是否有namespace属性。种类:需要资源文件来标识资源。此外,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.
创造CRD
CRD资源文件示例:
# CRD -test . yml application:apiextensions.k8s.io/v1beta1kind: CustomResourceDefinition元数据:#该名称必须符合以下格式:< plural & gt。& ltgroup & gtname:crontabs . stay . k8s . io spec:# group name,表示使用这个API:/APIs/< group & gt;/& lt;版本& gtGroup: stay.k8s.io #版本列表,表示此CRD支持的版本版本:-名称:v1 #打开/关闭此API服务:true #只有一个版本。要将存储设置为true storage:true # namespace/cluster,请指示CRD是命令空间属性还是群集属性。作用域中使用的名称:namespace names:# API:/APIs/< group & gt;/& lt;版本& gt/& lt;复数& gt复数:crontab #是单数名称,单数:cli中使用的crontab #往往是大写字母的单数名称。应该在资源中使用short names:-CT # in kind:CronTab # CLI来阻止无法识别的字段。PreserveunkKnownfields只能在群集版本1.15或更高版本中使用:false #创建资源文件时要验证的字段validation:open apiv 3 schema:type:object properties:spec:type:object properties:c Ron spec:type:string image:type:string replicas:type:integer然后创建CRD:
[root @ nodek8s]# ku bectl create -fcrd -test . yml customresourcedidefinition . API extensions . k8s . io/crontabs . stay . k8s . io created然后你就可以找到crd了:
[root @ nodek8s]# ku bectl get crdcrontabs . stay . k8s . io名称创建于crontabs . stay . k8s . io 2019-10-08t 10:21:09 zcrd已创建。可以通过URL访问crontab资源:https://169 . 254 . 128 . 15:60002/APIs/stay . k8s . io/v1/namespaces/default/crontabs。
创建自定义对象
创建CRD后,可以创建其资源的对象。资源示例:
# crontab . ymlapversion:" stay . k8s . io/v1 " Kind:crontab metadata:name:new -crontab spec:cronspec:" * * * * " image:new -image注意spec中的字段要符合CRD的要求,创建它:
[root @ nodek 8s]# ku bectl create -fcrontab . yml crontab.staight.k8s.io/new-crontab创建然后你可以看到这个对象:
[root @ node k8s]# ku bectl get crontabNAME agenews -crontab 28s
总结CRD用于定制资源,这是k8s最常用的扩展方式。
只创造CRD没有实际意义。如果您希望CRD工作,您需要创建一个控制器来监视资源变化并做出相应的动作。
总而言之,这篇关于如何使用Kubernetes)自定义资源的文章已经介绍到这里了。关于Kubernetes自定义资源使用的更多信息,请搜索主机频道zhujipindao以前的文章。或者继续浏览下面的相关文章。希望大家支持主机频道zhujipindao。以后多来com!
评论前必须登录!
注册