--- title: Kubernetes PodDisruptionBudget高可用实践 keywords: - PodDisruptionBudget - PDB - drain - minAvailable - maxUnavailable description: 使用PDB限制可中断Pod数量以保障高可用,提供可验证的YAML与排空命令,降低维护对业务的影响。 date: 2025-11-26 tags: - Kubernetes - PDB - PodDisruptionBudget - drain - maxUnavailable - minAvailable - 云原生 - 高可用 categories: - 文章资讯 - 技术教程 --- 概述 - 目标:在节点升级/维护期间通过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 --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 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部