如何在 Kubernetes 中创建客户资源定义

2023年 8月 23日 74.5k 0

​Kubernetes是一个流行的开源平台,用于自动化部署、扩展和管理容器化应用程序。它提供了一个强大的API来管理资源,但有时其内置资源不足以满足需求。这就是Kubernetes自定义资源定义(CRD)的用武之地。CRD允许定义自己的自定义资源,可以像Pod和Service等内置资源一样进行管理。 这篇文章中,我们将逐步介绍一下实现Kubernetes CRD的步骤。需要准备以下条件: 

  • 安装并配置了kubectl的Kubernetes集群。 

  • 运行了启用了RBAC(基于角色的访问控制)的Kubernetes API服务器。 

  • 基本了解Kubernetes资源清单和YAML。

步骤1:定义CRD

首先,我们将定义描述我们CRD的YAML文件。该文件指定了自定义资源的名称、版本和模式。例如,让我们为一个名为"myapp"的虚构应用程序创建一个版本为"v1beta1"的CRD:

apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  name: myapps.example.com
spec:
  group: example.com
  versions:
    - name: v1beta1
      served: true
      storage: true
  scope: Namespaced
  names:
    plural: myapps
    singular: myapp
    kind: Myapp

*YAML创建CRD定义*

在这个YAML文件中: 

  • apiVersion:用于此对象的Kubernetes API的版本。 

  • kind:对象的类型(在这种情况下,是CustomResourceDefinition)。 

  • metadata:对象的元数据,包括其名称。 

  • spec:CRD的规范。 

  • group:自定义资源的API组。 

  • versions:自定义资源支持的版本列表。 

  • name:版本的名称。 

  • served:版本是否由API服务器提供。 

  • storage:版本是否应该持久化。 

  • scope:自定义资源的范围(集群级别或命名空间级别)。 

  • names:用于引用自定义资源的名称。 

  • plural:资源的复数名称。 

  • singular:资源的单数名称。 

  • kind:资源的类型。 

  • shortNames:资源的简称列表。

     

将此YAML文件保存为myapp-crd.yaml。

步骤2:创建CRD

接下来,我们将使用kubectl在Kubernetes集群中创建CRD:

$ kubectl create -f myapp-crd.yaml

这将在Kubernetes集群中创建名为myapps.example.com的CRD。

步骤3:定义自定义资源

现在我们已经定义了CRD,我们可以定义将使用此CRD的自定义资源。在这个例子中,我们将创建一个YAML文件来定义myapp的自定义资源:

piVersion: example.com/v1beta1 
kind: Myapp 
metadata: 
 name: myapp-sample 
spec: 
 replicas: 3 
 image: nginx:latest

在这个YAML文件中,我们定义了以下内容: 

  • apiVersion:自定义资源的API组和版本。在这里,它是example.com/v1beta1。 

  • kind:自定义资源的类型。在这里,它是Myapp。 

  • metadata:与自定义资源相关的元数据。在这里,我们将名称设置为myapp-sample。 

  • spec:自定义资源的规范。在这里,我们指定了副本数量和要使用的镜像。

     

将此YAML文件保存为myapp-sample.yaml。

步骤4:创建自定义资源

接下来,我们将使用kubectl在Kubernetes集群中创建自定义资源:

$ kubectl create -f myapp-sample.yaml

这将在Kubernetes集群中创建名为myapp-sample的自定义资源。

步骤5:查看自定义资源

要查看刚刚创建的自定义资源,请运行以下命令:

kubectl get crd

执行后会看到在集群中创建的CRD列表,并验证创建的资源是否存在。Kubernetes自定义资源定义(CRD)是一个强大的功能,允许使用自定义资源扩展Kubernetes。通过CRD,可以创建自己的Kubernetes API资源,这些资源可以像任何其他本机Kubernetes资源一样使用。通过这些简单的步骤,可以轻松地在集群中创建CRD。

作者:Aditya Bhuyan

更多技术干货请关注公众号“云原生数据库”

squids.cn,目前可体验全网zui低价RDS,免费的迁移工具DBMotion、SQL开发工具等。

相关文章

KubeSphere 部署向量数据库 Milvus 实战指南
探索 Kubernetes 持久化存储之 Longhorn 初窥门径
征服 Docker 镜像访问限制!KubeSphere v3.4.1 成功部署全攻略
那些年在 Terraform 上吃到的糖和踩过的坑
无需 Kubernetes 测试 Kubernetes 网络实现
Kubernetes v1.31 中的移除和主要变更

发布评论