0

0

什么是 Kubernetes 的 PodDisruptionBudget?

煙雲

煙雲

发布时间:2025-10-04 10:10:02

|

794人浏览过

|

来源于php中文网

原创

PodDisruptionBudget(PDB)用于保障应用在节点维护或升级时的可用性,通过限制主动驱逐的Pod数量避免服务中断。它针对自愿性干扰如kubectl drain生效,支持minAvailable或maxUnavailable二选一配置,确保至少有指定数量的Pod运行。例如设置minAvailable: 2可保证3副本服务中至少2个在线。适用于Deployment、StatefulSet等控制器管理的工作负载,尤其核心微服务和有状态应用。但不防护节点宕机等非自愿中断,且过度严格的PDB可能阻碍正常维护。合理配置能有效提升系统稳定性。

什么是 kubernetes 的 poddisruptionbudget?

Kubernetes 的 PodDisruptionBudget(PDB)是一种资源对象,用来保障应用在节点维护或集群升级等场景下,仍然能保持一定的可用性。它通过限制在同一时间因主动干扰(如驱逐 Pod)而不可用的副本数量,确保服务不会完全中断。

PodDisruptionBudget 的作用

PDB 主要用于控制自愿性干扰对工作负载的影响。所谓“自愿性干扰”,是指人为触发的操作,比如节点排空(kubectl drain)、滚动更新、节点升级或缩容等。Kubernetes 在执行这些操作时会检查 PDB 规则,避免一次性驱逐过多 Pod 导致服务不可用。

例如,如果你运行一个 3 副本的 Web 服务,设置 PDB 保证至少有 2 个 Pod 始终运行,那么系统在排空节点时就不会让同时超过 1 个 Pod 被驱逐。

如何配置 PodDisruptionBudget

PDB 通过两个关键字段来定义可用性约束:

  • minAvailable:表示最小可用的 Pod 数量或百分比。例如设为 2,代表至少要有 2 个 Pod 处于运行状态。
  • maxUnavailable:表示最多允许不可用的 Pod 数量或百分比。例如设为 1,代表最多只能有 1 个 Pod 被驱逐。

这两个字段不能同时存在,只能设置其中一个。下面是一个示例:

手机在线人工冲值
手机在线人工冲值

说明:我不知道这个系统还能用到什么地方!他的运作方式是这样的,客户在其他地方比如掏宝购买了 你得卡,然后在你的网站进行冲值,你得有人登陆并看着后台,如果有人冲值,就会刷出记录,手工冲值完毕后,你得点击 [冲值完毕],客户的页面 就会返回 冲值信息!安装:上传所有文件,倒入(sql.txt)mysql数据库,使用myphpadminphplib 777phplib/sys.php 777phplib

下载
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
  name: my-app-pdb
spec:
  minAvailable: 2
  selector:
    matchLabels:
      app: my-app

这个配置表示:所有标签为 app: my-app 的 Pod,在任意干扰操作中必须至少保持 2 个可用。

适用场景与注意事项

PDB 特别适用于需要高可用保障的有状态服务或核心微服务。但在使用时要注意几点:

  • 如果设置过于严格(如要求全部副本都必须在线),可能导致节点无法正常排空,影响维护操作。
  • PDB 不防护非自愿性中断,比如节点宕机、网络故障或 kubelet 崩溃等。
  • 配合 Deployment、StatefulSet 等控制器使用效果最佳,直接管理单个 Pod 时不生效。

基本上就这些。合理配置 PodDisruptionBudget 可以在运维操作中有效降低服务中断风险,提升系统的稳定性。

相关专题

更多
Golang云原生微服务Kubernetes_Golang怎么集成Kubernetes开发云原生服务
Golang云原生微服务Kubernetes_Golang怎么集成Kubernetes开发云原生服务

Golang云原生微服务Kubernetes (K8s) 是指 使用 Go 语言(Golang)编写的云原生微服务,并利用 Kubernetes 平台进行容器化部署、自动化管理、弹性伸缩和高效编排的一整套现代应用架构方案。

24

2025.12.22

Golang云原生微服务Kubernetes_Golang怎么集成Kubernetes开发云原生服务
Golang云原生微服务Kubernetes_Golang怎么集成Kubernetes开发云原生服务

Golang云原生微服务Kubernetes (K8s) 是指 使用 Go 语言(Golang)编写的云原生微服务,并利用 Kubernetes 平台进行容器化部署、自动化管理、弹性伸缩和高效编排的一整套现代应用架构方案。

24

2025.12.22

Java JVM 原理与性能调优实战
Java JVM 原理与性能调优实战

本专题系统讲解 Java 虚拟机(JVM)的核心工作原理与性能调优方法,包括 JVM 内存结构、对象创建与回收流程、垃圾回收器(Serial、CMS、G1、ZGC)对比分析、常见内存泄漏与性能瓶颈排查,以及 JVM 参数调优与监控工具(jstat、jmap、jvisualvm)的实战使用。通过真实案例,帮助学习者掌握 Java 应用在生产环境中的性能分析与优化能力。

19

2026.01.20

PS使用蒙版相关教程
PS使用蒙版相关教程

本专题整合了ps使用蒙版相关教程,阅读专题下面的文章了解更多详细内容。

61

2026.01.19

java用途介绍
java用途介绍

本专题整合了java用途功能相关介绍,阅读专题下面的文章了解更多详细内容。

87

2026.01.19

java输出数组相关教程
java输出数组相关教程

本专题整合了java输出数组相关教程,阅读专题下面的文章了解更多详细内容。

39

2026.01.19

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

10

2026.01.19

xml格式相关教程
xml格式相关教程

本专题整合了xml格式相关教程汇总,阅读专题下面的文章了解更多详细内容。

13

2026.01.19

PHP WebSocket 实时通信开发
PHP WebSocket 实时通信开发

本专题系统讲解 PHP 在实时通信与长连接场景中的应用实践,涵盖 WebSocket 协议原理、服务端连接管理、消息推送机制、心跳检测、断线重连以及与前端的实时交互实现。通过聊天系统、实时通知等案例,帮助开发者掌握 使用 PHP 构建实时通信与推送服务的完整开发流程,适用于即时消息与高互动性应用场景。

19

2026.01.19

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Java 教程
Java 教程

共578课时 | 48.4万人学习

国外Web开发全栈课程全集
国外Web开发全栈课程全集

共12课时 | 1.0万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号