作者介绍:简历上没有一个精通的运维工程师。下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

我们上一章介绍了Docker基本情况,目前在规模较大的容器集群基本都是Kubernetes,但是Kubernetes涉及的东西和概念确实是太多了,而且随着版本迭代功能在还增加,笔者有些功能也确实没用过,所以只能按照我自己的理解来讲解。
我们前面讲的各种工作负载,存储,安全配置类都是属于Kubernetes集群提供给我们的内置概念,一般的需求都是可以满足的,但是对于一些复杂的自定义需求就无法满足,所以Kubernetes给我们提供了一个接口,让我们可以自定义资源,并且统一纳入Kuberntes进行管理。实际上我们讲解的部分资源已经包含了CRD信息在里面。
CRD(Custom Resource Definition)是Kubernetes中的一个重要特性,它允许用户自定义资源类型,扩展Kubernetes的API。通过CRD,用户可以定义自己的资源对象,就像Pod、Service等内置资源一样,可以被创建、删除、查看和管理。
apiextensions.k8s.io/v1。CustomResourceDefinition。kubectl apply -f <crd-file>.yaml命令创建CRD。以下是一个简单的CRD定义示例:Foo的自定义资源,属于example.com组,可以在命名空间内创建和管理。
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: foos.example.com
spec:
group: example.com
versions:
- name: v1
served: true
storage: true
schema:
openAPIV3Schema:
type: object
properties:
spec:
type: object
properties:
foo:
type: string
status:
type: object
properties:
state:
type: string
scope: Namespaced
names:
plural: foos
singular: foo
kind: Foo
shortNames:
- foo
这个概念相对比较抽象,简单来理解就是把自己定义的东西注册到Kubernetes集群里面。