Kubernetes中CRD的简单说明以及如何使用

maryanion



CRD(自定义资源定义)空间是Kubernetes中的一种特殊资源,允许您输入任何数据。Mail.ruKubernetes aaS团队翻译了一篇有关它是什么,如何创建和使用它的文章。



什么是CRD



CRD只是数据库中的一个表。假设我们创建了一个表“ Fruits”,其中有许多记录:“ apple”,“ banana”,“ orange”。每个记录都有带有水果特征(如甜度,风味和重量)的列。



因此,CRD与Fruit表相似。







CR(自定义资源)-表中的单独记录,例如“ apple”或“ banana”。创建CRD(表)后,可以添加或删除CR(记录)。







随着越来越多的用户想要向Kubernetes贡献数据,需要CRD。数据格式可以不同,并且在开箱即用的Kubernetes中未定义CRD。结果,您需要创建自己的表,设置列的名称和类型,如在数据库中一样。



例如,IT经理希望使用CRD来组织用户列表,部门列表,工作时间表或其他内容。



如何创建CRD



如前所述,CRD是一个表。创建表时,需要设置其格式:列名和类型。在CRD中,这些元素以YAML或JSON格式描述。CR还描述了要以YAML或JSON格式写入的每个值。







让我们从内部看一下CRD的外观:







CRD分为三个部分:常规部分,表级别的信息和列级别的信息:



  1. 一个共同的部分。与其他Kubernetes资源一样,元数据包括名称CRD(name: "fruit-crd"apiVersionkind
  2. 表级信息。表名(kind: "fruit"),命令行简单小写名(simpler: "fruits"),复数(plural: "fruits"
  3. 列级信息。列名("sweetness"),列类型("boolean", "string", "integer", "object"),嵌套对象(: < >)。它们符合OpenAPISpecification版本3格式。


有关CRD的更多信息,请参阅官方手册



CRD检查



CRD真的只是一张桌子吗?让我们检查。



我不想记住CRD格式,我需要一种更简单的方法来创建它。因此,我只在编写一个表定义,并且有一条语句-自动CRD生成工具。



描述非常简单:您需要列出成对的列名称和类型。







应用此YML之后,在Kubernetes中的运算符会自动生成相应的CRD。您可以创建自己的运算符,但是如果要尝试使用我的运算符,请运行以下命令:



kubectl apply -f
https://raw.githubusercontent.com/onelittlenightmusic/k8sasdb/master/install.yaml


成功安装操作员后,检查Pod已启动:



kubectl get pod -n k8sasdb-system
NAME                                         READY   STATUS    RESTARTS   AGE
k8sasdb-controller-manager-9dbf54b4f-hzrt9   2/2     Running   0          8s


您可以从此处下载示例表和CR记录



这就是生成的CRD的样子。左:常规信息和表级别,右:列级别信息。







然后,我添加了以下CR(一种水果为YAML)。





示例CR“ Fruit”



现在让我们检查表中的结果以及记录上的操作。



建立表格



kubectl create -f fruit.yaml






成功:已安装CRD =已创建表。







这等效于SQL命令CREATE TABLE fruits;



建立记录



kubectl create -f apple.yaml






成功:CR集=已创建记录。这等效于SQL命令INSERT INTO fruits values('apple', ...);



获取记录列表



kubectl get fruits






成功:显示两个CR和它们的所有列。等效于SQL命令SELECT * FROM fruits;



接收记录



kubectl get fruit apple






成功地。当然,您可以使用其他名称,例如“ banana”。该命令等效于SQL查询SELECT * FROM fruits WHERE name = 'apple';



删除条目



kubectl delete fruit apple






删除后,用于检查整个水果列表的命令不会显示结果“ apple”。







成功地。SQL中的类比:DELETE FROM fruits WHERE name = 'banana';



结论



CRD只是Kubernetes中的一个表。您可以使用CRD创建新表,并使用CR添加记录。同样在CRD中,您可以通过定义列名称和类型来定义表架构。掌握了CRD,CR和kubectl命令后,就可以将任何数据上传到Kubernetes。



无需担心:即使您不记得CRD格式,操作员也会为您提供帮助。我的操作员的开源版本发布在这里



还有什么要读的:



  1. 如何更有效地使用kubectl:综合指南
  2. Kubernetes: .
  3. Kubernetes .



All Articles