## 概述 PriorityClass为Pod设定优先级,调度器在资源紧张时可能抢占低优先级Pod。通过PDB治理可用性,结合配额与策略实现稳妥调度。 ## 关键实践与参数 - 优先级: 创建 `PriorityClass` 并为关键服务赋值 - 抢占策略: 控制可抢占与选择策略 - PDB: 为关键服务设定最小可用副本 - 配额: 限制命名空间资源使用 ## 示例/配置/实现 ```yaml apiVersion: scheduling.k8s.io/v1 kind: PriorityClass metadata: name: critical value: 1000000 globalDefault: false description: "critical services" --- apiVersion: apps/v1 kind: Deployment metadata: { name: api } spec: replicas: 3 selector: { matchLabels: { app: api } } template: metadata: { labels: { app: api } } spec: priorityClassName: critical containers: - name: app image: alpine:3.19 command: ["sleep","3600"] --- apiVersion: policy/v1 kind: PodDisruptionBudget metadata: { name: api-pdb } spec: selector: { matchLabels: { app: api } } minAvailable: 2 ``` ## 验证 - 抢占行为: 在资源紧张时低优先级Pod被驱逐,关键服务保持可用 - PDB生效: 驱逐时仍满足最小可用副本 - 稳定性: 在扩缩容与更新期间关键服务稳定 - 观测: 记录调度事件与驱逐日志 ## 注意事项 - 慎重设置优先级避免影响整体稳定 - 与HPA与PDB协同 - 命名空间配额与限流策略需配合 - 定期演练资源紧张场景

发表评论 取消回复