CRD(自定义资源定义)空间是Kubernetes中的一种特殊资源,允许您输入任何数据。Mail.ru的Kubernetes 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分为三个部分:常规部分,表级别的信息和列级别的信息:
- 一个共同的部分。与其他Kubernetes资源一样,元数据包括名称CRD(
name: "fruit-crd"
)apiVersion
和kind
。 - 表级信息。表名(
kind: "fruit"
),命令行简单小写名(simpler: "fruits"
),复数(plural: "fruits"
) - 列级信息。列名(
"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格式,操作员也会为您提供帮助。我的操作员的开源版本发布在这里。
还有什么要读的: