概述PriorityClass为Pod设定优先级,调度器在资源紧张时可能抢占低优先级Pod。通过PDB治理可用性,结合配额与策略实现稳妥调度。关键实践与参数优先级: 创建 `PriorityClass` 并为关键服务赋值抢占策略: 控制可抢占与选择策略PDB: 为关键服务设定最小可用副本配额: 限制命名空间资源使用示例/配置/实现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协同命名空间配额与限流策略需配合定期演练资源紧张场景

发表评论 取消回复