ElasticQuotaTree 是一种树形结构,用于定义和管理集群中的弹性配额(Elastic Quota)。Elastic Quota支持在一定范围内动态调整。当某Elastic Quota存在空闲资源时,这些资源可被其他需要资源的Elastic Quota共享,从而在满足保障资源的前提下提升集群资源利用率。
ElasticQuotaTree 是 ACK 集群中用于描述和管理Elastic Quota配置的自定义资源。Elastic Quota将用户的可用资源划分为两部分:
保障资源:用户提交的任务所使用的、不可被抢占的资源。
非保障资源:可被抢占的资源。
Elastic Quota允许在保障资源空闲时将其临时分配给其他用户使用,并在需要时通过抢占机制回收资源,从而在满足保障资源需求的同时提升集群的整体资源利用率。
ElasticQuotaTree YAML示例
当前 ACK 集群仅支持 kube-system 命名空间下的单个 ElasticQuotaTree。若存在多个 ElasticQuotaTree,可能导致配额管理混乱。
apiVersion: scheduling.sigs.k8s.io/v1beta1
kind: ElasticQuotaTree
metadata:
name: elasticquotatree
namespace: kube-system
spec:
root:
children:
- attributes:
resourceflavors: "resourceflavor-sample1, resourceflavor-sample2"
max:
cpu: 1
kube-queue/max-jobs: 1
memory: 1Gi
name: child-1
namespaces:
- default-group
max:
cpu: 999900
kube-queue/max-jobs: 10000000000
memory: 400000Gi
nvidia.com/gpu: 100000
min:
cpu: 999900
kube-queue/max-jobs: 10000000000
memory: 400000Gi
nvidia.com/gpu: 100000
name: root参数说明
ElasticQuotaTree 将Elastic Quota以树形结构组织,顶层为 Root 节点,对应自定义资源的 .Spec.Root 路径。每个节点包含以下字段。
参数 | 类型 | 说明 |
| string | 该节点在 ElasticQuotaTree 中的名称。所有节点的 |
| []string | 指定哪些 Namespace 中的 Pod 会被默认计入该配额。每个 Namespace 只能属于一个配额,以避免配额统计冲突。 |
| map[string]string | 定义该配额的资源使用上限。 |
| map[string]string | 定义该配额的保障资源量(即资源下限)。 |
| map[string]string | (调度器版本 ≥ 6.9.0)描述该配额的属性。目前支持的 |
| list | 列表中的每个元素是一个配额节点,表示该配额的子配额。 |