CustomResourceDefinition
CustomResourceDefinition(CRD)是 无需改变代码就可以扩展 Kubernetes API 的机制,用来管理自定义对象。
CustomResourceDefinition demo
apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata: # name must match the spec fields below, and be in the form: <plural>.<group> name: crontabs.stable.example.com spec: # group name to use for REST API: /apis/<group>/<version> group: stable.example.com # version name to use for REST API: /apis/<group>/<version> version: v1 # either Namespaced or Cluster scope: Namespaced names: # plural name to be used in the URL: /apis/<group>/<version>/<plural> plural: crontabs # singular name to be used as an alias on the CLI and for display singular: crontab # kind is normally the CamelCased singular type. Your resource manifests use this. kind: CronTab # shortNames allow shorter string to match your resource on the CLI shortNames: - ct
crd.metadata.name: 代表crd name, 必须是 {plural}.{group}
crd.spec.group: 代表 group name ,提供给 REST API : /apis/{group}/{version}
crd.spec.version : 代表group version, 提供给 REST API : /apis/{group}/{version}
crd.spec.scope: 有着Namespaced 与 Cluster 两种类型, 代表要创建的第三方资源是从属于namespace 还是全局的
crd.spec.names.plural: 代表复数 name ,提供给REST API : /apis/{group}/{version}/plural
crd.spec.names.singular: 代表单数 name ,用于 kubectl 别名显示
crd.spec.names.kind : 代表资源类型
crd.spec.shortNames[]: 代表缩写,用于kubectl 使用
CRD 的创建,kube-apiserver 会监控到,生成REST API,提供用户创建资源对象,kubectl 也会监控到,纳入命令显示