一种k8s中的种KS中容器保护预算ppb方法
技术领域
1.本发明涉及计算机技术领域,具体为一种k8s中的器保容器保护预算ppb方法。
背景技术:
2.现有技术中,护预目前k8s自身提供的流程pod disruption budget(以下简称为pdb)控制器是在eviction api进行的拦截操作,所以pdb只能拦截pod eviction的种KS中驱逐操作,例如kubectl drain操作。器保
3.而对于其他的护预自愿中断的操作,比如pod的流程delete操作,deployment的种KS中delete操作,以及同时进行的器保原地升级和node所容操作等,pdb无法进行拦截操作,护预故pdb对pod的流程保护作用比较局限,无法拦截用户误删的种KS中操作,在存在用户误删时,器保无法保证集群的护预高可用性。
技术实现要素:
4.本发明的目的在于提供一种k8s中的容器保护预算ppb方法,以解决上述背景技术中提出的问题。
5.为实现上述目的,本发明提供如下技术方案:一种k8s中的容器保护预算ppb方法,所述方法包括以下步骤:
6.当客户端产生的自愿中断请求传递到apiserver中时,通过admissionwebhook的ppbwebhook,在ppb的webhook中通过分析当前的自愿中断操作,得到当前操作执行后是否会影响集群中ppb所设置的pod数量,如果满足,则进行后续操作,如果不满足,则拒绝客户端的此操作;
7.pod对应的ppbcontroller监听pod与ppb的资源变化,并将当前集群中资源的信息保存在全局变量中。
8.优选的,还包括crd数据结构,crd的组成properties字段包括:maxunavailable、minavailable以及selector;
9.maxunavailable为pod最大不可用数量,意为最多有多少pod不可用,类型为int,或者string,取值为正整数以及百分比,取值百分比时意为不可用的pod数量不能低于设置的占所有需要保护的pod数量的百分比,此值与minavailable不可同时使用;
10.minavailable为pod最小可用数量,意为最少有多少pod可用,类型为int,或者string,取值为正整数以及百分比,取值百分比时意为可用的pod数量不能低于设置的占所有需要保护的pod数量的百分比,此值与maxunavailable不可同时使用;
11.selector从k8s集群中选择出需要被保护的pod。
12.优选的,crd的组成status字段包括currentavailable、desiredavailable、totalreplicas以及unavailableallowed;
13.currentavailable为当前可用的pod数量;
14.desiredavailable为最少需要的pod的数量;
15.totalreplicas为ppb的总副本数;
16.unavailableallowed为ppb所允许的不可用的pod数量。
17.优选的,ppbcontroller监听包括:
18.在k8s集群部署时创建一个ppb的对象,对象在add到k8s的manager上时,增加对pod,deployment资源的watch,在被watch资源存在变化时,k8s给ppb的对象推送变化消息,ppb对象感知到变化,从而作出对应的改变。
19.优选的,还包括webhook检测,具体为:
20.在增加ppb对应的webhook后,当集群中存在针对pod,deployment的更新以及删除的操作时,ppb的webhook感知到,由k8s调用webhook的handle方法,handle方法调用pod的validate方法进行验证,验证当前操作是否被允许,如果当前操作不被允许,意为如果当前操作执行后,影响集群的稳定性,pod数量无法达到初始约定的数量,则拒绝当前操作;如果当前操作被允许,则执行当前的变更操作。
21.优选的,还包括pod数量实时维护,具体为:
22.当ppb对象接收到pod数量产生变化时,修改维护的pod的副本数量,将当前集群中对应的pod数量写入,实时提供给ppb的webhook检查操作时使用;包括maxunavailable,minavailable,currentavailable,desiredavailable,totalreplicas,unavailableallowed参数;描述当前集群中被ppb监控的资源数量信息。
23.优选的,还包括pod数量计算,具体为:
24.获取集群中针对此ppb设置的pod的maxunavailable或minavailable,根据minavailable或maxunavailable的值与集群中此类pod的数量计算得出具体的currentavailable,desiredavailable,totalreplicas,unavailableallowed参数。
25.与现有技术相比,本发明的有益效果是:
26.本发明提出的k8s中的容器保护预算ppb方法,通过对k8s的adimission webhook的操作,在k8s的api server中检查用户对于存在特殊标签的pod、deployment、statefulset等资源的操作,计算用户对于此类资源设置的最大不可用比例及最小可用比例,来阻止用户的一些由自愿中断产生的不当的删除、升级、驱逐操作,从而保证应用的高可用。
附图说明
27.图1为本发明方法流程图。
具体实施方式
28.为了使本发明的目的、技术方案进行清楚、完整地描述,及优点更加清楚明白,以下结合附图对本发明实施例进行进一步详细说明。应当理解,此处所描述的具体实施例是本发明一部分实施例,而不是全部的实施例,仅仅用以解释本发明实施例,并不用于限定本发明实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
29.请参阅图1,本发明提供一种技术方案:一种k8s中的容器保护预算ppb方法,所述方法包括以下步骤:
30.通过对k8s的adimission webhook的操作,检查用户对于存在特殊标签的pod、deployment、statefulset等资源的操作,计算用户对于此类资源设置的最大不可用比例及最小可用比例,来阻止用户的一些不当的删除、升级、驱逐操作,从而保证应用的高可用。
31.通过对想要进行保护的资源进行标签识别,在用户的操作请求到达k8s的api server后,执行对应的操作前,进行操作的验证,如果当前用户操作的资源的状态或者副本书不符合用户的期望值,则阻止用户的此操作,从而达到保护集群的目的,提高集群的高可用性。
32.如附图1所示,该方法的实现原理图如下:
33.当客户端产生的自愿中断请求传递到api server中时,首先通过admission webhook的ppb webhook,在ppb的webhook中通过分析当前的自愿中断操作,得到当前操作执行后是否会影响集群中ppb所设置的pod数量,如果满足,则进行后续操作,如果不满足,则拒绝客户端的此操作。
34.pod对应的ppb controller会监听pod与ppb的资源变化,并将当前集群中资源的信息保存在全局变量中。
35.该方法的主要crd结构组成如下:
36.crd的组成properties字段包括
37.1)maxunavailable
38.maxunavailable为pod最大不可用数量,意为最多有多少pod不可用,类型为int,或者string,可以取值为正整数以及百分比。取值百分比时意为不可用的pod数量不能低于设置的占所有需要保护的pod数量的百分比。此值与minavailable不可同时使用。
39.2)minavailable:
40.minavailable为pod最小可用数量,意为最少有多少pod可用,类型为int,或者string,可以取值为正整数以及百分比。取值百分比时意为可用的pod数量不能低于设置的占所有需要保护的pod数量的百分比。此值与maxunavailable不可同时使用。
41.3)selector
42.选择器,此字段与k8s中的选择器功能相同,其作用为从k8s集群中选择出需要被保护的pod。
43.crd的组成status字段包括
44.1)currentavailable
45.currentavailable为当前可用的pod数量。
46.2)desiredavailable
47.desiredavailable为最少需要的pod的数量。
48.3)totalreplicas
49.totalreplicas为此ppb的总副本数。
50.4)unavailableallowed
51.unavailableallowed为此ppb所允许的不可用的pod数量。
52.该方法的ppb监听功能如下:
53.在k8s集群部署时创建一个ppb的对象,此对象在add到k8s的manager上时,增加对pod,deployment等资源的watch,在被watch资源存在变化时,k8s会给ppb的对象推送变化
消息,ppb对象即可感知到其变化,从而作出对应的改变。
54.该方法的webhook检测功能如下:
55.在增加ppb对应的webhook后,当集群中存在针对pod,deployment的更新以及删除的操作时,ppb的webhook会感知到,由k8s调用webhook的handle方法,handle方法会调用pod的validate方法进行验证,验证当前操作是否被允许,如果当前操作不被允许(意为如果当前操作执行后,会影响集群的稳定性,pod数量无法达到初始约定的数量)则会拒绝当前操作。如果当前操作被允许,则执行当前的变更操作。
56.该方法的pod数量实时维护方式如下:
57.当ppb对象接收到pod数量产生变化时,修改其维护的pod的副本数量,将当前集群中对应的pod数量写入其中。实时提供给ppb的webhook检查操作时使用。其中包括maxunavailable,minavailable,currentavailable,desiredavailable,totalreplicas,unavailableallowed等参数。描述当前集群中被ppb监控的资源数量信息。
58.该方法的pod数量计算方式如下:
59.首先获取集群中针对此ppb设置的pod的maxunavailable或minavailable,然后根据minavailable或maxunavailable的值与集群中此类pod的数量计算得出具体的currentavailable,desiredavailable,totalreplicas,unavailableallowed等参数。
60.尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。