PodDisruptionBudget 删除 pod 时没有效果

Ily*_*dik 7 kubernetes

此处的文档指出,删除 Pod 是一种自愿中断,PodDisruptionBudget应予以防范。

我创建了一个简单的测试:

apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
  name: test
spec:
  minAvailable: 1
  selector:
    matchLabels:
      app: test

---

apiVersion: v1
kind: Pod
metadata:
  name: test
  labels:
    app: test
spec:
  containers:
    - name: test
      image: myimage
Run Code Online (Sandbox Code Playgroud)

现在,如果我运行apply然后delete pod test,删除这个 Pod 就没有问题了。

如果我现在运行cordon node,那么它会被卡住,因为它无法驱逐最后一个 Pod(这是正确的)。但删除 pod 时似乎并不存在同样的行为。

如果我创建一个至少有 2 个副本的部署,然后同时删除这两个副本,情况也是如此 - 它们也会被删除(不是一一删除)。

我在这里误解了什么吗?

goh*_*m'c 4

您问题中的链接引用由 kubelet 管理的静态 pod,猜测您想要此链接

...if I run apply and then delete pod test, there is no trouble deleting this pod

PDB 保护由以下控制器之一管理的 pod:Deployment、ReplicationController、ReplicaSet 或 StatefulSet。

...if I create a deployment with minimum 2 replicas and just delete both at the same time - they are deleted as well (not one by one)

PDB 不认为明确删除部署是自愿中断。来自 K8s 文档:

注意:并非所有自愿中断都受到 Pod 中断预算的限制。例如,删除部署或 Pod 会绕过 Pod 中断预算。

希望这有助于拨开迷雾。