自愿性中断指管理员或自动化流程主动触发的操作,如节点排空、升级或滚动更新,PDB通过设定minAvailable或maxUnavailable来限制此类操作中可中断的Pod数量,确保服务最低可用性,但不防护节点故障等非自愿中断。

Kubernetes 的 Pod 中断预算(Pod Disruption Budget,简称 PDB)用于确保在自愿性中断(如节点维护、集群升级或滚动更新)期间,应用仍能保持足够的可用副本数。它的核心作用是防止应用因人为操作导致服务不可用。
什么是自愿性中断?
自愿性中断是指由管理员或自动化流程主动触发的操作,比如:
使用 kubectl drain 排空节点进行维护 执行节点升级或重启 应用 Deployment 的滚动更新
这些操作可能会删除 Pod,而 PDB 能控制在此类场景下,最多允许多少 Pod 被同时中断。
Pod 中断预算如何工作?
PDB 通过设置一个最小可用 Pod 数量或最大允许不可用数量,来限制控制器(如 Deployment、StatefulSet)在中断期间可以删除的 Pod 数量。
当执行如 kubectl drain 这类操作时,驱逐 API 会检查对应工作负载是否配置了 PDB。如果有,调度器会验证驱逐后是否仍能满足 PDB 的约束。如果不满足,该操作会被拒绝或暂停。
例如,假设你有一个 5 个副本的应用,设置 PDB 要求至少 3 个 Pod 可用:
最多允许 2 个 Pod 被中断 在节点排空时,系统只会批准不影响最低可用性的驱逐请求
如何配置 PDB?
PDB 通过 YAML 定义,关键字段包括 minAvailable 或 maxUnavailable,二者选其一:
示例 1:保证至少 3 个 Pod 可用
apiVersion: policy/v1kind: PodDisruptionBudgetmetadata: name: my-pdbspec: minAvailable: 3 selector: matchLabels: app: my-app
示例 2:最多允许 1 个 Pod 不可用(适用于 3 副本)
spec: maxUnavailable: 1 selector: matchLabels: app: my-app
selector 用于匹配受保护的 Pod,通常与 Deployment 的标签一致。
非自愿中断不受 PDB 保护
需要注意的是,PDB 只对自愿性中断有效。如果是节点崩溃、网络故障或 kubelet 崩溃等非自愿中断,PDB 不起作用。这类情况需要依赖副本机制和健康检查来恢复服务。
基本上就这些。PDB 是保障运维操作期间服务稳定的关键机制,合理配置能避免误操作引发的服务雪崩。
以上就是什么是 Kubernetes 的 Pod 中断预算如何工作?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1440708.html
微信扫一扫
支付宝扫一扫