1. 课程导论:故障域概念、为什么需要故障域划分、OPA Gatekeeper在其中的角色
1.1 故障域(Fault Domain)核心概念
故障域是指系统中一组共享单一故障点的资源集合。当该故障点失效时,集合内的所有资源都会受到影响。在Kubernetes集群中,故障域通常对应物理或逻辑边界,例如:
- 物理故障域:同一台服务器、同一个机架、同一个数据中心。
- 逻辑故障域:同一个可用区(Availability Zone)、同一个网络分区、同一个电源回路。
- 软件故障域:同一个控制平面实例、同一个etcd成员、同一个Ingress Controller。
关键原则:故障域划分的目标是确保关键工作负载的副本分布在不同的故障域中,从而避免单点故障导致整个服务不可用。
1.2 为什么需要故障域划分?
在Kubernetes环境中,缺乏故障域意识会导致以下风险:
| 风险场景 | 后果 | 影响等级 |
|---|---|---|
| Pod全部调度到同一节点 | 节点宕机导致服务完全中断 | 严重 |
| 副本集中在同一可用区 | 可用区故障导致区域性服务不可用 | 灾难性 |
| 有状态应用与存储在同一故障域 | 存储故障连带应用数据丢失 | 严重 |
| 控制平面组件分布不均 | etcd或API Server单点故障 | 灾难性 |
故障域划分带来的核心收益:
- 高可用性:通过跨故障域分布副本,容忍单个故障域失效。
- 故障隔离:限制爆炸半径,防止故障级联扩散。
- 合规性:满足金融、医疗等行业对资源隔离的监管要求。
- 资源优化:避免热点,提升集群整体资源利用率。
1.3 OPA Gatekeeper在故障域划分中的角色
OPA Gatekeeper是Kubernetes的准入控制器,它通过策略即代码的方式,在资源创建或更新时强制执行合规规则。在故障域划分场景中,Gatekeeper扮演以下关键角色:
- 策略定义者:使用Rego语言编写故障域约束模板,定义Pod、Deployment、StatefulSet等资源必须满足的分布规则。
- 准入拦截者:在API Server处理请求前,拦截违反故障域策略的资源提交,阻止其进入集群。
- 审计者:定期扫描集群中已有资源,发现并报告违反故障域策略的存量资源。
- 自动化执行者:无需人工审核,策略自动生效,确保故障域规则在集群生命周期内持续合规。
核心优势:相比手动配置或脚本检查,Gatekeeper将故障域策略与集群基础设施解耦,实现声明式、可版本化、可审计的策略管理。
1.4 课程学习路径
本课程将按照以下结构逐步深入:
| 阶段 | 章节范围 | 核心内容 |
|---|---|---|
| 基础篇 | 第1-5章 | 故障域概念、Kubernetes原生调度机制、OPA Gatekeeper安装与基础策略 |
| 策略开发篇 | 第6-15章 | Rego语言深入、故障域约束模板编写、Pod/Deployment/StatefulSet策略 |
| 高级实践篇 | 第16-25章 | 多集群故障域、有状态应用策略、审计与合规报告、性能优化 |
| 生产落地篇 | 第26-30章 | CI/CD集成、故障演练、监控告警、最佳实践总结 |
前置要求:建议学习者具备Kubernetes基础操作能力(kubectl、YAML编写)、了解Pod调度原理(nodeSelector、亲和性/反亲和性),以及基本的策略即代码概念。
1.5 本章小结
通过本章学习,您已经掌握了:
- 故障域的三种类型(物理、逻辑、软件)及其在Kubernetes中的映射。
- 缺乏故障域划分带来的具体风险和收益。
- OPA Gatekeeper作为策略引擎在故障域划分中的核心角色:定义、拦截、审计、自动化执行。
- 课程的整体学习路径和前置要求。