给关键服务设 PodDisruptionBudget,防止维护时全挂

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
喜欢就支持一下吧
点赞5 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容