目录
Operator设计理念
Operator是使用自定义资源(CR, Custom Resource,是CRD的实例),管理应用及其组件的自定义k8控制器。高级配置和设置由用户在CR中提供。k8 Operator基于嵌入在operator逻辑中的最佳实践将高级指令转化为低级操作。k8 Operator监视CR类型并采取特定于应用的操作,确保当前状态与该资源的理想状态相符。
GVK
GVK: Group, Version, Kind
Group: 表示一些相关功能的集合,如果在apps这个group中就包含了deployments, replicasets, statefulset等。在operator中, group是高级功能的集合,譬如一整个nginx应用和服务,这时候把我们就可以将group定义为nginx-app。
Version: 就是版本。v1, v2, betav1等。通常不同的版本实现了不同的功能和变化。
Kind: K8中我们经常提到resources,pod, service这些都是资源, 同时如果你查看这些资源对应的定义文件(如opeshift pod的例子),可以看到第二行就是Kind: Pod。所以,简单的理解,Kind就是资源的抽象类,而resource就是其的实例。
CRD
CRD: Custom Resource Definiation
K8认识dc, bc, pod, deployment等低级别的基础Kind, 当你告诉它nginx-app时,它就不认识。我们定义一个CRD,就是让k8认识ngix-app这种高级别Kind。我们通过的组合和变化低级别的Kind来实现我们高级别Kind的定义。
CR
CR: Custom Resource
CRD Kind的一个实例,就像一个实际的pod是Pod Kind的实例。
总结
懂了这些概念,我们会看operator设计理念,就可以明白kubebuilder的功能:
帮助我们设计CRD,和它相关的高级操作,管理我们的CR到达预期状态。