0
点赞
收藏
分享

微信扫一扫

k8s&&CRD

k8s&&CRD

概念

CRD: CustomResourceDefinition,CustomResourceDefinition represents a resource that should be exposed on
the API server. Its name MUST be in the format <.spec.name>.<.spec.group>.
CRD定义了一种通过API server暴露的资源,它的命名必须符合 <.spec.name>.<.spec.group>. 的格式

官方文档

创建一个简单的自定义资源

使用crd资源创建自定义资源,即自定义一个Restful API

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

[root@k8smaster1 ~]# kubectl apply -f crd-staff.yaml
[root@k8smaster1 ~]# cat staff.yaml 
apiVersion: www.jovision.com/v1
kind: Staff
metadata:
  name: staff-one
spec:
  name: dfq
  age: 29

[root@k8smaster1 ~]# kubectl apply -f staff.yaml 
staff.www.jovision.com/staff-one created
[root@k8smaster1 ~]# kubectl get s
NAME        AGE
staff-one   4s
[root@k8smaster1 ~]# kubectl get crd | grep staff
staffs.www.jovision.com                                           2024-04-29T16:03:38Z

Operator

基于 K8s Operator 模式开发的应用程序具有全生命周期的自动化管理、可扩展性强和故障自愈等特点。

举报

相关推荐

0 条评论