7.5. 设置 Pod Disruption 预算


pod 中断预算Kubernetes API 的一部分,可以像其他对象类型一样通过 oc 命令进行管理。它们允许在操作过程中指定 pod 的安全约束,比如为维护而清空节点。

PodDisruptionBudget 是一个 API 对象,用于指定在某一时间必须保持在线的副本的最小数量或百分比。在项目中进行这些设置对节点维护(比如缩减集群或升级集群)有益,而且仅在自愿驱除(而非节点失败)时遵从这些设置。

PodDisruptionBudget 对象的配置由以下关键部分组成:

  • 标签选择器,即一组 pod 的标签查询。
  • 可用性级别,指定必须同时可用的最小 pod 数量。

以下是 PodDisruptionBudget 资源示例:

apiVersion: policy/v1beta1 
1

kind: PodDisruptionBudget
metadata:
  name: my-pdb
spec:
  selector:  
2

    matchLabels:
      foo: bar
  minAvailable: 2  
3
Copy to Clipboard Toggle word wrap
1
PodDisruptionBudgetpolicy/v1beta1 API 组的一部分。
2
对一组资源进行的标签查询。matchLabelsmatchExpressions 的结果在逻辑上是联合的。
3
必须同时可用的最小 pod 数量。这可以是整数,也可以是指定百分比的字符串(如 20%)。

如果您使用上述对象定义创建 YAML 文件,您可以使用以下内容将其添加到项目中:

$ oc create -f </path/to/file> -n <project_name>
Copy to Clipboard Toggle word wrap

您可以使用以下命令来检查所有项目的 pod 中断预算:

$ oc get poddisruptionbudget --all-namespaces

NAMESPACE         NAME          MIN-AVAILABLE   SELECTOR
another-project   another-pdb   4               bar=foo
test-project      my-pdb        2               foo=bar
Copy to Clipboard Toggle word wrap

如果系统中至少有 minAvailable 个 pod 正在运行,则 PodDisruptionBudget 被视为是健康的。超过该限制的每个 pod 都可被 驱除

注意

根据 pod 优先级和抢占 设置,可能会即使 pod 中断预算要求而移除较低优先级 pod。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat