资源配额

参考官方 Kubernetes 文档:Resource Quotas

目录

理解资源请求与限制

用于限制特定命名空间可用的资源。该命名空间内所有 Pod(不包括处于 Terminating 状态的 Pod)使用的资源总量不得超过配额。

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

资源限制:定义容器可使用的最大资源,防止资源耗尽,确保集群稳定。

配额

资源配额

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

资源配额跟踪命名空间内的累计资源消耗(例如容器限制、新建 Pod 或 PVC)。

支持的配额类型

字段描述
资源请求命名空间内所有 Pod 的资源请求总量:
  • CPU
  • 内存
资源限制命名空间内所有 Pod 的资源限制总量:
  • CPU
  • 内存
Pod 数量命名空间内允许的最大 Pod 数量。

注意:

  • 命名空间配额来源于项目分配的集群资源。如果任何资源的可用配额为 0,则命名空间创建失败。请联系管理员。
  • Unlimited 表示命名空间可使用该项目剩余的集群资源。

YAML 文件示例

# 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

存储配额

配额类型

  • 全部:命名空间内 PVC 的存储容量总量。
  • 存储类:特定存储类的 PVC 存储容量总量。

注意:确保存储类已预先分配给包含该命名空间的项目。

硬件加速器资源配额

当安装了 Alauda Build of HamiNVIDIA GPU Device Plugin 后,您可以使用关于硬件加速器的扩展资源配额。

参考 Alauda Build of HamiAlauda Build of NVIDIA GPU Device Plugin

其他配额

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

  • 如果自定义配额名称不包含斜杠(/):必须以字母或数字开头和结尾,可以包含字母、数字、连字符(-)、下划线(_)或点(.),形成一个最长为 63 字符的合格名称。
  • 如果自定义配额名称包含斜杠(/):名称分为两部分:前缀和名称,格式为:prefix/name。前缀必须是有效的 DNS 子域名,名称必须符合合格名称的规则。
  • DNS 子域名:
    • 标签:必须以小写字母或数字开头和结尾,可以包含连字符(-),但不能全部由连字符组成,最长为 63 字符。
    • 子域名:扩展标签规则,允许多个标签通过点(.)连接形成子域名,最长为 253 字符。