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
如果您使用上述对象定义创建 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。