PDB 管的是主动驱逐,节点下线、kubectl drain 时才会生效。
两个字段二选一写。minAvailable 是保底存活数,另一个反过来。
策略只能用 selector 匹配 Pod 标签,并且要写得宽松一点。
副本数太少时 PDB 会挡住 drain,要留好余量或临时放开。
# 1) 推荐:按可用数保底,滚动和 drain 都能守住
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
name: web-pdb
spec:
minAvailable: 2 # 或 maxUnavailable: 1,二选一
selector:
matchLabels:
app: web
# 2) 查看效果:ALLOWED DISRUPTIONS 大于 0 才能驱逐
kubectl get pdb
kubectl describe pdb web-pdb
# 3) 节点维护
kubectl drain node-1 --ignore-daemonsets --delete-emptydir-data
# 若报 would violate the pod's disruption budget,说明副本不够:
# 先扩容,或临时删掉 PDB 再操作
# 4) 滚动更新不受 PDB 约束,它由 Deployment 的 maxUnavailable 控制
THE END






暂无评论内容