2、多租户架构基础:租户定义、资源隔离模型与故障域概念
多租户架构是云原生平台实现资源复用与安全隔离的核心设计模式。在故障域隔离演练中,理解租户的定义粒度、隔离模型的实现层次以及故障域的物理/逻辑边界,是后续进行Argo CD追踪与样本抽检的前提。本节从三个维度展开:租户定义(Who)、资源隔离模型(How)、故障域概念(Where)。
2.1 租户定义:从业务实体到平台标识
租户(Tenant)是平台中拥有独立资源配额、访问权限和运维边界的逻辑单元。在SRE实践中,租户通常对应以下层级:
| 租户层级 | 典型对应实体 | 隔离粒度 | 故障域影响范围 |
|---|---|---|---|
| Cluster Tenant | 独立业务线、子公司 | 独占Kubernetes集群 | 集群级故障完全隔离 |
| Namespace Tenant | 部门、项目组、微服务团队 | 共享集群内的Namespace | 受集群级故障影响 |
| Sub-Namespace Tenant | 环境分支(dev/staging)、特性团队 | 分层Namespace(Hierarchical Namespace) | 受父Namespace及集群故障影响 |
SRE关键判断: 在多租户故障域隔离演练中,租户定义越粗(如Cluster Tenant),故障隔离越彻底,但资源碎片化越严重;租户定义越细(如Sub-Namespace Tenant),资源利用率越高,但故障爆炸半径控制越复杂。建议根据业务SLA等级选择混合模型。
2.2 资源隔离模型:Namespace与Cluster的对比
Kubernetes原生提供两种资源隔离边界:Namespace(软隔离)和Cluster(硬隔离)。下表从故障域隔离视角对比两者的关键差异:
| 隔离维度 | Namespace隔离 | Cluster隔离 |
|---|---|---|
| API Server共享 | 是(共享控制面) | 否(独立控制面) |
| 网络策略 | 需NetworkPolicy显式配置 | 天然物理网络隔离 |
| 资源配额 | ResourceQuota + LimitRange | 集群级资源池独立 |
| 故障爆炸半径 | 共享组件故障(如kube-apiserver宕机)影响所有Namespace | 集群级故障仅影响本集群租户 |
| Argo CD管理方式 | 单集群多Application(通过destination.namespace区分) | 多集群多Application(通过destination.server区分) |
| 适用场景 | 低风险、高密度部署 | 高安全、高SLA、PCI-DSS等合规场景 |
# Argo CD Application示例:Namespace隔离模式
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: tenant-alpha-payment
spec:
destination:
server: https://kubernetes.default.svc # 共享集群
namespace: tenant-alpha-prod # 租户独占Namespace
source:
repoURL: https://git.example.com/tenants/alpha
path: payment-service
targetRevision: main
syncPolicy:
automated:
prune: true
selfHeal: true
2.3 故障域概念:AZ、Region与Node
故障域(Failure Domain)是系统在发生故障时,受影响资源的最小逻辑或物理边界。在云原生多租户架构中,常见的故障域层级如下:
- Node(节点):单台物理机或虚拟机故障,影响该节点上所有Pod。租户若未配置PodAntiAffinity,可能出现同一租户多个副本集中在同一Node上,导致单点故障。
- AZ(Availability Zone,可用区):同一Region内独立的物理数据中心,拥有独立的电力、网络和冷却系统。AZ故障影响该AZ内所有Node和依赖该AZ的云服务(如EBS、SLB)。
- Region(区域):由多个AZ组成的地理区域,AZ间通过低延迟光纤互联。Region故障极为罕见,但一旦发生,影响整个区域的所有租户。
演练避坑: 很多团队在故障域隔离演练中只测试了Pod级别的故障(如kill一个Pod),却忽略了AZ级别的故障注入。请记住:Node故障是日常,AZ故障是灾难,Region故障是核弹。多租户隔离演练必须至少覆盖Node和AZ两个层级。
2.4 故障域隔离的Argo CD映射模型
在Argo CD的多集群多租户管理场景中,故障域隔离直接映射为Application的destination配置策略。以下是一个典型的故障域感知部署模型:
2.5 关键路径总结:故障域隔离的SRE检查清单
在进行多租户故障域隔离演练前,SRE团队应逐项确认以下基线:
- 租户边界已定义:每个租户有明确的Cluster或Namespace归属,且通过Argo CD Application的
destination字段锁定。 - Pod分布策略已配置:使用
podAntiAffinity和topologySpreadConstraints确保同一租户的副本跨Node和AZ分布。 - 资源配额已设置:每个租户的Namespace配置了
ResourceQuota,防止资源争抢导致的级联故障。 - 网络隔离已生效:租户间通过
NetworkPolicy或独立集群实现网络隔离,避免故障扩散。 - 故障注入目标已明确:演练计划中标注了本次演练要模拟的故障域层级(Node / AZ / Region)。