Kubernetes

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

系列文章目录

文章目录


前言

CRD就是自定义资源就是自定义 apiVersion+Kind

参考资料https://liugp.blog.csdn.net/article/details/126773609

一、CRD操作命令

1.1 定义一种资源并查看

当你创建新的 CustomResourceDefinitionCRD时Kubernetes API 服务器会为你所指定的每个版本生成一个新的 RESTful 资源路径。 基于 CRD 对象所创建的自定义资源可以是名字空间作用域的也可以是集群作用域的 取决于 CRD 对象 spec.scope 字段的设置。

cat > resourcedefinition.yaml << EOF
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  # 名字必需与下面的 spec 字段匹配并且格式为 '<名称的复数形式>.<组名>'
  name: crontabs.stable.example.com
spec:
  # 组名称用于 REST API: /apis/<组>/<版本>
  group: stable.example.com
  # 列举此 CustomResourceDefinition 所支持的版本
  versions:
    - name: v1
      # 每个版本都可以通过 served 标志来独立启用或禁止
      served: true
      # 其中一个且只有一个版本必需被标记为存储版本
      storage: true
      schema:
        openAPIV3Schema:
          type: object
          properties:
            spec:
              type: object
              properties:
                cronSpec:
                  type: string
                image:
                  type: string
                replicas:
                  type: integer
  # 可以是 Namespaced 或 Cluster
  scope: Namespaced
  names:
    # 名称的复数形式用于 URL/apis/<组>/<版本>/<名称的复数形式>
    plural: crontabs
    # 名称的单数形式作为命令行使用时和显示时的别名
    singular: crontab
    # kind 通常是单数形式的驼峰命名CamelCased形式。你的资源清单会使用这一形式。
    kind: CronTab
    # shortNames 允许你在命令行使用较短的字符串来匹配资源
    shortNames:
    - ct
EOF

执行创建

kubectl apply -f resourcedefinition.yaml

这样一个新的受名字空间约束的 RESTful API 端点会被创建在

/apis/stable.example.com/v1/namespaces/

对象的 kind 将是来自你上面创建时 所用的 spec 中指定的 CronTab。

Kubernetesk8sAPI 的 操作可以参考我之前的文章Kubernetesk8sAPI Server详解

kubectl get --raw /apis/stable.example.com/v1/
kubectl get --raw /apis/stable.example.com/v1/|python -m json.tool

在这里插入图片描述

1.2 使用刚刚定义的资源

在创建了 CustomResourceDefinition 对象之后你可以创建定制对象Custom Objects。定制对象可以包含定制字段。这些字段可以包含任意的 JSON 数据。 在下面的例子中在类别为 CronTab 的定制对象中设置了cronSpec 和 image 定制字段。类别 CronTab 来自你在上面所创建的 CRD 的规约。

cat >my-crontab.yaml<<EOF
apiVersion: "stable.example.com/v1"
kind: CronTab
metadata:
  name: my-new-cron-object
spec:
  cronSpec: "* * * * */5"
  image: my-awesome-cron-image
EOF

并执行创建命令

kubectl apply -f my-crontab.yaml

你就可以使用 kubectl 来管理你的 CronTab 对象了。例如

kubectl get crontab
kubectl get ct -o yaml

3删除 CustomResourceDefinition
当你删除某 CustomResourceDefinition 时服务器会卸载其 RESTful API 端点并删除服务器上存储的所有定制对象。

kubectl delete -f resourcedefinition.yaml
kubectl get crontabs

二、CRD效果演示

2.1 实践定义一种资源并查看

步骤1定义资源
步骤2应用资源
步骤3查看资源
在这里插入图片描述
在外网访问要么打开匿名权限要么手动添加一个secret操作方式见博客https://maoqizhi.blog.csdn.net/article/details/127337611

https://192.168.100.152:6443/apis/stable.example.com/v1/
在这里插入图片描述

在这里插入图片描述

2.2 实践使用刚刚定义的资源

在这里插入图片描述

restful接口https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/
kubectl命令https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#patch
swaggerhttps://raw.githubusercontent.com/kubernetes/kubernetes/master/api/openapi-spec/swagger.json

在这里插入图片描述

https://192.168.100.152:6443/apis/apps/v1/namespaces/default/deployments
在这里插入图片描述

https://192.168.100.152:6443/apis/stable.example.com/v1/namespaces/default/crontabs

在这里插入图片描述

https://192.168.100.152:6443/apis/stable.example.com/v1/namespaces/default/crontabs/my-new-cron-object
在这里插入图片描述

总结

很简单照着操作就好了有手就行理解就好了一种资源就是 apiVersion + name + metadata+ spec创建完成之后在postman/外网能访问到就算成功了。

天天打码天天进步

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: k8s