From a66649643694c481292b55a28d579962bce0c412 Mon Sep 17 00:00:00 2001 From: "chuanyun.lcy" Date: Mon, 19 Feb 2024 12:02:56 +0800 Subject: [PATCH] add proposal for multi tree quota Signed-off-by: chuanyun.lcy --- docs/images/multi-quota-tree.jpg | Bin 0 -> 151142 bytes .../scheduling/20240206-multi-tree-quota.md | 271 ++++++++++++++++++ 2 files changed, 271 insertions(+) create mode 100644 docs/images/multi-quota-tree.jpg create mode 100644 docs/proposals/scheduling/20240206-multi-tree-quota.md diff --git a/docs/images/multi-quota-tree.jpg b/docs/images/multi-quota-tree.jpg new file mode 100644 index 0000000000000000000000000000000000000000..944fdbbcc34dfd697c0e2cd5b8b967dc5a20e329 GIT binary patch literal 151142 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

-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 R^0K?Az!?U?4Ec|j{~K>cHD~|; literal 0 HcmV?d00001 diff --git a/docs/proposals/scheduling/20240206-multi-tree-quota.md b/docs/proposals/scheduling/20240206-multi-tree-quota.md new file mode 100644 index 000000000..10b5fe715 --- /dev/null +++ b/docs/proposals/scheduling/20240206-multi-tree-quota.md @@ -0,0 +1,271 @@ +--- +title: Multi Tree Elastic Quota +authors: + - "@shaloulcy" +reviewers: + - "@hormes" + - "@buptcozy" + - "@eahydra" +creation-date: 2024-02-06 +last-updated: 2024-02-06 +status: provisional +--- + +# Multi Tree Elastic Quota + +## Table of Contents + +- [Multi Tree Elastic Quota](#multi-tree-elastic-quota) + - [Table of Contents](#table-of-contents) + - [Summary](#summary) + - [Motivation](#motivation) + - [Goals](#goals) + - [Non-Goals/Future Work](#non-goalsfuture-work) + - [Proposal](#proposal) + - [User Stories](#user-stories) + - [Story 1](#story-1) + - [Story 2](#story-2) + - [Architecture](#architecture) + - [Implementation Details](#implementation-details) + - [API](#api) + - [Koord-manager](#koord-manager) + - [Koord-scheduler](#koord-scheduler) + - [Implementation History](#implementation-history) + + +## Summary + + +The proposal provides a mechanism to construct multiple trees for elastic quota. Different quota tree can include different nodes. It will help the cluster administrators to manage the node resource more granularly + + +## Motivation + +[Elastic Quota](https://github.com/koordinator-sh/koordinator/blob/main/docs/proposals/scheduling/20220722-multi-hierarchy-elastic-quota-management.md) provides a balance between enforcing limits to prevent resource exhaustion and allowing for efficient use of resources. Currently, there is only a quota tree in cluster. The root quota is `koordinator-root-quota`, all other quotas is the descendants of the root quota. In addition, all nodes resources belong to the only quota tree. + +But the kubernetes products(ACK/EKS/GKE) from cloud providers usually provide users with the concept of node pools to support users in managing different workloads. It means than the users can create multiple node pools to deploy different workloads and the workloads can't spread cross node pools. But the elastic quota tree includes all nodes, it's not accurate. + +In this case, we should build a single quota tree for every node pool. + +### Goals + +- Define a API to construct multiple quota trees +- Enhance the elastic quota and help the cluster administrators to manage the node resource more granularly + +### Non-Goals/Future Work + +- Improve the cluster resource usage + +## Proposal + + +### User Stories + +#### Story 1 + +cluster administrator devides nodes based on the node cpu architecture. There are two node pools: amd64 node pools and arm64 node pools. The amd64 pools include amd64 nodes, annother pool include arm64 nodes. We construct two quota trees based the node pools. + + +The user creates child quota as the children of amd64 quota tree, and associate pods with it. The pods will be scheduled to the amd64 nodes. + + +The resource can be shared in a single quota tree, but not shared between different trees + + +#### Story 2 +In certain AI scenarios, to reduce network latency, we forbid deploy jobs across availability zones. We should construct multi quota trees according to the availability zones. Every availability zone has a quota tree which include the same availability zone nodes. + + +### Architecture + + + +![multi-quota-tree](../../images/multi-quota-tree.jpg) + + + +### Implementation Details + + +#### API + +##### ElasticQuotaProfile + +A Custom Resource Definition (CRD) named `ElasticQuotaProfile` is proposed to describe a quota tree + +```go +type ElasticQuotaProfile struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + + Spec ElasticQuotaProfileSpec `json:"spec,omitempty"` + Status ElasticQuotaProfileStatus `json:"status,omitempty"` +} + +type ElasticQuotaProfileSpec struct { + // QuotaName defines the associated quota name of the profile. + // +required + QuotaName string `json:"quotaName"` + // QuotaLabels defines the labels of the quota. + QuotaLabels map[string]string `json:"quotaLabels,omitempty"` + // ResourceRatio is a ratio, we will use it to fix the resource fragmentation problem. + // If the total resource is 100 and the resource ratio is 0.9, the allocable resource is 100*0.9=90 + ResourceRatio *string `json:"resourceRatio,omitempty"` + // NodeSelector defines a node selector to select nodes. + // +required + NodeSelector *metav1.LabelSelector `json:"nodeSelector"` +} + +type ElasticQuotaProfileStatus struct { +} +``` + + +* `NodeSelector`: define a label selector to select particular nodes. The match nodes belong to the quota tree +* `QuotaName`: define the root quota name of the quota tree. The operator will create the root quota if not existed. +* `QuotaLabels`: define the labels which will be updated to root quota +* `ResourceRatio`: control the total resource reported. If the total resource is 100 and the resource ratio is 0.9, the allocable resource is 100*0.9=90 + + +##### ElasticQuota + +We addon some annotations for elastic quota to construct multiple quota trees + +* `quota.scheduling.koordinator.sh/tree-id`: every quota tree has a unique tree id. The elastic quotas in the same tree have the same tree id. Users don't need add the tree-id annotation when create elastic quota. Indeed the webhook will inject tree-id if the quota is the descendants of root quota. + +* `quota.scheduling.koordinator.sh/is-root`: If the quota is the root of the quota tree, the controller will add the annotation which means the quota is the root of quota tree + + +#### Koord-manager + +##### elastic-quota-profile-controller + +add a controller named elastic-quota-profile-controller. The controller watch the elastic-quota-profile. It will do some works: + +* create the root quota if the quota not existed and generate the tree id +* total resource summary: it will sum the resource of matched nodes periodically, and updated it to the root quota as an annotation `quota.scheduling.koordinator.sh/total-resource` + + +example + +```yaml +apiVersion: quota.koordinator.sh/v1alpha1 +kind: ElasticQuotaProfile +metadata: + labels: + kubernetes.io/arch: amd64 + topology.kubernetes.io/region: cn-hangzhou + topology.kubernetes.io/zone: cn-hangzhou-k + name: cn-hangzhou-k-amd64-standard + namespace: kube-system +spec: + nodeSelector: + matchLabels: + kubernetes.io/arch: amd64 + topology.kubernetes.io/region: cn-hangzhou + topology.kubernetes.io/zone: cn-hangzhou-k + quotaLabels: + kubernetes.io/arch: amd64 + quota.scheduling.koordinator.sh/is-parent: "true" + topology.kubernetes.io/region: cn-hangzhou + topology.kubernetes.io/zone: cn-hangzhou-k + quotaName: cn-hangzhou-k-amd64-root-quota + resourceRatio: "0.9" +``` + +the controller will create the root quota of the quota tree + +```yaml +apiVersion: scheduling.sigs.k8s.io/v1alpha1 +kind: ElasticQuota +metadata: + annotations: + quota.scheduling.koordinator.sh/total-resource: '{"cpu":"276480m","ephemeral-storage":"5257857641983","memory":"1894530432614","pods":"360"}' + labels: + kubernetes.io/arch: amd64 + quota.scheduling.koordinator.sh/is-parent: "true" + quota.scheduling.koordinator.sh/is-root: "true" + quota.scheduling.koordinator.sh/parent: koordinator-root-quota + quota.scheduling.koordinator.sh/profile: cn-hangzhou-k-amd64 + quota.scheduling.koordinator.sh/tree-id: "9066322268974913314" + topology.kubernetes.io/region: cn-hangzhou + topology.kubernetes.io/zone: cn-hangzhou-k + name: cn-hangzhou-k-amd64-root-quota + namespace: kube-system +spec: + max: + cpu: "4611686018427387" + memory: "4611686018427387" + min: + cpu: 276480m + memory: "1894530432614" +``` + +##### webhook + +webhook will add some mutating works for pods and elastic quotas + +* `pod node affinity`: as the elastic quota profile selects particular nodes, if the user associates pods with the quota in the tree, we should limit the pods to be scheduled to matched nodes. So the webhook will inject corresponding node affinity into the pods. + +* `elastic quota tree id`: if the user create a elastic quota as the descendants of the quota tree, The webhook will inject corresponding tree id into the quota. In addition, the webhook will forbid change the quota tree id to reduce complexity. + +#### Koord-scheduler + +##### elastic quota plugin + +The elastic quota plugin handles the elastic quotas. The `groupQuotaManager` will handle all elastic quotas and calculate runtimeQuota. + + +```go +type Plugin struct { + handle framework.Handle + client versioned.Interface + pluginArgs *config.ElasticQuotaArgs + quotaLister v1alpha1.ElasticQuotaLister + quotaInformer cache.SharedIndexInformer + podLister v1.PodLister + pdbLister policylisters.PodDisruptionBudgetLister + nodeLister v1.NodeLister + groupQuotaManager *core.GroupQuotaManager +} +``` + +To implement multi quota trees. We will construct a `groupQuotaManager` for every quota tree. + +add two fileds + +* `groupQuotaManagersForQuotaTree`: store multiple GroupQuotaManagers. The key is the tree id, value is corresponding groupQuotaManager +* `quotaToTreeMap`: store the mapping of quota and tree. The key is the quota name, value is the tree id + + + +```go +type Plugin struct { + ... + + quotaManagerLock sync.RWMutex + // groupQuotaManagersForQuotaTree store the GroupQuotaManager of all quota trees. The key is the quota tree id + groupQuotaManagersForQuotaTree map[string]*core.GroupQuotaManager + + quotaToTreeMapLock sync.RWMutex + // quotaToTreeMap store the relationship of quota and quota tree + // the key is the quota name, the value is the tree id + quotaToTreeMap map[string]string +} +``` + +##### runtime quota calculate + +Previously, all node resources are summed to calculate runtime quota. The plugin will watch the node and update the delta resource. + + +When we construct multi quota trees, we can get the total resource from the quota root annotation `quota.scheduling.koordinator.sh/total-resource` which updated by elastic-quota-profile-controller + + + + + +## Implementation History + +- [ ] 2024-02-06: Open proposal PR +