2. 资源模型基础概念

在多租户控制面架构中,资源模型是连接物理基础设施与上层租户工作负载的桥梁。理解资源抽象、资源池化、资源配额、资源预留与资源限制这五个核心概念的定义及其相互关系,是设计高效、稳定、公平的多租户资源管理系统的前提。

2.1 核心定义

概念 核心定义 关键作用
资源抽象 将物理或虚拟资源(CPU、内存、GPU、网络带宽)通过标准化接口与模型进行逻辑表示,屏蔽底层异构细节。 提供统一的资源视图,使调度器与租户无需感知底层硬件差异。
资源池化 将多个同类型或异构的物理/虚拟资源节点聚合成一个逻辑资源池,实现资源的集中管理与弹性供给。 提升资源利用率,降低碎片化,支持跨节点资源调度。
资源配额 为租户或命名空间设定的资源使用上限(硬限制),防止单个租户过度占用集群资源。 实现租户间的资源隔离与公平性保障。
资源预留 为特定租户或工作负载保证的最低可用资源量,确保其在竞争环境下获得确定性性能。 保障关键业务的服务质量(QoS),避免资源饥饿。
资源限制 对单个容器或 Pod 可使用的资源上限进行约束,防止单点故障影响节点稳定性。 实现细粒度的资源管控与运行时安全。
关键区分:配额(Quota)作用于租户/命名空间级别,是“总量控制”;限制(Limit)作用于容器/Pod级别,是“单体控制”;预留(Reservation)是“最低保障”,三者共同构成多租户资源管控的“三驾马车”。

2.2 五者关系与分层架构

这五个概念并非孤立存在,而是构成了一个从物理资源到租户工作负载的完整分层模型。下图展示了它们之间的逻辑关系与数据流向。

资源模型核心概念关系图 物理 / 虚拟资源层 CPU 核心 · 内存 GB · GPU 卡 · 网络带宽 · 存储 IOPS 资源抽象层 标准化资源模型(CPU 核数、内存字节、GPU 卡数) 资源池化层 节点聚合 · 碎片整理 · 弹性伸缩 · 跨节点资源池 资源配额(Quota) 租户级资源上限 · 公平性保障 资源预留(Reservation) 租户级最低保障 · QoS 保证 资源限制(Limit) 容器 / Pod 级资源上限 · 运行时安全与稳定性

2.3 概念间的核心关系

  • 抽象是基础:没有统一的资源抽象,池化、配额、预留、限制都无从谈起。抽象层定义了“资源”的计量单位与语义。
  • 池化是载体:资源池化将抽象后的资源进行物理聚合,为配额与预留提供可分配的资源总量。
  • 配额与预留是租户级策略:配额(上限)与预留(下限)共同定义了租户的资源“安全区间”,两者必须基于池化后的资源总量进行计算。
  • 限制是执行层保障:资源限制在容器/Pod级别实施,确保单个工作负载不会突破其所在租户的配额,也不会影响同节点其他租户的预留资源。
设计原则:在多租户控制面中,资源模型的设计应遵循“抽象统一 → 池化聚合 → 配额预留双约束 → 限制落地执行”的链路。任何环节的缺失或错配,都会导致资源争抢、服务质量下降或管理复杂度飙升。

2.4 典型场景:Kubernetes 中的资源模型映射

以 Kubernetes 为例,上述概念在原生 API 中的对应关系如下:

概念 Kubernetes 原生实现 说明
资源抽象 Resource Model (CPU: cores, Memory: bytes) 通过 resources.requests 与 resources.limits 字段表达
资源池化 Node 对象 + Cluster Autoscaler 节点加入集群形成计算资源池,支持自动扩缩容
资源配额 ResourceQuota 作用于 Namespace 级别,限制 CPU/内存/PVC 等总量
资源预留 requests 字段 + PriorityClass + 节点预留 requests 保证调度时的最低资源;PriorityClass 保障高优先级工作负载
资源限制 limits 字段 + LimitRange limits 限制容器运行时资源上限;LimitRange 设置默认值与范围
# 示例:Kubernetes 中配额、预留与限制的联合配置
apiVersion: v1
kind: ResourceQuota
metadata:
  name: tenant-a-quota
  namespace: tenant-a
spec:
  hard:
    requests.cpu: "10"      # 租户 A 所有 Pod 的 CPU 预留总和上限
    requests.memory: "20Gi" # 租户 A 所有 Pod 的内存预留总和上限
    limits.cpu: "20"        # 租户 A 所有 Pod 的 CPU 限制总和上限
    limits.memory: "40Gi"   # 租户 A 所有 Pod 的内存限制总和上限
---
apiVersion: v1
kind: LimitRange
metadata:
  name: tenant-a-limits
  namespace: tenant-a
spec:
  limits:
  - default:
      cpu: "500m"           # 默认容器 CPU 限制
      memory: "512Mi"       # 默认容器内存限制
    defaultRequest:
      cpu: "200m"           # 默认容器 CPU 预留
      memory: "256Mi"       # 默认容器内存预留
    type: Container
常见误区:将资源配额(Quota)与资源限制(Limit)混为一谈。配额是租户级别的“总量天花板”,限制是容器级别的“单体天花板”。一个租户的配额可能为 10 核,但其内部某个容器的限制可能仅为 1 核。两者必须协同配置,否则可能出现“配额充足但容器限制过小”或“容器限制过大但配额不足”的矛盾。

2.5 概念关系总结

资源模型五要素构成了一个层层递进、相互制约的闭环:

  1. 资源抽象 提供统一的“语言”。
  2. 资源池化 构建共享的“资源池”。
  3. 资源配额 划定租户的“天花板”。
  4. 资源预留 保障租户的“地板”。
  5. 资源限制 约束容器的“行为边界”。