1. 课程导论:OPA与调度器协同的背景、课程目标与学习路径
1.1 为什么需要OPA与调度器协同?
在Kubernetes生产环境中,准入控制与调度决策长期处于割裂状态。OPA Gatekeeper负责在资源创建/更新时执行策略校验,而调度器负责在集群节点间分配Pod。两者各自为政,容易导致以下问题:
- 策略后知后觉:Gatekeeper拒绝了一个Pod,但调度器已为其预留了资源,造成调度周期浪费。
- 调度约束缺失:Gatekeeper无法感知节点实时负载、拓扑分布等动态数据,策略只能基于静态标签。
- 协同黑洞:运维人员需要手动在Gatekeeper ConstraintTemplate和调度器配置间同步参数,极易出现配置漂移。
核心矛盾:OPA Gatekeeper是“策略执行者”,调度器是“资源分配者”。两者协同的目标是让策略在调度决策前生效,让调度结果反馈给策略审计。
1.2 协同架构总览
下图展示了OPA Gatekeeper与Kubernetes调度器在集群中的协同位置与数据流:
关键洞察:协同层是课程核心。通过调度扩展器(Scheduler Extender)或自定义调度插件,将Gatekeeper策略转化为调度约束;同时将调度结果(如节点拓扑、资源碎片)反馈给Gatekeeper,实现策略动态调整。
1.3 课程目标
完成本课程后,你将具备以下能力:
| 能力维度 | 具体目标 | 对应章节 |
|---|---|---|
| 策略编写 | 使用Rego编写Gatekeeper约束,覆盖Pod调度相关场景 | 第2-5章 |
| 调度参数调优 | 配置调度器策略、优先级、插件链,实现精细化调度 | 第6-9章 |
| 协同集成 | 通过Scheduler Extender/Webhook实现策略与调度双向联动 | 第10-15章 |
| 故障排查 | 诊断策略冲突、调度失败、性能瓶颈等协同问题 | 第16-20章 |
| 生产实践 | 设计多租户策略、资源配额、拓扑分布等企业级方案 | 第21-30章 |
1.4 学习路径与章节地图
课程按“基础→集成→进阶→实战”四阶段递进,建议按顺序学习:
1.5 前置知识与环境要求
| 类别 | 要求 | 说明 |
|---|---|---|
| Kubernetes | 熟悉Pod、Node、Deployment、Namespace等核心资源 | 建议K8s v1.24+ |
| OPA Gatekeeper | 了解ConstraintTemplate、Constraint、AdmissionReview基本概念 | Gatekeeper v3.10+ |
| 调度器 | 了解调度框架、预选/优选/绑定阶段 | Kube-scheduler v1.24+ |
| 工具 | kubectl、helm、jq、curl | 实验环境使用kind或minikube |
注意:本课程所有实验均在非生产环境验证。生产环境部署协同组件时,务必进行充分的性能压测和回滚预案。
1.6 课程产出物
每章结束后,你将获得可直接使用的配置产物:
- Rego策略模板:30+个可直接部署的ConstraintTemplate YAML
- 调度配置:多场景SchedulerConfiguration示例(含插件配置、优先级函数)
- 协同组件:Scheduler Extender + Webhook的完整部署Chart
- 监控看板:Prometheus告警规则 + Grafana Dashboard JSON
现在,让我们从第2章开始,深入OPA Gatekeeper的策略编写与调度器参数配置的协同实战。