
Kubernetes Pod中断预算【PDB】
尽管Deployment或ReplicaSet一类的控制器能够确保相应Pod对象的副本数量不断逼近期望的数量,但它却无法保证在某一时刻一定会纯在指定数量或比例的Pod对象,然而这种需求在某些强调发我可用性的场景中却是必备的。于是,Kubernetes自从1.4版本开始引入Pod中断预算(PodDisruptionBudget,简称PDB)类型的资源,用于为那些自愿的(Voluntary)中断做好预算方案(Budget),限制可自愿中断的最大Pod副本数或确保最少可用的Pod副本数,以确保服务的高可用性。
Pod中断预算
中断介绍
- 非自愿中断指是由那些不可控因数导致Pod中断退出操作,例如,硬件或系统内核故障、网络故障以及节点资源不足导致Pod对象被驱逐等;
- 自愿中断是指由用户特地执行的管理操作导致Pod中断则称为”自愿中断”,例如人为删除Pod对象….
PDB支持与属性
支持的控制器类型包括Deployment、ReplicaSet和StatefulSet等。同时,PDB对象也可以保护那些纯粹由定制的标签选择器自由选择的Pod对象。
定义的属性字段如下:
- selector : 当前PDB对象使用的标签选择器,一般是与相关的Pod控制器使用同一个选择器。
- minAvailable :Pod自愿中断的场景中,至少要保证的Pod对象数量或比例,要阻止任何Pod对象发生自愿中断中断,可将其设置为100%
- maxUnavailable :Pod自愿中断的场景中,最多可转换为不可用状态的Pod对象数量或比例,0值意味着不允许Pod对象进行自愿中断.
示例运行
这里我们举例:指定Pod标签为app: myapp,要求其最少可用的Pod对象数量为2个
apiVersion: policy/v1beta1
kind: PodDisruptionBudget
metadata:
name: myapp-pdb
spec:
minAvailable: 2
selector:
matchLabels:
app: myapp
查看PDB资源对象的命令
kubectl get pdb
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739

