概述目标:在节点升级/维护期间通过PDB限制同时中断的Pod数量,保持服务SLO与请求处理能力。适用:有状态或需最小副本保障的服务。核心与实战PDB定义(按最小可用):apiVersion: policy/v1

kind: PodDisruptionBudget

metadata:

name: api-pdb

namespace: prod

spec:

minAvailable: 2

selector:

matchLabels: { app: api }

或按最大不可用:apiVersion: policy/v1

kind: PodDisruptionBudget

metadata:

name: web-pdb

namespace: prod

spec:

maxUnavailable: 1

selector:

matchLabels: { app: web }

示例节点排空与验证:kubectl drain <node> --ignore-daemonsets --delete-emptydir-data

kubectl get pdb -n prod

kubectl describe pdb api-pdb -n prod

滚动更新配合:kubectl -n prod rollout restart deployment/api

验证与监控PDB状态:`AllowedDisruptions`与`CurrentHealthy`应符合期望;当不足时驱逐会被阻止。维护影响:观察在排空期间的请求成功率与延迟;在观测面板中验证SLO保持。例外情况:持久卷的Pod需结合StatefulSet与存储策略;确保安全停机步骤。常见误区PDB过严导致无法进行维护;需与副本数与负载相匹配。忽视选择器与命名空间导致未生效;需精确匹配目标工作负载。仅设置PDB而无就绪探针/滚动策略;必须配合健康探针与更新策略。结语PDB为K8s维护活动提供安全阀,配合滚动与探针可在高可用目标下进行稳定的升级与节点操作。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部