PodDisruptionBudgets (PDB) 是 Kubernetes 中的一项重要功能,它通过限制可同时中断的 Pod 数量,帮助在维护事件期间保持应用程序的可用性。


下面的代码示例演示了如何为部署创建 PodDisruptionBudget,确保在维护期间不会同时关闭太多 Pod。

【代码清单】

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

【执行结果】

使用 kubectl apply -f pdb.yaml 应用此配置时,您会看到一条确认信息,显示 PodDisruptionBudget 已创建:
poddisruptionbudget.policy/my-app-pdb created

在本例中,我们定义了一个名为 my-app-pdb 的 PodDisruptionBudget。minAvailable: 2 设置表示必须至少有两个 Pod 始终可用。选择器指定了该预算适用于哪些 Pod,在本例中,就是那些标有 app: my-app 的 Pod。这样可以确保在维护期间,Kubernetes 不会允许超过指定数量的 Pod 中断,从而保持应用程序的可用性。

【小知识】

PodDisruptionBudgets 在应用程序需要高可用性的情况下特别有用,比如在生产环境中。它们与其他 Kubernetes 功能(如在节点维护期间使用的 Eviction 和 Drain)配合使用。值得注意的是,PDB 只适用于节点维护或缩减等自愿中断,并不能防止崩溃或节点故障等非自愿中断。