资源配额

请参考官方 Kubernetes 文档:Resource Quotas

理解 Resource Requests 与 Limits

用于限制特定 namespace 可用的资源。namespace 中所有 Pods 的总资源使用量(不包括处于 Terminating 状态的对象)不得超过配额。

Resource Requests:定义容器所需的最小资源(例如 CPU、内存),用于指导 Kubernetes Scheduler 将 Pod 调度到具有足够容量的节点上。

Resource Limits:定义容器可消耗的最大资源,防止资源耗尽并确保集群稳定性。

配额

Resource Quotas

如果某个资源标记为 Unlimited,则不会强制执行显式配额,但其使用量不能超过集群的可用容量。

Resource Quotas 会跟踪 namespace 内累积的资源消耗(例如容器 limits、新建 Pods 或 PVCs)。

支持的配额类型

字段描述
Resource Requestsnamespace 中所有 Pods 的请求资源总量:
  • CPU
  • 内存
Resource Limitsnamespace 中所有 Pods 的限制资源总量:
  • CPU
  • 内存
Number of Podsnamespace 中允许的最大 Pod 数量。

注意:

  • namespace 配额来源于项目已分配的集群资源。如果任何资源的可用配额为 0,创建 namespace 将失败。请联系管理员。
  • Unlimited 表示该 namespace 可以消耗项目中该资源类型剩余的集群资源。

YAML file example

# example-resourcequota.yaml
apiVersion: v1
kind: ResourceQuota
metadata:
  name: example-resourcequota
  namespace: <example>
spec:
  hard:
    limits.cpu: "20"
    limits.memory: 20Gi
    pods: "500"
    requests.cpu: "2"
    requests.memory: 2Gi

使用 CLI 创建资源配额

通过 YAML 文件创建

kubectl apply -f example-resourcequota.yaml

直接通过命令行创建

kubectl create resourcequota example-resourcequota --namespace=<example> --hard=limits.cpu=20,limits.memory=20Gi,pods=500

存储配额

配额类型

  • All:namespace 中 PVC 存储容量总和。
  • Storage Class:特定 storage class 的 PVC 存储容量总和。

注意:请确保该 storage class 已预先分配给包含该 namespace 的项目。

硬件加速器资源配额

当目标集群中安装了 HAMi、NVIDIA GPU Device Plugin 或 NPU Operator 等加速器实现时,ACP 可通过 Kubernetes 扩展资源公开相应的加速器配额字段。

本页面负责 namespace 配额操作。关于加速器资源名称、实现映射以及产品文档入口,请参考 Accelerator Resource Quota

其他配额

自定义配额名称的格式必须符合以下规范:

  • 如果自定义配额名称不包含斜杠(/):它必须以字母或数字开头并结尾,且可以包含字母、数字、连字符(-)、下划线(_)或句点(.),形成一个长度最多为 63 个字符的 qualified name。
  • 如果自定义配额名称包含斜杠(/):名称会分为两部分,即 prefix 和 name,格式为:prefix/name。prefix 必须是有效的 DNS subdomain,而 name 必须符合 qualified name 的规则。
  • DNS Subdomain:
    • Label:必须以小写字母或数字开头并结尾,可以包含连字符(-),但不能仅由连字符组成,最大长度为 63 个字符。
    • Subdomain:在 label 规则基础上扩展,允许通过句点(.)连接多个 label 形成 subdomain,最大长度为 253 个字符。