一种基于Webhook技术实现容器资源定制调度和删除保护的方法技术

技术编号:33734129 阅读:15 留言:0更新日期:2022-06-08 21:30
本发明专利技术属于云计算技术领域,提供一种基于Webhook技术实现容器资源定制调度和删除保护的方法,通过本方法可以实现:自动化调度容器资源到指定节点创建,确保租户侧资源在创建时不会抢占管理侧资源;创建资源对象时给资源加保护注解;删除集群关键资源时,根据保护特性是否启用决定是否能删除资源从而实现资源删除保护,本发明专利技术的有益效果在于:实现容器资源定制调度,无需人为改动即可保护管理侧资源不会被租户侧资源占用;针对集群中关键资源进行删除保护,防止误删集群关键资源导致集群不可用;支持租户侧指定安装容器的节点,满足用户自定义调度。自定义调度。自定义调度。

【技术实现步骤摘要】
一种基于Webhook技术实现容器资源定制调度和删除保护的方法


[0001]本专利涉及云计算
,尤其涉及一种基于Webhook技术实现容器资源定制调度和删除保护的方法。

技术介绍

[0002]Kubernetes中提供了自定义资源类型和自定义控制器来扩展功能,还提供了动态准入控制,即通过Webhook来实现准入控制,分为两种:验证性质的准入Webhook(Validating Admission Webhook)和修改性质的准入Webhook(Mutating Admission Webhook)。Kubernetes中Webhook的调用原理为首先向Kubernetes集群中注册一个Admission Webhook(Validating/Mutating),当用户的请求到达Kubernetes Apiserver后,Apiserver根据MutatingWebhookConfiguration和ValidatingWebhookConfigurat ion的配置。先调用MutatingWebhookConfiguration去修改用户请求的配置文件,最后会调用ValidatingWebhookConfiguration来验证这个修改后的配置文件是否合法。当创建资源或删除资源的时候会调用配置的Webhook进行修改或验证,最后持久化到ETCD中。Admission Webhook是HTTP回调,接收Admission请求并做一些处理。Validating Webhook可以拒绝请求,但是却不能修改在准入请求中获取的对象,Mutating Webhook可以在返回准入响应之前通过创建补丁来修改对象,如果Webhook拒绝了一个请求,则会向用户返回错误。
[0003]随着自定义资源类型的广泛应用,集群中的资源类型变得五花八门,对于不熟悉集群资源的操作人员,存在容易误删集群关键资源导致集群挂掉的风险,所以需要一种资源删除保护机制来确保集群的安全性和稳定性。

技术实现思路

[0004]本专利技术的目的在于提供一种基于Webhook技术实现容器资源定制调度和删除保护的方法,以解决上述
技术介绍
中提出的问题。
[0005]为实现上述目的,本专利技术提供如下技术方案:
[0006]一种基于Webhook技术实现容器资源定制调度和删除保护的方法,所述容器资源定制调度和删除保护的方法设计了删除自定义云资源的保护机制,针对租户侧命名空间下的容器,支持创建时调度到指定节点上;
[0007]通过参数配置器设置参数供Webhook服务器使用;
[0008]在集群中创建受保护的资源时自动加一个受保护的注解(mutate方法),Mutating控制器在收到创建资源的请求时,自动给待创建资源加保护注解;
[0009]当收到租户侧命名空间下容器的创建请求时,自动添加节点选择器调度容器资源到指定节点创建;
[0010]当有了保护注解后,拒绝删除受保护资源(validate方法),Validating控制器在处理删除集群关键资源请求时,根据保护特性是否启用和有无保护注解来控制是否拒绝删
除请求;
[0011]容器资源定制调度和删除保护的方法包括以下步骤:
[0012]步骤一、配置Kubernetes集群支持Admission Webhook插件功能:
[0013]步骤二、部署Webhook server并启用Webhook的功能:
[0014]步骤三、使用Webhook的删除保护和定制调度功能。
[0015]优选的,所述自定义云资源包括:自定义虚机资源、自定义集群资源、自定义节点资源、自定义组件、自定义组件升级资源、自定义组件组、自定义组件升级组。
[0016]优选的,所述管理侧命名空间包括:搭建平台所必须的k8s集群,网络集群,存储集群,监控集群,openstack集群等重要集群的命名空间,非管理侧命名空间即为租户侧命名空间,支持配置管理侧命名空间到ManagedNameSpace。
[0017]优选的,所述针对租户侧命名空间下的DaemonSet、Deployment、ReplicaSet、Pod、StatefulSet、Job、CronJob资源创建时,把TenantNodeSelectors配置的值指定到对应资源的nodeselector字段。
[0018]优选的,步骤一所述配置Kubernetes集群支持Admission Webhook插件功能的过程包括:
[0019]S1:确保Kubernetes APIServer开启了MutatingAdmissionWebhook和ValidatingAdmissionWebhook,查看Apiserver的启动参数,存在如下配置即可:
[0020]‑‑
enable

admission

plugins=MutatingAdmissionWebhook,ValidatingAdmissionWebhook;
[0021]S2:检查集群中是否启用了准入注册API:
[0022]$kubectl api

versions|grep admission
[0023]admissionregistration.k8s.io/${version};
[0024]S3:创建RBAC,由于Webhook会对资源进行修改,所以需要单独创建一个ServiceAccount,在Kubernetes集群中直接创建即可;
[0025]S4:证书认证,Kubernetes集群默认是HTTPS通信,Apiserver调用Webhook的过程也是HTTPS,所以需要证书认证,证书认证相当于是给Service的域名进行认证,将Service域名放到认证请求server.csr文件中,然后创建一个K8S证书签署请求资源CertificateSigningRequest,APIServer签署该证书后生成server

cert.pem,再将最初创建的私钥server

key.pem和签署好的证书server

cert.pem放到Secret中供Deployment调用;
[0026]S5:创建service,上面的证书是给该Service的域名颁发的;
[0027]S6:部署Admission Deployment,ServiceAccount和Secret依次是上面两步创建的,挂载Secret存储的证书,镜像是我们编译产生的Admission镜像。
[0028]优选的,步骤二中所述部署Webhook Server并启用Webhook的功能的过程包括:
[0029]D1:确保Webhook服务已运行,可以接收来自Apiserver的请求;
[0030]D2:部署Validating Webhook,需配置Va本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于Webhook技术实现容器资源定制调度和删除保护的方法,其特征在于:所述容器资源定制调度和删除保护的方法设计了删除自定义云资源的保护机制,针对租户侧命名空间下的容器,支持创建时调度到指定节点上;通过参数配置器设置参数供Webhook服务器使用;在集群中创建受保护的资源时自动加一个受保护的注解(mutate方法),Mutating控制器在收到创建资源的请求时,自动给待创建资源加保护注解;当收到租户侧命名空间下容器的创建请求时,自动添加节点选择器调度容器资源到指定节点创建;当有了保护注解后,拒绝删除受保护资源(validate方法),Validating控制器在处理删除集群关键资源请求时,根据保护特性是否启用和有无保护注解来控制是否拒绝删除请求;容器资源定制调度和删除保护的方法包括以下步骤:步骤一、配置Kubernetes集群支持Admission Webhook插件功能:步骤二、部署Webhook server并启用Webhook的功能:步骤三、使用Webhook的删除保护和定制调度功能。2.根据权利要求1所述的一种基于Webhook技术实现容器资源定制调度和删除保护的方法,其特征在于:所述自定义云资源包括:自定义虚机资源、自定义集群资源、自定义节点资源、自定义组件、自定义组件升级资源、自定义组件组、自定义组件升级组。3.根据权利要求1所述的一种基于Webhook技术实现容器资源定制调度和删除保护的方法,其特征在于:所述管理侧命名空间包括:搭建平台所必须的k8s集群,网络集群,存储集群,监控集群,openstack集群等重要集群的命名空间,非管理侧命名空间即为租户侧命名空间,支持配置管理侧命名空间到ManagedNameSpace。4.根据权利要求1所述的一种基于Webhook技术实现容器资源定制调度和删除保护的方法,其特征在于:所述针对租户侧命名空间下的DaemonSet、Deployment、ReplicaSet、Pod、StatefulSet、Job、CronJob资源创建时,把TenantNodeSelectors配置的值指定到对应资源的nodeselector字段。5.根据权利要求1所述的一种基于Webhook技术实现容器资源定制调度和删除保护的方法,其特征在于:步骤一所述配置Kubernetes集群支持Admission Webhook插件功能的过程包括:S1:确保Kubernetes APIServer开启了MutatingAdmissionWebhook和ValidatingAdmissionWebhook,查看Apiserver的启动参数,存在如下配置即可:
‑‑
enable

admission

plugins=MutatingAdmissionWebhook,ValidatingAdmissionWebhook;S2:检查集群中是否启用了准入注册API:$kubectl api

versions|grep admissionadmissionregistration.k8s.io/${version};S3:创建RBAC,由于Webhook会对资源进行修改,所以需要单独创建一个ServiceAccount,在Kubernetes集群中直接创建即可;S4:证书认证,Kubernetes集群默认是HTTPS通信,Apiserver调用Webhook的过程也是
HTTPS,所以需要证书认证,证书认证相当于是给Service的域名进行认证,将Service域名放到认证请求server.csr文件中,然后创建一个K8S证书签署请求资源CertificateSigningRequest,APIServer签署该证书后生成server

cert.pem,再将最初创建的私钥server

key.pem和签署好的证书server

cert.pem放到Secret中供Deployment调用;S5:创建service,上面的证书是给该Service的域名颁发的;S6:部署Admission Deployment,ServiceAccount和Secret依次是上面...

【专利技术属性】
技术研发人员:王艳艳蔡卫卫高传集王文岗石光银
申请(专利权)人:浪潮云信息技术股份公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1