超售比

理解命名空间资源超售比

允许你按命名空间设置资源超售比(CPU 和内存)。这用于管理该命名空间内容器限制值(最大使用量)与请求值(保证的最小值)之间的关系,从而优化资源利用率。

通过配置此比例,你可以确保用户定义的容器限制值和请求值保持在合理范围内,从而提升整个集群的资源效率。

关键概念

  • 限制值:容器可使用的最大资源。超过限制值可能导致节流(CPU)或终止(内存)。
  • 请求值:容器所需的保证最小资源。Kubernetes 会根据这些请求来调度容器。
  • 超售比:限制值 / 请求值。此设置定义了命名空间内该比值的可接受范围,在资源保障和防止过度消耗之间取得平衡。

核心能力

  • 通过设置合适的超售比来管理资源限制值与请求值之间的平衡,从而提升命名空间内的资源密度和应用稳定性。

示例

假设命名空间超售比设置为 2,当创建一个原生应用并指定 CPU 限制值为 4c 时,对应的 CPU 请求值计算如下:

CPU 请求 = CPU 限制值 / 超售比。因此,CPU 请求变为 4c / 2 = 2c。

CRD 定义

# example-namespace-overcommit.yaml
apiVersion: resource.alauda.io/v1
kind: NamespaceResourceRatio
metadata:
  namespace: example
  name: example-namespace-overcommit
spec:
  cpu: 3 # Absence of this field indicates inheritance of the cluster overcommit ratio; 0 means no limitation.
  memory: 4 # Absence of this field indicates inheritance of the cluster overcommit ratio; 0 means no limitation.
status:
  clusterCPU: 2 # Cluster Overcommit Ratio
  clusterMemory: 3

使用 CLI 创建超售比

kubectl apply -f example-namespace-overcommit.yaml

使用 Web 控制台创建/更新超售比

允许调整命名空间的超售比,以管理资源限制值与请求值之间的比例。这可确保容器的资源分配保持在定义的边界内,从而提高集群资源利用率。

注意事项

如果集群使用节点虚拟化(例如虚拟节点),请先在集群/命名空间级别禁用超售,然后再为虚拟机进行配置。

操作步骤

  1. 进入 项目管理,然后导航到 Namespaces > Namespace 列表。

  2. 单击目标 命名空间名称

  3. 单击 操作 > 更新超售比

  4. 选择合适的超售比配置方式,为该命名空间设置 CPU 或内存超售比。

参数描述
从集群继承
  • 命名空间继承集群的超售比。
  • 示例:如果集群 CPU/内存比为 4,则命名空间默认值为 4。
  • 容器请求值 = 限制值 / 集群比值。
  • 如果未设置限制值,则使用命名空间的默认容器配额。
自定义
  • 设置命名空间专用的比值(整数 > 1)。
  • 示例:集群比值 = 4,命名空间比值 = 2 → 请求值 = 限制值 / 2。
  • 留空可为该命名空间禁用超售。
  1. 单击 更新

注意:更改仅适用于新创建的 Pod。现有 Pod 会保留其原始请求值,直到被重建。

使用新版 Web 控制台更新超售比

此设置属于命名空间治理,因此入口取决于你是在项目上下文中操作,还是在具体的集群上下文中操作。

从原生应用视图更新

当命名空间已与当前项目关联,并且你希望在该项目范围内调整请求与限制的治理策略时,请使用 原生应用视图

在更新比值之前,请确认以下内容:

  • 该命名空间属于当前项目
  • 新的 CPU 和内存比值仍然适用于后续将在该命名空间中创建或重建的工作负载
  • 该更改会与当前项目中的配额、默认限制值以及调度预期一起进行评估