什么是Kubernetes CRD

作者 : 慕源网 本文共2482个字,预计阅读时间需要7分钟 发布时间: 2023-03-2 共415人阅读

什么是Kubernetes CRD?

Kubernetes中的CRD代表自定义资源定义,允许我们在Kubernetes中创建自定义对象。通过它的帮助,我们可以轻松地在Kubernetes集群中创建自定义资源或对象,并且可以像正常或本地可用的Kubernetes对象一样使用它。这个CRD的概念是在Kubernetes 1.7中引入的,当我们想要将自己创建的对象添加到Kubernetes集群中以满足需求时,这非常有用。在本文中,我们将看到如何创建和注册我们的自定义对象到Kubernetes,并进行详细解释和内部工作以提高初学者的清晰度和理解。

使用自定义资源

正如我们已经讨论过的,CRD用于创建自定义资源,这为我们添加了很多用户,其中一些如下所述:

CRD用于创建自定义资源,其中包含以下几点:

  1. 运行CRD时,我们不需要任何额外的服务器;它可以由API独立处理。
  2. 它可以用任何语言编写,用户或我们不需要担心编程。
  3. 一旦创建了CRD,则不需要持续支持。如果出现任何大问题,则会被视为Kubernetes主节点升级。
  4. 使用此功能时,我们不需要维护多个版本的API,使用起来很容易。
  5. 当我们在公司内部使用此资源或作为小型开源项目的一部分时,它是最适合的。

考虑到以上所有观点,我们可以决定何时在Kubernetes中使用CRD,所有这些观点将帮助我们轻松地找出答案。

添加Kubernetes CRD 在Kubernetes中,我们有两种创建自定义资源的方法。让我们详细讨论每种方法,以便更好地理解,请参见下面:

  1. 制作使用CRD的一种方法,可以正常创建而无需编程。
  2. 我们拥有的第二种方法是API聚合,但是要使用此方法需要编程,并为我们提供对API创建和行为的更多控制,例如数据存储方式以及API不同版本之间的转换等。

CRD: Custom Resource Definition,此API允许我们创建自定义资源。它将根据我们提供的架构和名称为我们创建新的自定义资源。就存储而言,由Kubernetes服务器进行管理和处理。因此,这是在Kubernetes集群中创建自定义资源的一种方法,无需太多编程即可完成。

Kubernetes CRD的类型

如果我们谈论类型,那么没有特定的CRD类型,但是我们在Kubernetes中有自定义资源类型。它为我们提供了两种方式,可以在Kubernetes集群中轻松创建自定义资源,让我们更详细地了解它们的情况如下:

1)CRD即自定义资源定义:这是在Kubernetes中创建自定义资源的形式之一,我们不需要具备编程知识来创建它。我们可以创建CRD,删除它等等。我们遵循.yaml结构定义和少量命令即可创建它。

2)API聚合:这也是在Kubernetes中创建自定义资源的形式之一,但需要具备编程知识。它有点难以管理等等。

这两点我们已经在本文的前一部分中看到并讨论了,这里我们更多地谈论自定义资源定义,API聚合我们将在下一篇文章中讨论。

创建Kubernetes CRD对象和Kubernetes CRD示例

为了创建Kubernetes CRD,我们必须遵循标准的.yml文件,它将帮助我们创建CRD,这是标准的,应该是相同的,只有少量更改,让我们开始创建Kubernetes CRD,如下所示:

apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: appconfigs.stable.example.com
spec:
group: stable.example.com
versions:
- name: v1
served: true
storage: true
scope: Namespaced
names:
plural: your_name
singular: appconfig
kind: AppConfig
shortNames:
- ac

现在我们需要仔细看一下每一行,以便更详细地了解这个 .yml 文件定义;

a) 在 yml 文件的前两行中,我们试图告诉它们我们正在创建一个自定义资源定义;‘metadata’ 是用来定义我们的 CRD 名称的关键字。

b) 我们在 ‘names’ 和 ‘plural’ 下定义了名称。

c) 现在我们可以定义 CRD 的组名,在这里我们使用 ‘Spec’ 属性来定义。在 ‘Spec’ 下,我们使用 ‘group’ 属性来定义它。

d) 现在我们可以使用 ‘version’ 属性来定义自定义资源定义的版本。’versions’ 本身就在 ‘Spec’ 属性下,定义为 ‘v1’。同时将 ‘storage’ 键设置为 ‘true’,这意味着这个版本将是我们的存储版本。

e) 在此之后,我们也设置了作用域。

f) 接着,我们也为自定义资源定义定义了复数和单数名称。

g) 它还为我们提供了定义 CRD 的 ‘shortNames’ 和 ‘kind’ 名称的规定,然后我们可以使用以下命令来创建它,

命令:

kubectl create -f crd.yaml

f) 在此之后,我们现在可以根据以下语法找到我们CRD的API端点,然后根据您的CRD文件的名称和配置进行相应的操作,以获得更好的清晰度,见下文:

例如:

/group name / version/namespaced/*/crd_name

现在要使用上面的CRD,我们必须使用以下.yml文件定义来表达它:

例如:

apiVersion: "we can give api version"
kind: ann=me of crd
name: this name
spec:
uri: "your uri"

Command: “command if any”

image: demo-image

通过以上的步骤,我们可以在 Kubernetes 中创建和使用自定义资源定义(CRD),可以按照上述的 .yml 文件定义来操作。

结论

到目前为止,我们已经学习了如何创建自定义资源定义,并将它们添加到Kubernetes集群中,并使用它们提供的所有功能。所有这些都可以通过命令行界面或Google客户端来完成。它易于使用,易于处理,由开发人员进行维护。请查看完整文章以更好地了解它。


慕源网 » 什么是Kubernetes CRD

常见问题FAQ

程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!

发表评论

开通VIP 享更多特权,建议使用QQ登录