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官方定义

Operator的作用

  • 数据库集群,像 etcd、Mysql、PostgreSQL、Redis、Cassandra 等很多主流数据库应用对应的 Operator 项目,这些 Operator 的推出有效的简化了数据库应用在 Kubernetes 集群上的部署和运维工作.
  • 在监控方向,CoreOS 开发的 prometheus-operator 早日成为社区里的明星项目,Jaeger、FluentD、Grafana 等主流监控应用也或由官方或由开发者迅速推出相应的 Operator 并持续演进.
  • 在安全领域,Aqua、Twistlock、Sisdig 等各大容器安全厂商也不甘落后,通过 Operator 的形式简化了相对门槛较高的容器安全应用配置.
  • 另外社区中像 cert-manager、vault-operator 这些热门项目也在很多生产环境上得到了广泛应用。

operator 在很短的时间就成为了分布式应用在 Kubernetes 集群中部署的事实标准.
Operator 实例会根据配置创建所需的业务应用,OLM 和 Operator Metering 等组件可以帮助用户完成业务应用对应的运维和监控采集等管理操作。
K8s 的生态确实非常强大。通过像 Kubebuilder 这样的工具和框架,可以只写非常少的代码就完成 API 后台的开发

kubebuilder教程
operator

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

使用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 模式开发的应用程序具有全生命周期的自动化管理、可扩展性强和故障自愈等特点。

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值