此处的文档指出,删除 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 个副本的部署,然后同时删除这两个副本,情况也是如此 - 它们也会被删除(不是一一删除)。
我在这里误解了什么吗?
您问题中的链接引用由 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 中断预算。
希望这有助于拨开迷雾。
归档时间: |
|
查看次数: |
2112 次 |
最近记录: |