k8s&&CRD
- 概念
- 创建一个简单的自定义资源
- Operator
概念
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: trueschema:openAPIV3Schema:type: objectproperties:spec:type: objectproperties:name:type: stringage:type: integer# 可以是 Namespaced 或 Clusterscope: Namespacednames:# 名称的复数形式,用于 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: dfqage: 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 模式开发的应用程序具有全生命周期的自动化管理、可扩展性强和故障自愈等特点。