当前位置: 首页> 教育> 大学 > 网站设计一般是什么专业_云服务器便宜_网络舆情案例分析_裂变营销五种模式十六种方法

网站设计一般是什么专业_云服务器便宜_网络舆情案例分析_裂变营销五种模式十六种方法

时间:2025/7/11 8:17:22来源:https://blog.csdn.net/fzw1030/article/details/142639109 浏览次数:0次
网站设计一般是什么专业_云服务器便宜_网络舆情案例分析_裂变营销五种模式十六种方法

目录

一、简介

二、CRD

1.CRD介绍

2.CRD工作流程

三、Custom Controller

1.Custom Controller介绍

2.Custom Controller工作流程

四、示例

1.创建CR

2.配置权限RBAC

3.创建Custom Controller

3.1 Go项目初始化

3.2 main.go编写

3.3 构建镜像

3.4 部署Controller

4.测试CR和控制器

五、Kubebuilder示例

1.初始化项目

2.创建API和控制器        

3. 定义MyApp资源

4.生成CRD和代码 

5.实现控制器逻辑

6.部署控制器到集群

7.创建并测试MyApp资源


一、简介

        在Kubernetes中,有很多资源类型(例如Pod、Servie),这些资源是通过各种控制器来实现特定的功能(例如DeploymentController、ServiceController)。默认的功能可能不完全满足实际的需求(例如数据库集群的创建、扩缩容、备份、恢复等操作),所以,Kubernetes提供了让用户自定义资源和控制器的功能,借助这些功能,我们可以扩展Kubernetes的能力,实现类似原生资源的管理。

二、CRD

1.CRD介绍

        Custom Resource Definition(CRD)是Kubernetes中的一种API扩展机制。通过CRD,用户可以定义Kubernetes之前不存在的资源类型,并将其注册到Kubernetes API Server中,从而使其像Pod、Service这样的原生资源一样被管理和操作,当然也可以用kubectl进行管理。

        Custom Resource(CR)是由CRD定义出来的实际资源对象。CRD定义了CR的结构和行为,CR则是具体的数据实例。

2.CRD工作流程

        创建一个CustomResourceDefinition对象。

        Kubernetes API Server自动注册并开始处理这个新的API类型。

        用户可以使用这个新类型进行CRUD(创建、读取、更新、删除)操作,和内建的Kubernetes资源一样。

三、Custom Controller

1.Custom Controller介绍

        Kubernetes中的控制器是用来监控资源状态并确保集群最终状态符合声明的期望状态。对于自定义资源,Kubernetes不会自动为其提供内建的控制器,因此我们需要编写Custom Controller来管理这些自定义资源的状态。

2.Custom Controller工作流程

        监控一个或多个资源的事件(例如创建、更新、删除等)。

        根据事件更新资源的状态,或者执行一些操作以将资源状态调节到期望状态。

        控制器持续监控资源,确保状态始终如期望一致。

四、示例

        现在假设我们要创建一个自定义资源MyApp,并通过自定义控制器来管理它的副本数。

1.创建CR

        编写一个myapp-crd.yaml文件,用于定义自定义资源MyApp:

apiVersion: apiextensions.k8s.io/v1  #api
kind: CustomResourceDefinition   #CRD定义
metadata:name: myapps.example.com
spec:group: example.com       #自定义的apiversions:- name: v1served: truestorage: trueschema:openAPIV3Schema:type: objectproperties:spec:type: objectproperties:replicas:type: integerstatus:type: objectproperties:availableReplicas:type: integerscope: Namespaced       #定制资源作用范围names:plural: myapps       #复数形式,操作定制资源时使用这个名称singular: myapp      #单数形式,操作定制资源时也可以使用这个名称kind: MyApp          #创建定制资源时使用这个名称shortNames:          - ma               #缩写形式,操作定制资源时也可以使用这个名称

        将此文件应用到 Kubernetes 集群中:

kubectl apply -f myapp-crd.yaml 

#检查是否存在该crd

kubectl get crd myapps.example.com

        到这里我们创建了一个MyApp类型的新API资源,可以用这个资源类型创建、更新和删除自定义的MyApp对象。 

2.配置权限RBAC

        控制器需要有权限访问Kubernetes资源(如自定义资源MyApp和原生的Deployment),因此需要为它设置适当的角色和权限。

        创建一个rbac.yaml文件,定义ServiceAccountRoleRoleBinding

apiVersion: v1
kind: ServiceAccount
metadata:name: myapp-controllernamespace: default---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:namespace: defaultname: myapp-controller-role
rules:
- apiGroups: [""]resources: ["pods", "services"]verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
- apiGroups: ["apps"]resources: ["deployments"]verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
- apiGroups: ["example.com"]resources: ["myapps"]verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:name: myapp-controller-rolebindingnamespace: default
roleRef:apiGroup: rbac.authorization.k8s.iokind: Rolename: myapp-controller-role
subjects:
- kind: ServiceAccountname: myapp-controllernamespace: default

        应用这些RBAC资源:

kubectl apply -f rb

关键字:网站设计一般是什么专业_云服务器便宜_网络舆情案例分析_裂变营销五种模式十六种方法

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: