k8s~Kubernetes PDB
在Kubernetes(k8s)中,PodDisruptionBudget(PDB)是一种资源对象,用于限制在自愿中断(voluntary disruptions)期间同时终止的Pod数量,从而保障应用的可用性。以下是详细说明:我们为Deployment配置了PDB(PodDisruptionBudget),目的是在自愿中断(如节点维护、升级)时,保证一定数量的Pod副本可用。但是,PDB并不影响非自愿中断(如节点故障、资源不足导致的驱逐)。因此,测试PDB功能是否生效,我们需要模拟自愿中断的场景。
PodDisruptionBudget 的作用
[*]核心目标
[*]确保在主动运维操作(如节点排水、集群升级、自动缩容等)时,应用始终有指定数量的Pod保持运行。
[*]防止因同时终止过多Pod导致服务不可用。
[*]适用场景
[*]节点维护(kubectl drain)
[*]集群自动扩缩容(如Cluster Autoscaler)
[*]控制器(如Deployment)的滚动更新不适用(PDB仅针对非控制器触发的终止)。
[*]关键字段 spec.minAvailable
[*]定义:指定必须保持可用的Pod的最小数量(或百分比)。
[*]示例:spec:
minAvailable: 2# 绝对数值
# 或
minAvailable: "50%"# 百分比形式
[*]行为:当用户或系统尝试终止Pod时,Kubernetes会确保至少minAvailable个Pod处于运行状态。如果违反此约束,操作会被拒绝。
[*]其他相关字段
[*]maxUnavailable(与minAvailable二选一):允许不可用的Pod的最大数量(或百分比)。spec:
maxUnavailable: 1# 最多允许1个Pod不可用
使用注意事项
[*]选择器(Selector)
PDB通过selector匹配Pod,需确保与目标Pod的标签一致:selector:
matchLabels:
app: my-app
注意:deployment中的选择器也是这个,它们是一个的,上面的my-app并不是deployment的name
spec:
selector:
matchLabels:
app: my-app
[*]与控制器协作
[*]PDB不控制Pod的创建/删除,需配合Deployment、StatefulSet等使用。
[*]例如:设置minAvailable: 1确保Deployment的Pod至少有一个始终可用。
[*]资源冲突
[*]若minAvailable值过大(如超过副本数),可能导致节点无法排水(需手动调整)。
[*]非自愿中断
[*]PDB仅对自愿中断生效(如节点排水)。硬件故障、OOM Kill等非自愿中断不受PDB约束。
示例配置
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
name: my-app-pdb
spec:
minAvailable: "50%"# 至少50%的Pod保持可用
selector:
matchLabels:
app: hello
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-deployment
spec:
replicas: 3
selector:
matchLabels:
deployment: hello# ← 查找标签为deployment=hello的Pod
template:
metadata:
labels:
deployment: hello# ← 创建Pod时给它打上deployment=hello标签
spec:
containers:
- name: nginx
image: nginx:1.14.2总结
[*]minAvailable:是PDB的核心字段,直接定义应用的高可用底线。
[*]适用性:适合有状态服务或对可用性敏感的无状态服务。
[*]平衡:需根据业务需求在“可维护性”和“可用性”之间权衡(如设置过高可能导致维护困难)。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! 用心讨论,共获提升! 懂技术并乐意极积无私分享的人越来越少。珍惜 感谢分享,学习下。 谢谢分享,试用一下 谢谢楼主提供! 喜欢鼓捣这些软件,现在用得少,谢谢分享! 不错,里面软件多更新就更好了 谢谢分享,辛苦了 前排留名,哈哈哈 懂技术并乐意极积无私分享的人越来越少。珍惜 东西不错很实用谢谢分享 这个好,看起来很实用 感谢分享,学习下。 鼓励转贴优秀软件安全工具和文档! 前排留名,哈哈哈 感谢分享,下载保存了,貌似很强大 这个好,看起来很实用 谢谢分享,辛苦了 前排留名,哈哈哈
页:
[1]
2