Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

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
1
PodDisruptionBudgetpolicy/v1beta1 API 组的一部分。
2
对一组资源进行的标签查询。matchLabelsmatchExpressions 的结果在逻辑上是联合的。
3
必须同时可用的最小 pod 数量。这可以是整数,也可以是指定百分比的字符串(如 20%)。

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

$ oc create -f </path/to/file> -n <project_name>

您可以使用以下命令来检查所有项目的 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

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

注意

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