From 710c2969fadcf898ae736347588b17d51885d5e3 Mon Sep 17 00:00:00 2001 From: kaiyuechen Date: Thu, 13 Oct 2022 14:38:39 +0800 Subject: [PATCH] Add qos doc to site,readme and introduction --- README.md | 3 +- README_zh.md | 3 +- ...rference-detection-and-active-avoidance.md | 3 - .../en/docs/Getting started/introduction.md | 3 +- site/content/en/docs/Tutorials/QOS/_index.md | 7 + ...os-accurately-perform-avoidance-actions.md | 57 +++ ...ference-detection-avoidance-and-sorting.md | 55 +++ ...qos-dynamic-resource-oversold-and-limit.md | 81 ++++ .../qos-enhanced-bypass-cpuset-management.md | 38 ++ ...rference-detection-and-active-avoidance.md | 241 +++++++++++ .../docs/Tutorials/QOS/using-qos-ensurance.md | 17 + .../en/docs/Tutorials/using-qos-ensurance.md | 386 ----------------- .../Tutorials/using-time-series-prediction.md | 2 +- .../zh/docs/Getting started/introduction.md | 4 +- site/content/zh/docs/Tutorials/QOS/_index.md | 7 + ...accurately-perform-avoidance-actions.zh.md | 59 +++ ...ence-detection-avoidance-and-sorting.zh.md | 54 +++ ...-dynamic-resource-oversold-and-limit.zh.md | 79 ++++ ...os-enhanced-bypass-cpuset-management.zh.md | 39 ++ ...rence-detection-and-active-avoidance.zh.md | 249 +++++++++++ .../Tutorials/QOS/using-qos-ensurance.zh.md | 18 + .../zh/docs/Tutorials/using-qos-ensurance.md | 396 ------------------ .../Tutorials/using-time-series-prediction.md | 2 +- site/static/images/crane-qos-ensurance.png | Bin 224489 -> 60302 bytes 24 files changed, 1012 insertions(+), 791 deletions(-) create mode 100755 site/content/en/docs/Tutorials/QOS/_index.md create mode 100644 site/content/en/docs/Tutorials/QOS/qos-accurately-perform-avoidance-actions.md create mode 100644 site/content/en/docs/Tutorials/QOS/qos-customized-metrics-interference-detection-avoidance-and-sorting.md create mode 100644 site/content/en/docs/Tutorials/QOS/qos-dynamic-resource-oversold-and-limit.md create mode 100644 site/content/en/docs/Tutorials/QOS/qos-enhanced-bypass-cpuset-management.md create mode 100644 site/content/en/docs/Tutorials/QOS/qos-interference-detection-and-active-avoidance.md create mode 100644 site/content/en/docs/Tutorials/QOS/using-qos-ensurance.md delete mode 100644 site/content/en/docs/Tutorials/using-qos-ensurance.md create mode 100755 site/content/zh/docs/Tutorials/QOS/_index.md create mode 100644 site/content/zh/docs/Tutorials/QOS/qos-accurately-perform-avoidance-actions.zh.md create mode 100644 site/content/zh/docs/Tutorials/QOS/qos-customized-metrics-interference-detection-avoidance-and-sorting.zh.md create mode 100644 site/content/zh/docs/Tutorials/QOS/qos-dynamic-resource-oversold-and-limit.zh.md create mode 100644 site/content/zh/docs/Tutorials/QOS/qos-enhanced-bypass-cpuset-management.zh.md create mode 100644 site/content/zh/docs/Tutorials/QOS/qos-interference-detection-and-active-avoidance.zh.md create mode 100644 site/content/zh/docs/Tutorials/QOS/using-qos-ensurance.zh.md delete mode 100644 site/content/zh/docs/Tutorials/using-qos-ensurance.md diff --git a/README.md b/README.md index 8b033c944..5df5fa73c 100644 --- a/README.md +++ b/README.md @@ -46,8 +46,9 @@ EffectiveHorizontalPodAutoscaler supports prediction-driven autoscaling. With th Provide a simple but efficient scheduler that schedule pods based on actual node utilization data,and filters out those nodes with high load to balance the cluster. [learn more](docs/tutorials/scheduling-pods-based-on-actual-node-load.md). -**Colocation with Enhanced QoS** +**Colocation with Enhanced QOS** +QOS-related capabilities ensure the running stability of Pods on Kubernetes. It has the ability of interference detection and active avoidance under the condition of multi-dimensional metrics, and supports reasonable operation and custom metrics access; it has the ability to oversell elastic resources enhanced by the prediction algorithm, reuse and limit the idle resources in the cluster; it has the enhanced bypass cpuset Management capabilities, improve resource utilization efficiency while binding cores. [learn more](docs/tutorials/using-qos-ensurance.md). ## Architecture diff --git a/README_zh.md b/README_zh.md index f60f3d6bb..483ecc2b8 100644 --- a/README_zh.md +++ b/README_zh.md @@ -46,8 +46,9 @@ EffectiveHorizontalPodAutoscaler 支持了预测驱动的弹性。它基于社 动态调度器根据实际的节点利用率构建了一个简单但高效的模型,并过滤掉那些负载高的节点来平衡集群。[了解更多](docs/tutorials/scheduling-pods-based-on-actual-node-load.zh.md)。 -**基于 QoS 的混部** +**基于 QOS 的混部** +QOS相关能力保证了运行在 Kubernetes 上的 Pod 的稳定性。具有多维指标条件下的干扰检测和主动回避能力,支持精确操作和自定义指标接入;具有预测算法增强的弹性资源超卖能力,复用和限制集群内的空闲资源;具备增强的旁路cpuset管理能力,在绑核的同时提升资源利用效率。[了解更多](docs/tutorials/using-qos-ensurance.zh.md)。 ## 架构 diff --git a/docs/tutorials/qos-interference-detection-and-active-avoidance.md b/docs/tutorials/qos-interference-detection-and-active-avoidance.md index 8e615539d..58238a12a 100644 --- a/docs/tutorials/qos-interference-detection-and-active-avoidance.md +++ b/docs/tutorials/qos-interference-detection-and-active-avoidance.md @@ -83,9 +83,6 @@ metadata: spec: allowedActions: - disablescheduling - resourceQOS: - cpuQOS: - cpuPriority: 7 labelSelector: matchLabels: preemptible_job: "true" diff --git a/site/content/en/docs/Getting started/introduction.md b/site/content/en/docs/Getting started/introduction.md index a3767ca2b..9c4cb2e50 100644 --- a/site/content/en/docs/Getting started/introduction.md +++ b/site/content/en/docs/Getting started/introduction.md @@ -39,8 +39,9 @@ EffectiveHorizontalPodAutoscaler supports prediction-driven autoscaling. With th Provide a simple but efficient scheduler that schedule pods based on actual node utilization data,and filters out those nodes with high load to balance the cluster. [learn more](/docs/tutorials/scheduling-pods-based-on-actual-node-load). -**Colocation with Enhanced QoS** +**Colocation with Enhanced QOS** +QOS-related capabilities ensure the running stability of Pods on Kubernetes. It has the ability of interference detection and active avoidance under the condition of multi-dimensional metrics, and supports reasonable operation and custom metrics access; it has the ability to oversell elastic resources enhanced by the prediction algorithm, reuse and limit the idle resources in the cluster; it has the enhanced bypass cpuset Management capabilities, improve resource utilization efficiency while binding cores. [learn more](/docs/tutorials/using-qos-ensurance.md). ## Architecture diff --git a/site/content/en/docs/Tutorials/QOS/_index.md b/site/content/en/docs/Tutorials/QOS/_index.md new file mode 100755 index 000000000..1ed148493 --- /dev/null +++ b/site/content/en/docs/Tutorials/QOS/_index.md @@ -0,0 +1,7 @@ + +--- +title: "QOS" +weight: 9 +description: > + Introduction to QOS related capabilities. +--- \ No newline at end of file diff --git a/site/content/en/docs/Tutorials/QOS/qos-accurately-perform-avoidance-actions.md b/site/content/en/docs/Tutorials/QOS/qos-accurately-perform-avoidance-actions.md new file mode 100644 index 000000000..05d9f8d78 --- /dev/null +++ b/site/content/en/docs/Tutorials/QOS/qos-accurately-perform-avoidance-actions.md @@ -0,0 +1,57 @@ +--- +title: "QoS: Accurately Perform Avoidance Actions" +description: "Accurately Perform Avoidance Actions" +weight: 21 +--- + +## Accurately Perform Avoidance Actions +Through the following two points, the excessive operation of low-quality pod can be avoided, and the gap between the metrics and the specified watermark can be reduced faster, so as to ensure that the high-priority service is not affected +1. Sort pod + +Crane implements some general sorting methods (which will be improved later): + +ClassAndPriority: compare the QOSClass and class value of two pods, compare QOSClass first, and then class value; Those with high priority are ranked later and have higher priority + +runningTime: compare the running time of two pods. The one with long running time is ranked later and has higher priority + +If you only need to use these two sorting strategies, you can use the default sorting method: you will first compare the priority of the pod, then compare the consumption of the corresponding indicators of the pod, and then compare the running time of the pod. There is a dimension that can compare the results, that is, the sorting results of the pod + +Taking the ranking of CPU usage metric as an example, it also extends some ranking strategies related to its own metric, such as the ranking of CPU usage, which will compare the priority of two pods in turn. If the priority is the same, then compare the CPU consumption. If the CPU consumption is also the same, continue to compare the extended CPU resource consumption, and finally compare the running time of pod, when there is a difference in an indicator, the comparison result can be returned: `orderedby (classandpriority, CpuUsage, extcpuusage, runningtime) Sort(pods)` + +2. Refer to the watermark and pod usage to perform avoidance action +```go +//Divide all the metrics that trigger the watermark threshold into two parts according to their quantified attribute +metricsQuantified, MetricsNotQuantified := ThrottleDownWaterLine.DivideMetricsByQuantified() +// If there is a metric that cannot be quantified, obtain the metric of a throttleable with the highest actionpriority to operate on all selected pods +if len(MetricsNotThrottleQuantified) != 0 { + highestPrioriyMetric := GetHighestPriorityThrottleAbleMetric() + t.throttlePods(ctx, &totalReleased, highestPrioriyMetric) +} else { + //Get the latest usage, get the gap to watermark + ThrottoleDownGapToWaterLines = buildGapToWaterLine(ctx.getStateFunc()) + //If the real-time consumption of metric in the trigger watermark threshold cannot be obtained, chose the metric which is throttleable with the highest actionpriority to suppress all selected pods + if ThrottoleDownGapToWaterLines.HasUsageMissedMetric() { + highestPrioriyMetric := ThrottleDownWaterLine.GetHighestPriorityThrottleAbleMetric() + errPodKeys = throttlePods(ctx, &totalReleased, highestPrioriyMetric) + } else { + var released ReleaseResource + //Traverse the quantifiable metrics in the metrics that trigger the watermark: if the metric has a sorting method, use its sortfunc to sort the pod directly, + //otherwise use generalsorter to sort; Then use its corresponding operation method to operate the pod, and calculate the amount of resources released from the corresponding metric until the gap between the corresponding metric and the watermark no longer exists + for _, m := range metricsQuantified { + if m.SortAble { + m.SortFunc(ThrottleDownPods) + } else { + GeneralSorter(ThrottleDownPods) + } + + for !ThrottoleDownGapToWaterLines.TargetGapsRemoved(m) { + for index, _ := range ThrottleDownPods { + released = m.ThrottleFunc(ctx, index, ThrottleDownPods, &totalReleased) + ThrottoleDownGapToWaterLines[m] -= released[m] + } + } + } + } +} +``` +About extending user-defined metrics and sorting, it is introduced in "User-defined metrics interference detection avoidance and user-defined sorting". \ No newline at end of file diff --git a/site/content/en/docs/Tutorials/QOS/qos-customized-metrics-interference-detection-avoidance-and-sorting.md b/site/content/en/docs/Tutorials/QOS/qos-customized-metrics-interference-detection-avoidance-and-sorting.md new file mode 100644 index 000000000..3c45da815 --- /dev/null +++ b/site/content/en/docs/Tutorials/QOS/qos-customized-metrics-interference-detection-avoidance-and-sorting.md @@ -0,0 +1,55 @@ +--- +title: "QoS: Define your watermark" +description: "How to customized your watermark" +weight: 22 +--- + +## User-defined metrics interference detection avoidance and user-defined sorting +The use of user-defined metrics interference detection avoidance and user-defined sorting is the same as the process described in the "Accurately Perform Avoidance Actions". Here is how to customize your own metrics to participate in the interference detection avoidance process + +In order to better sort and accurately control metrics configured based on NodeQoSEnsurancePolicy, the concept of attributes is introduced into metrics. + +The attributes of metric include the following, and these fields can be realized by customized indicators: + +1. Name Indicates the name of metric, which should be consistent with the metric name collected in the collector module +2. ActionPriority Indicates the priority of the metric. 0 is the lowest and 10 is the highest +3. SortAble Indicates whether the metric can be sorted. If it is true, the corresponding SortFunc needs to be implemented +4. SortFunc The corresponding sorting method. The sorting method can be arranged and combined with some general methods, and then combined with the sorting of the metric itself, which will be introduced in detail below +5. ThrottleAble Indicates whether pod can be suppressed for this metric. For example, for the metric of CPU usage, there are corresponding suppression methods, but for the metric of memory usage, pod can only be evicted, and effective suppression cannot be carried out +6. ThrottleQuantified Indicates whether the amount of resources corresponding to metric released after suppressing (restoring) a pod can be accurately calculated. We call the metric that can be accurately quantified as quantifiable, otherwise it is not quantifiable; + For example, the CPU usage can be suppressed by limiting the CGroup usage, and the CPU usage released after suppression can be calculated by the current running value and the value after suppression; Memory usage does not belong to suppression quantifiable metric, because memory has no corresponding throttle implementation, so it is impossible to accurately measure the specific amount of memory resources released after suppressing a pod; +7. ThrottleFunc The specific method of executing throttle action. If throttle is not available, the returned released is null +8. RestoreFunc After being throttled, the specific method of performing the recovery action. If restore is not allowed, the returned released is null +9. Evictable, EvictQuantified and EvictFunc The relevant definitions of evict action are similar to those of throttle action + +```go +type metric struct { + Name WaterLineMetric + + ActionPriority int + + SortAble bool + SortFunc func(pods []podinfo.PodContext) + + ThrottleAble bool + ThrottleQuantified bool + ThrottleFunc func(ctx *ExecuteContext, index int, ThrottleDownPods ThrottlePods, totalReleasedResource *ReleaseResource) (errPodKeys []string, released ReleaseResource) + RestoreFunc func(ctx *ExecuteContext, index int, ThrottleUpPods ThrottlePods, totalReleasedResource *ReleaseResource) (errPodKeys []string, released ReleaseResource) + + EvictAble bool + EvictQuantified bool + EvictFunc func(wg *sync.WaitGroup, ctx *ExecuteContext, index int, totalReleasedResource *ReleaseResource, EvictPods EvictPods) (errPodKeys []string, released ReleaseResource) +} +``` + +After the construction is completed, register the metric through registerMetricMap() + +For the metrics that need to be customized, you can easily realize the flexible customized sorting of pod by combining the following methods with general sorting methods to represent the customized metric indicators, represents the customized sorting strategy + +```yaml +func Sorter(pods []podinfo.PodContext) { + orderedBy(classAndPriority, , runningTime).Sort(pods) +} +``` +Among them, the following sorting method `` needs to be implemented +`func (p1, p2 podinfo.PodContext) int32` \ No newline at end of file diff --git a/site/content/en/docs/Tutorials/QOS/qos-dynamic-resource-oversold-and-limit.md b/site/content/en/docs/Tutorials/QOS/qos-dynamic-resource-oversold-and-limit.md new file mode 100644 index 000000000..0c0f65d32 --- /dev/null +++ b/site/content/en/docs/Tutorials/QOS/qos-dynamic-resource-oversold-and-limit.md @@ -0,0 +1,81 @@ +--- +title: "QoS: Dynamic resource oversold and limit" +description: "How offline jobs use Crane" +weight: 20 +--- + + +## Dynamic resource oversold enhanced by prediction algorithm +In order to improve the stability, users usually set the request value higher than the actual usage when deploying applications, resulting in a waste of resources. In order to improve the resource utilization of nodes, users will deploy some besteffort applications in combination, using idle resources to realize oversold; +However, due to the lack of resource limit and request constraints and related information in these applications, scheduler may still schedule these pods to nodes with high load, which is inconsistent with our original intention, so it is best to schedule based on the free resources of nodes. + +Crane collects the idle resources of nodes in the following two ways, and takes them as the idle resources of nodes after synthesis, which enhances the accuracy of resource evaluation: + +Take cpu as an example, crane also supports the recovery of memory idle resources. + +1. CPU usage information collected locally + +`nodeCpuCannotBeReclaimed := nodeCpuUsageTotal + exclusiveCPUIdle - extResContainerCpuUsageTotal` + +ExclusiveCPUIdle refers to the idle amount of CPU occupied by the pod whose CPU manager policy is exclusive. Although this part of resources is idle, it cannot be reused because of monopoly, so it is counted as used + +ExtResContainerCpuUsageTotal refers to the CPU consumption used as dynamic resources, which needs to be subtracted to avoid secondary calculation + +2. Create a TSP of node CPU usage, which is automatically created by default, and will predict node CPU usage based on history +```yaml +apiVersion: v1 +data: + spec: | + predictionMetrics: + - algorithm: + algorithmType: dsp + dsp: + estimators: + fft: + - highFrequencyThreshold: "0.05" + lowAmplitudeThreshold: "1.0" + marginFraction: "0.2" + maxNumOfSpectrumItems: 20 + minNumOfSpectrumItems: 10 + historyLength: 3d + sampleInterval: 60s + resourceIdentifier: cpu + type: ExpressionQuery + expressionQuery: + expression: 'sum(count(node_cpu_seconds_total{mode="idle",instance=~"({{.metadata.name}})(:\\d+)?"}) by (mode, cpu)) - sum(irate(node_cpu_seconds_total{mode="idle",instance=~"({{.metadata.name}})(:\\d+)?"}[5m]))' + predictionWindowSeconds: 3600 +kind: ConfigMap +metadata: + name: noderesource-tsp-template + namespace: default +``` + +Combine the prediction algorithm with the current actual consumption to calculate the remaining available resources of the node, and give it to the node as an extended resource. Pod can indicate that the extended resource is used as an offline job to use the idle resources, so as to improve the resource utilization rate of the node; + +How to use: +When deploying pod, limit and request use `gocrane.io/<$resourcename>:<$value>`, as follows +```yaml +spec: + containers: + - image: nginx + imagePullPolicy: Always + name: extended-resource-demo-ctr + resources: + limits: + gocrane.io/cpu: "2" + gocrane.io/memory: "2000Mi" + requests: + gocrane.io/cpu: "2" + gocrane.io/memory: "2000Mi" +``` + +## Elastic resource restriction function +The native besteffort application lacks a fair guarantee of resource usage. Crane guarantees that the CPU usage of the besteffort pod using dynamic resources is limited within the reasonable range of its allowable use. The agent guarantees that the actual consumption of the pod using extended resources will not exceed its stated limit. At the same time, when the CPU competes, it can also compete fairly according to its stated amount; At the same time, pod using elastic resources will also be managed by the watermark function. + +How to use: +When deploying pod, limit and request use `gocrane.io/<$resourcename>:<$value>` + +## suitable scene +In order to increase the load of nodes, some offline jobs or less important jobs can be scheduled and deployed to the cluster by using dynamic resources. Such jobs will use idle elastic resources. +With the watermark guarantee of QOS, when the node has a high load, it will be evicted and throttled first, and the utilization of the node will be improved on the premise of ensuring the stability of high-priority services. +See the section "Used with dynamic resources" in qos-interference-detection-and-active-avoidance.md. \ No newline at end of file diff --git a/site/content/en/docs/Tutorials/QOS/qos-enhanced-bypass-cpuset-management.md b/site/content/en/docs/Tutorials/QOS/qos-enhanced-bypass-cpuset-management.md new file mode 100644 index 000000000..ed696ab99 --- /dev/null +++ b/site/content/en/docs/Tutorials/QOS/qos-enhanced-bypass-cpuset-management.md @@ -0,0 +1,38 @@ +--- +title: "QoS: Enhanced bypass cpuset management capability" +description: "Enhanced bypass cpuset management capability" +weight: 23 +--- + +## Enhanced bypass cpuset management capability +Kubelet supports the static CPU manager strategy. When the guaranteed pod runs on the node, kebelet will allocate the specified dedicated CPU for the pod, which cannot be occupied by other processes. This ensures the CPU monopoly of the guaranteed pod, but also causes the low utilization of CPU and nodes, resulting in a certain waste. +Crane agent provides a new strategy for cpuset management, allowing pod and other pod to share CPU. When it specifies CPU binding core, it can make use of the advantages of less context switching and higher cache affinity of binding core, and also allow other workload to deploy and share, so as to improve resource utilization. + +1. Three types of pod cpuset are provided: + +- Exclusive: after binding the core, other containers can no longer use the CPU and monopolize the CPU +- Share: other containers can use the CPU after binding the core +- None: select the CPU that is not occupied by the container of exclusive pod, can use the binding core of share type + +Share type binding strategy can make use of the advantages of less context switching and higher cache affinity, and can also be shared by other workload deployments to improve resource utilization + +2. Relax the restrictions on binding cores in kubelet + +Originally, it was required that the CPU limit of all containers be equal to the CPU request. Here, it is only required that the CPU limit of any container be greater than or equal to 1 and equal to the CPU request to set the binding core for the container + + +3. Support modifying the cpuset policy of pod during the running of pod, which will take effect immediately + +The CPU manager policy of pod is converted from none to share and from exclusive to share without restart + +How to use: +1. Set the cpuset manager of kubelet to "None" +2. Set CPU manager policy through pod annotation + `qos.gocrane.io/cpu-manager: none/exclusive/share` + ```yaml + apiVersion: v1 + kind: Pod + metadata: + annotations: + qos.gocrane.io/cpu-manager: none/exclusive/share + ``` \ No newline at end of file diff --git a/site/content/en/docs/Tutorials/QOS/qos-interference-detection-and-active-avoidance.md b/site/content/en/docs/Tutorials/QOS/qos-interference-detection-and-active-avoidance.md new file mode 100644 index 000000000..dd2fb299f --- /dev/null +++ b/site/content/en/docs/Tutorials/QOS/qos-interference-detection-and-active-avoidance.md @@ -0,0 +1,241 @@ +--- +title: "QoS: Interference Detection and Active Avoidance" +description: "Watermark and executor" +weight: 19 +--- + +## Qos Ensurance Architecture +Qos ensurance's architecture is shown as below. It contains three modules. + +1. state collector: collect metrics periodically +2. anomaly analyzer: analyze the node triggered anomaly used collected metrics +3. action executor: execute avoidance actions, include disable scheduling, throttle and eviction. + +![](/images/crane-qos-ensurance.png) + +The main process: + +1. State collector synchronizes policies from kube-apiserver. +2. If the policies are changed, the state collector updates the collectors. +3. State collector collects metrics periodically. +4. State collector transmits metrics to anomaly analyzer. +5. Anomaly analyzer ranges all rules to analyze the avoidance threshold or the restored threshold reached. +6. Anomaly analyzer merges the analyzed results and notices the avoidance actions. +7. Action executor executes actions based on the analyzed results. + +## Interference Detection and Active Avoidance + +### Related CR +AvoidanceAction mainly defines the operations that need to be performed after interference is detected, including several operations such as Disable Scheduling, throttle, and eviction, and defines some related parameters. + +NodeQOS mainly defines the metrics collection method and parameters, the related parameters of the watermark, and the associated avoidance operation when metrics are abnormal. +At the same time, the above content is associated to the specified nodes through a series of selectors. + +PodQOS defines the AvoidanceAction that a specified pod can be executed, and is usually paired with NodeQOS to limit the scope of execution actions from the dimensions of nodes and pods. +The selector supported by PodQOS includes label selector, and also supports filtering of specific QOSClass ("BestEffort", "Guaranteed", etc.), +specific Priority, and specific Namespace of pods, above selectors are associated with each other in the manner of "AND". + +### Disable Scheduling + +The following AvoidanceAction and NodeQOSEnsurancePolicy can be defined. As a result, when the node CPU usage triggers the threshold, disable schedule action for the node will be executed. + +The sample YAML looks like below: + +```yaml +apiVersion: ensurance.crane.io/v1alpha1 +kind: AvoidanceAction +metadata: + labels: + app: system + name: disablescheduling +spec: + description: disable schedule new pods to the node + coolDownSeconds: 300 # The minimum wait time of the node from scheduling disable status to normal status +``` + +```yaml +apiVersion: ensurance.crane.io/v1alpha1 +kind: NodeQOS +metadata: + name: "watermark1" +spec: + nodeQualityProbe: + timeoutSeconds: 10 + nodeLocalGet: + localCacheTTLSeconds: 60 + rules: + - name: "cpu-usage" + avoidanceThreshold: 2 #(1) + restoreThreshold: 2 #(2) + actionName: "disablescheduling" #(3) + strategy: "None" #(4) + metricRule: + name: "cpu_total_usage" #(5) + value: 4000 #(6) +``` + +1. We consider the rule is triggered, when the threshold reached continued so many times +2. We consider the rule is restored, when the threshold not reached continued so many times +3. Name of AvoidanceAction which be associated +4. Strategy for the action, you can set it "Preview" to not perform actually +5. Name of metric +6. Threshold of metric + +```yaml +apiVersion: ensurance.crane.io/v1alpha1 +kind: PodQOS +metadata: + name: all-elastic-pods +spec: + allowedActions: + - disablescheduling + labelSelector: + matchLabels: + preemptible_job: "true" +``` + +1. The action allowed to be executed by the pod associated with the PodQOS is eviction +2. Associate pods with preemptible_job: "true" via label selector + +Please check the video to learn more about the scheduling disable actions. + + + +### Throttle + +The following AvoidanceAction and NodeQOSEnsurancePolicy can be defined. As a result, when the node CPU usage triggers the threshold, throttle action for the node will be executed. + +The sample YAML looks like below: + +```yaml +apiVersion: ensurance.crane.io/v1alpha1 +kind: AvoidanceAction +metadata: + name: throttle + labels: + app: system +spec: + coolDownSeconds: 300 + throttle: + cpuThrottle: + minCPURatio: 10 #(1) + stepCPURatio: 10 #(2) + description: "throttle low priority pods" +``` + +1. The minimal ratio of the CPU quota, if the pod is throttled lower than this ratio, it will be set to this. +2. The step for throttle action. It will reduce this percentage of CPU quota in each avoidance triggered.It will increase this percentage of CPU quota in each restored. + +```yaml +apiVersion: ensurance.crane.io/v1alpha1 +kind: NodeQOS +metadata: + name: "watermark2" +spec: + nodeQualityProbe: + timeoutSeconds: 10 + nodeLocalGet: + localCacheTTLSeconds: 60 + rules: + - name: "cpu-usage" + avoidanceThreshold: 2 + restoredThreshold: 2 + actionName: "throttle" + strategy: "None" + metricRule: + name: "cpu_total_usage" + value: 6000 +``` + +```yaml title="PodQOS" +apiVersion: ensurance.crane.io/v1alpha1 +kind: PodQOS +metadata: + name: all-be-pods +spec: + allowedActions: + - throttle + scopeSelector: + matchExpressions: + - operator: In + scopeName: QOSClass + values: + - BestEffort +``` + +### Eviction + +The following YAML is another case, low priority pods on the node will be evicted, when the node CPU usage trigger the threshold. + +```yaml +apiVersion: ensurance.crane.io/v1alpha1 +kind: AvoidanceAction +metadata: + name: eviction + labels: + app: system +spec: + coolDownSeconds: 300 + eviction: + terminationGracePeriodSeconds: 30 #(1) + description: "evict low priority pods" +``` + +1. Duration in seconds the pod needs to terminate gracefully. + +```yaml +apiVersion: ensurance.crane.io/v1alpha1 +kind: NodeQOS +metadata: + name: "watermark3" + labels: + app: "system" +spec: + nodeQualityProbe: + timeoutSeconds: 10 + nodeLocalGet: + localCacheTTLSeconds: 60 + rules: + - name: "cpu-usage" + avoidanceThreshold: 2 + restoreThreshold: 2 + actionName: "eviction" + strategy: "Preview" #(1) + metricRule: + name: "cpu_total_usage" + value: 6000 +``` + +1. Strategy for the action, "Preview" to not perform actually + +```yaml title="PodQOS" +apiVersion: ensurance.crane.io/v1alpha1 +kind: PodQOS +metadata: + name: all-elastic-pods +spec: + allowedActions: + - eviction + labelSelector: + matchLabels: + preemptible_job: "true" +``` + + +### Supported Metrics + +Name | Description +---------|------------- +cpu_total_usage | node cpu usage +cpu_total_utilization | node cpu utilization percent +memory_total_usage | node mem usage +memory_total_utilization| node mem utilization percent + +For details, please refer to the examples under examples/ensurance. + +### Used with dynamic resources +In order to avoid the impact of active avoidance operations on high-priority services, such as the wrongful eviction of important services, +it is recommended to use PodQOS to associate workloads that use dynamic resources, so that only those workloads that use idle resources are affected when executing actions, +ensuring that The stability of the core business on the node. + +For the content of dymamic resources, see qos-dynamic-resource-oversold-and-limit.md. diff --git a/site/content/en/docs/Tutorials/QOS/using-qos-ensurance.md b/site/content/en/docs/Tutorials/QOS/using-qos-ensurance.md new file mode 100644 index 000000000..3b4121c88 --- /dev/null +++ b/site/content/en/docs/Tutorials/QOS/using-qos-ensurance.md @@ -0,0 +1,17 @@ +--- +title: "QoS Ensurance" +description: "QoS Ensurance General introduction" +weight: 18 +--- + +# Qos Ensurance +QoS ensurance guarantees the stability of the pods running on Kubernetes. + +It has the ability of interference detection and active avoidance. When pod with higher priority is affected by resource competition, disable schedule, throttle and evict will be applied to pod with lower priority to ensure the overall stability of the node. Currently, the absolute value/percentage of the node's cpu/mem is supported as a watermark. For details, please refer to qos-interference-detection-and-active-avoidance.md. +When there is interference for eviction or throttle, accurate calculation will be performed, and the operation will be stopped when the load is lowered to slightly below the watermark to prevent accidental injury and transitional operation. For details, please refer to qos-accurately-perform-avoidance-actions.md. + +At the same time, Crane supports custom metrics to adapt to the entire interference detection framework. Users only need to complete some operations such as sorting definition, and can reuse the interference detection and avoidance processes including precise operations.For details, please refer to qos-customized-metrics-interference-detection-avoidance-and-sorting.md. + +Crane has the dynamic resource oversold ability enhanced by the prediction algorithm, and reuses the idle resources. At the same time, it combines the prediction ability of the crane to better reuse the idle resources. Currently, idle resource recycling of cpu and mem is supported. At the same time, it has the elastic resource limitation function to limit the workload of reusing idle resources, and avoid impact on high-quality business and starvation issues. For details, please refer to qos-dynamic-resource-oversold-and-limit.md. + +At the same time, it has enhanced bypass cpuset management capability to improve resource utilization efficiency while binding cores. For details, please refer to qos-enhanced-bypass-cpuset-management.md. \ No newline at end of file diff --git a/site/content/en/docs/Tutorials/using-qos-ensurance.md b/site/content/en/docs/Tutorials/using-qos-ensurance.md deleted file mode 100644 index fdb77d678..000000000 --- a/site/content/en/docs/Tutorials/using-qos-ensurance.md +++ /dev/null @@ -1,386 +0,0 @@ ---- -title: "QoS Ensurance" -description: "Introduction for QoS Ensurance" -weight: 18 ---- - -QoS ensurance guarantees the stability of the pods running on Kubernetes. - -It has the ability of interference detection and active avoidance. When pod with higher priority is affected by resource competition, disable schedule, throttle and evict will be applied to pod with lower priority to support interference detection and user-defined operation of user-defined indicators; - -At the same time, it has enhanced bypass cpuset management capability to improve resource utilization efficiency while binding cores. - -It has the dynamic resource oversold ability enhanced by the prediction algorithm, and reuses the idle resources. At the same time, it combines the prediction ability of the crane to better reuse the idle resources. At the same time, it has the elastic resource limitation function to limit the workload of reusing idle resources. - -## Qos Ensurance Architecture -Qos ensurance's architecture is shown as below. It contains three modules. - -1. state collector: collect metrics periodically -2. anomaly analyzer: analyze the node triggered anomaly used collected metrics -3. action executor: execute avoidance actions, include disable scheduling, throttle and eviction. - -![crane-qos-enurance](/images/crane-qos-ensurance.png) - -The main process: - -1. State collector synchronizes policies from kube-apiserver. -2. If the policies are changed, the state collector updates the collectors. -3. State collector collects metrics periodically. -4. State collector transmits metrics to anomaly analyzer. -5. Anomaly analyzer ranges all rules to analyze the avoidance threshold or the restored threshold reached. -6. Anomaly analyzer merges the analyzed results and notices the avoidance actions. -7. Action executor executes actions based on the analyzed results. - -## Interference Detection and Active Avoidance -### Disable Scheduling - -The following AvoidanceAction and NodeQOSEnsurancePolicy can be defined. As a result, when the node CPU usage triggers the threshold, disable schedule action for the node will be executed. - -The sample YAML looks like below: - -```yaml -apiVersion: ensurance.crane.io/v1alpha1 -kind: AvoidanceAction -metadata: - labels: - app: system - name: disablescheduling -spec: - description: disable schedule new pods to the node - coolDownSeconds: 300 # The minimum wait time of the node from scheduling disable status to normal status -``` - -```yaml -apiVersion: ensurance.crane.io/v1alpha1 -kind: NodeQOSEnsurancePolicy -metadata: - name: "waterline1" - labels: - app: "system" -spec: - nodeQualityProbe: - timeoutSeconds: 10 - nodeLocalGet: - localCacheTTLSeconds: 60 - objectiveEnsurances: - - name: "cpu-usage" - avoidanceThreshold: 2 #(1) - restoreThreshold: 2 #(2) - actionName: "disablescheduling" #(3) - strategy: "None" #(4) - metricRule: - name: "cpu_total_usage" #(5) - value: 4000 #(6) -``` - -1. We consider the rule is triggered, when the threshold reached continued so many times -2. We consider the rule is restored, when the threshold not reached continued so many times -3. Name of AvoidanceAction which be associated -4. Strategy for the action, you can set it "Preview" to not perform actually -5. Name of metric -6. Threshold of metric - -Please check the video to learn more about the scheduling disable actions. - - - -### Throttle - -The following AvoidanceAction and NodeQOSEnsurancePolicy can be defined. As a result, when the node CPU usage triggers the threshold, throttle action for the node will be executed. - -The sample YAML looks like below: - -```yaml -apiVersion: ensurance.crane.io/v1alpha1 -kind: AvoidanceAction -metadata: - name: throttle - labels: - app: system -spec: - coolDownSeconds: 300 - throttle: - cpuThrottle: - minCPURatio: 10 #(1) - stepCPURatio: 10 #(2) - description: "throttle low priority pods" -``` - -1. The minimal ratio of the CPU quota, if the pod is throttled lower than this ratio, it will be set to this. -2. The step for throttle action. It will reduce this percentage of CPU quota in each avoidance triggered.It will increase this percentage of CPU quota in each restored. - -```yaml -apiVersion: ensurance.crane.io/v1alpha1 -kind: NodeQOSEnsurancePolicy -metadata: - name: "waterline2" - labels: - app: "system" -spec: - nodeQualityProbe: - timeoutSeconds: 10 - nodeLocalGet: - localCacheTTLSeconds: 60 - objectiveEnsurances: - - name: "cpu-usage" - avoidanceThreshold: 2 - restoredThreshold: 2 - actionName: "throttle" - strategy: "None" - metricRule: - name: "cpu_total_usage" - value: 6000 -``` - -### Eviction - -The following YAML is another case, low priority pods on the node will be evicted, when the node CPU usage trigger the threshold. - -```yaml -apiVersion: ensurance.crane.io/v1alpha1 -kind: AvoidanceAction -metadata: - name: eviction - labels: - app: system -spec: - coolDownSeconds: 300 - eviction: - terminationGracePeriodSeconds: 30 #(1) - description: "evict low priority pods" -``` - -1. Duration in seconds the pod needs to terminate gracefully. - -```yaml -apiVersion: ensurance.crane.io/v1alpha1 -kind: NodeQOSEnsurancePolicy -metadata: - name: "waterline3" - labels: - app: "system" -spec: - nodeQualityProbe: - timeoutSeconds: 10 - nodeLocalGet: - localCacheTTLSeconds: 60 - objectiveEnsurances: - - name: "cpu-usage" - avoidanceThreshold: 2 - restoreThreshold: 2 - actionName: "eviction" - strategy: "Preview" #(1) - metricRule: - name: "cpu_total_usage" - value: 6000 -``` - -1. Strategy for the action, "Preview" to not perform actually - -### Supported Metrics - -Name | Description ----------|------------- -cpu_total_usage | node cpu usage -cpu_total_utilization | node cpu utilization - -### Accurately Perform Avoidance Actions -Through the following two points, the excessive operation of low-quality pod can be avoided, and the gap between the metrics and the specified waterline can be reduced faster, so as to ensure that the high-priority service is not affected -1. Sort pod - -Crane implements some general sorting methods (which will be improved later): - -ClassAndPriority: compare the QOSClass and class value of two pods, compare QOSClass first, and then class value; Those with high priority are ranked later and have higher priority - -runningTime: compare the running time of two pods. The one with long running time is ranked later and has higher priority - -If you only need to use these two sorting strategies, you can use the default sorting method: you will first compare the priority of the pod, then compare the consumption of the corresponding indicators of the pod, and then compare the running time of the pod. There is a dimension that can compare the results, that is, the sorting results of the pod - -Taking the ranking of CPU usage metric as an example, it also extends some ranking strategies related to its own metric, such as the ranking of CPU usage, which will compare the priority of two pods in turn. If the priority is the same, then compare the CPU consumption. If the CPU consumption is also the same, continue to compare the extended CPU resource consumption, and finally compare the running time of pod, when there is a difference in an indicator, the comparison result can be returned: `orderedby (classandpriority, CpuUsage, extcpuusage, runningtime) Sort(pods)` - -2. Refer to the waterline and pod usage to perform avoidance action -```go -//Divide all the metrics that trigger the waterline threshold into two parts according to their quantified attribute -metricsQuantified, MetricsNotQuantified := ThrottleDownWaterLine.DivideMetricsByQuantified() -// If there is a metric that cannot be quantified, obtain the metric of a throttleable with the highest actionpriority to operate on all selected pods -if len(MetricsNotThrottleQuantified) != 0 { - highestPrioriyMetric := GetHighestPriorityThrottleAbleMetric() - t.throttlePods(ctx, &totalReleased, highestPrioriyMetric) -} else { - //Get the latest usage, get the gap to waterline - ThrottoleDownGapToWaterLines = buildGapToWaterLine(ctx.getStateFunc()) - //If the real-time consumption of metric in the trigger waterline threshold cannot be obtained, chose the metric which is throttleable with the highest actionpriority to suppress all selected pods - if ThrottoleDownGapToWaterLines.HasUsageMissedMetric() { - highestPrioriyMetric := ThrottleDownWaterLine.GetHighestPriorityThrottleAbleMetric() - errPodKeys = throttlePods(ctx, &totalReleased, highestPrioriyMetric) - } else { - var released ReleaseResource - //Traverse the quantifiable metrics in the metrics that trigger the waterline: if the metric has a sorting method, use its sortfunc to sort the pod directly, - //otherwise use generalsorter to sort; Then use its corresponding operation method to operate the pod, and calculate the amount of resources released from the corresponding metric until the gap between the corresponding metric and the waterline no longer exists - for _, m := range metricsQuantified { - if m.SortAble { - m.SortFunc(ThrottleDownPods) - } else { - GeneralSorter(ThrottleDownPods) - } - - for !ThrottoleDownGapToWaterLines.TargetGapsRemoved(m) { - for index, _ := range ThrottleDownPods { - released = m.ThrottleFunc(ctx, index, ThrottleDownPods, &totalReleased) - ThrottoleDownGapToWaterLines[m] -= released[m] - } - } - } - } -} -``` -About extending user-defined metrics and sorting, it is introduced in "User-defined metrics interference detection avoidance and user-defined sorting". - -## Enhanced bypass cpuset management capability -Kubelet supports the static CPU manager strategy. When the guaranteed pod runs on the node, kebelet will allocate the specified dedicated CPU for the pod, which cannot be occupied by other processes. This ensures the CPU monopoly of the guaranteed pod, but also causes the low utilization of CPU and nodes, resulting in a certain waste. -Crane agent provides a new strategy for cpuset management, allowing pod and other pod to share CPU. When it specifies CPU binding core, it can make use of the advantages of less context switching and higher cache affinity of binding core, and also allow other workload to deploy and share, so as to improve resource utilization. - -1. Three types of pod cpuset are provided: - -- Exclusive: after binding the core, other containers can no longer use the CPU and monopolize the CPU -- Share: other containers can use the CPU after binding the core -- None: select the CPU that is not occupied by the container of exclusive pod, can use the binding core of share type - -Share type binding strategy can make use of the advantages of less context switching and higher cache affinity, and can also be shared by other workload deployments to improve resource utilization - -2. Relax the restrictions on binding cores in kubelet - -Originally, it was required that the CPU limit of all containers be equal to the CPU request. Here, it is only required that the CPU limit of any container be greater than or equal to 1 and equal to the CPU request to set the binding core for the container - - -3. Support modifying the cpuset policy of pod during the running of pod, which will take effect immediately - -The CPU manager policy of pod is converted from none to share and from exclusive to share without restart - -How to use: -1. Set the cpuset manager of kubelet to "None" -2. Set CPU manager policy through pod annotation - `qos.gocrane.io/cpu-manager: none/exclusive/share` - ```yaml - apiVersion: v1 - kind: Pod - metadata: - annotations: - qos.gocrane.io/cpu-manager: none/exclusive/share - ``` - -## Dynamic resource oversold enhanced by prediction algorithm -In order to improve the stability, users usually set the request value higher than the actual usage when deploying applications, resulting in a waste of resources. In order to improve the resource utilization of nodes, users will deploy some besteffort applications in combination, using idle resources to realize oversold; -However, due to the lack of resource limit and request constraints and related information in these applications, scheduler may still schedule these pods to nodes with high load, which is inconsistent with our original intention, so it is best to schedule based on the free resources of nodes. - -Crane collects the idle resources of nodes in the following two ways, and takes them as the idle resources of nodes after synthesis, which enhances the accuracy of resource evaluation: - -1. CPU usage information collected locally - -`nodeCpuCannotBeReclaimed := nodeCpuUsageTotal + exclusiveCPUIdle - extResContainerCpuUsageTotal` - -ExclusiveCPUIdle refers to the idle amount of CPU occupied by the pod whose CPU manager policy is exclusive. Although this part of resources is idle, it cannot be reused because of monopoly, so it is counted as used - -ExtResContainerCpuUsageTotal refers to the CPU consumption used as dynamic resources, which needs to be subtracted to avoid secondary calculation - -2. Create a TSP of node CPU usage, which is automatically created by default, and will predict node CPU usage based on history -```yaml -apiVersion: v1 -data: - spec: | - predictionMetrics: - - algorithm: - algorithmType: dsp - dsp: - estimators: - fft: - - highFrequencyThreshold: "0.05" - lowAmplitudeThreshold: "1.0" - marginFraction: "0.2" - maxNumOfSpectrumItems: 20 - minNumOfSpectrumItems: 10 - historyLength: 3d - sampleInterval: 60s - resourceIdentifier: cpu - type: ExpressionQuery - expressionQuery: - expression: 'sum(count(node_cpu_seconds_total{mode="idle",instance=~"({{.metadata.name}})(:\\d+)?"}) by (mode, cpu)) - sum(irate(node_cpu_seconds_total{mode="idle",instance=~"({{.metadata.name}})(:\\d+)?"}[5m]))' - predictionWindowSeconds: 3600 -kind: ConfigMap -metadata: - name: noderesource-tsp-template - namespace: default -``` - -Combine the prediction algorithm with the current actual consumption to calculate the remaining available resources of the node, and give it to the node as an extended resource. Pod can indicate that the extended resource is used as an offline job to use the idle resources, so as to improve the resource utilization rate of the node; - -How to use: -When deploying pod, limit and request use `gocrane.io/<$resourcename>:<$value>`, as follows -```yaml -spec: - containers: - - image: nginx - imagePullPolicy: Always - name: extended-resource-demo-ctr - resources: - limits: - gocrane.io/cpu: "2" - requests: - gocrane.io/cpu: "2" -``` - -## Elastic resource restriction function -The native besteffort application lacks a fair guarantee of resource usage. Crane guarantees that the CPU usage of the besteffort pod using dynamic resources is limited within the reasonable range of its allowable use. The agent guarantees that the actual consumption of the pod using extended resources will not exceed its stated limit. At the same time, when the CPU competes, it can also compete fairly according to its stated amount; At the same time, pod using elastic resources will also be managed by the waterline function. - -How to use: -When deploying pod, limit and request use `gocrane.io/<$resourcename>:<$value>` - -## User-defined metrics interference detection avoidance and user-defined sorting -The use of user-defined metrics interference detection avoidance and user-defined sorting is the same as the process described in the "Accurately Perform Avoidance Actions". Here is how to customize your own metrics to participate in the interference detection avoidance process - -In order to better sort and accurately control metrics configured based on NodeQoSEnsurancePolicy, the concept of attributes is introduced into metrics. - -The attributes of metric include the following, and these fields can be realized by customized indicators: - -1. Name Indicates the name of metric, which should be consistent with the metric name collected in the collector module -2. ActionPriority Indicates the priority of the metric. 0 is the lowest and 10 is the highest -3. SortAble Indicates whether the metric can be sorted. If it is true, the corresponding SortFunc needs to be implemented -4. SortFunc The corresponding sorting method. The sorting method can be arranged and combined with some general methods, and then combined with the sorting of the metric itself, which will be introduced in detail below -5. ThrottleAble Indicates whether pod can be suppressed for this metric. For example, for the metric of CPU usage, there are corresponding suppression methods, but for the metric of memory usage, pod can only be evicted, and effective suppression cannot be carried out -6. ThrottleQuantified Indicates whether the amount of resources corresponding to metric released after suppressing (restoring) a pod can be accurately calculated. We call the metric that can be accurately quantified as quantifiable, otherwise it is not quantifiable; - For example, the CPU usage can be suppressed by limiting the CGroup usage, and the CPU usage released after suppression can be calculated by the current running value and the value after suppression; Memory usage does not belong to suppression quantifiable metric, because memory has no corresponding throttle implementation, so it is impossible to accurately measure the specific amount of memory resources released after suppressing a pod; -7. ThrottleFunc The specific method of executing throttle action. If throttle is not available, the returned released is null -8. RestoreFunc After being throttled, the specific method of performing the recovery action. If restore is not allowed, the returned released is null -9. Evictable, EvictQuantified and EvictFunc The relevant definitions of evict action are similar to those of throttle action - -```go -type metric struct { - Name WaterLineMetric - - ActionPriority int - - SortAble bool - SortFunc func(pods []podinfo.PodContext) - - ThrottleAble bool - ThrottleQuantified bool - ThrottleFunc func(ctx *ExecuteContext, index int, ThrottleDownPods ThrottlePods, totalReleasedResource *ReleaseResource) (errPodKeys []string, released ReleaseResource) - RestoreFunc func(ctx *ExecuteContext, index int, ThrottleUpPods ThrottlePods, totalReleasedResource *ReleaseResource) (errPodKeys []string, released ReleaseResource) - - EvictAble bool - EvictQuantified bool - EvictFunc func(wg *sync.WaitGroup, ctx *ExecuteContext, index int, totalReleasedResource *ReleaseResource, EvictPods EvictPods) (errPodKeys []string, released ReleaseResource) -} -``` - -After the construction is completed, register the metric through registerMetricMap() - -For the metrics that need to be customized, you can easily realize the flexible customized sorting of pod by combining the following methods with general sorting methods to represent the customized metric indicators, represents the customized sorting strategy - -```yaml -func Sorter(pods []podinfo.PodContext) { - orderedBy(classAndPriority, , runningTime).Sort(pods) -} -``` -Among them, the following sorting method `` needs to be implemented -`func (p1, p2 podinfo.PodContext) int32` \ No newline at end of file diff --git a/site/content/en/docs/Tutorials/using-time-series-prediction.md b/site/content/en/docs/Tutorials/using-time-series-prediction.md index 3ba773a67..b2bcc634e 100644 --- a/site/content/en/docs/Tutorials/using-time-series-prediction.md +++ b/site/content/en/docs/Tutorials/using-time-series-prediction.md @@ -1,7 +1,7 @@ --- title: "TimeSeriesPrediction" description: "Introduction for TimeSeriesPrediction" -weight: 19 +weight: 24 --- Knowing the future makes things easier for us. diff --git a/site/content/zh/docs/Getting started/introduction.md b/site/content/zh/docs/Getting started/introduction.md index 8af588d11..ed4b10f82 100644 --- a/site/content/zh/docs/Getting started/introduction.md +++ b/site/content/zh/docs/Getting started/introduction.md @@ -41,7 +41,9 @@ EffectiveHorizontalPodAutoscaler 支持了预测驱动的弹性。它基于社 动态调度器根据实际的节点利用率构建了一个简单但高效的模型,并过滤掉那些负载高的节点来平衡集群。[了解更多](/zh-cn/docs/tutorials/scheduling-pods-based-on-actual-node-load)。 -**基于 QoS 的混部** +**基于 QOS 的混部** + +QOS相关能力保证了运行在 Kubernetes 上的 Pod 的稳定性。具有多维指标条件下的干扰检测和主动回避能力,支持精确操作和自定义指标接入;具有预测算法增强的弹性资源超卖能力,复用和限制集群内的空闲资源;具备增强的旁路cpuset管理能力,在绑核的同时提升资源利用效率。[了解更多](/zh-cn/docs/tutorials/using-qos-ensurance.zh.md)。 ## 架构 diff --git a/site/content/zh/docs/Tutorials/QOS/_index.md b/site/content/zh/docs/Tutorials/QOS/_index.md new file mode 100755 index 000000000..f10b4fc8d --- /dev/null +++ b/site/content/zh/docs/Tutorials/QOS/_index.md @@ -0,0 +1,7 @@ + +--- +title: "QOS与混布" +weight: 9 +description: > + QOS相关能力介绍. +--- \ No newline at end of file diff --git a/site/content/zh/docs/Tutorials/QOS/qos-accurately-perform-avoidance-actions.zh.md b/site/content/zh/docs/Tutorials/QOS/qos-accurately-perform-avoidance-actions.zh.md new file mode 100644 index 000000000..4061f37d7 --- /dev/null +++ b/site/content/zh/docs/Tutorials/QOS/qos-accurately-perform-avoidance-actions.zh.md @@ -0,0 +1,59 @@ +--- +title: "QoS: 精确执行回避动作" +description: "精确执行回避动作" +weight: 21 +--- + +## 精确执行回避动作 +通过如下两点进行,避免了对于低优pod的过度操作的同时能够更快地降低指标到指定水位线的差距,保障高优业务不受影响 +1. 排序pod + + +crane实现了一些通用的排序方法(之后会更多地完善): + +classAndPriority: 比较两个pod的QOSClass和class value,优先比较QOSClass,再比较class value;priority高的排在后面优先级更高 + +runningTime:比较两个pod的运行时间,运行时间长的排在后面优先级更高 + +如果仅需使用这两个排序策略,使用默认的排序方法即可:会首先比较pod的优先级,之后比较pod对应指标的用量,之后比较pod的运行时长,有一个维度可以比较出结果即为pod的排序结果 + +以cpu usage指标的排序为例,还扩展了一些与自身指标相关的排序策略, 如cpu usage 使用量的排序,会依次比较两个pod的优先级,如果优先级相同的情况下,再比较cpu用量,如果cpu用量也相同的情况下继续比较扩展cpu资源用量, 最后比较pod的运行时长,当某一个指标存在差异时即可返回比较结果:`orderedBy(classAndPriority, cpuUsage, extCpuUsage, runningTime).Sort(pods)` + + +2. 参考水位线和pod用量执行回避动作 + ```go + //将所有触发水位线的metrics根据其Quantified属性区分为两部分 + metricsQuantified, MetricsNotQuantified := ThrottleDownWaterLine.DivideMetricsByQuantified() + // 如果存在不可Quantified的metric,获取具有最高ActionPriority的一个throttleAble的metric对所选择的所有pod进行操作 + if len(MetricsNotThrottleQuantified) != 0 { + highestPrioriyMetric := GetHighestPriorityThrottleAbleMetric() + t.throttlePods(ctx, &totalReleased, highestPrioriyMetric) + } else { + //获取节点和workload的最新用量,构造和水位线差距 + ThrottoleDownGapToWaterLines = buildGapToWaterLine(ctx.getStateFunc()) + //如果触发水位线中存在metric的实时用量无法获取,则获取具有最高ActionPriority的一个throttleAble的metric对所选择的所有pod进行压制操作 + if ThrottoleDownGapToWaterLines.HasUsageMissedMetric() { + highestPrioriyMetric := ThrottleDownWaterLine.GetHighestPriorityThrottleAbleMetric() + errPodKeys = throttlePods(ctx, &totalReleased, highestPrioriyMetric) + } else { + var released ReleaseResource + //遍历触发水位线的metric中可以量化的metric:如果metric具有排序方法则直接使用其SortFunc对pod进行排序,否则使用GeneralSorter排序; + //之后使用其对应的操作方法对pod执行操作,并计算释放出来的对应metric的资源量,直到对应metric到水位线的差距已不存在 + for _, m := range metricsQuantified { + if m.SortAble { + m.SortFunc(ThrottleDownPods) + } else { + GeneralSorter(ThrottleDownPods) + } + + for !ThrottoleDownGapToWaterLines.TargetGapsRemoved(m) { + for index, _ := range ThrottleDownPods { + released = m.ThrottleFunc(ctx, index, ThrottleDownPods, &totalReleased) + ThrottoleDownGapToWaterLines[m] -= released[m] + } + } + } + } + } + ``` +关于扩展自定义指标和排序参考 "自定义指标干扰检测回避和自定义排序" 部分 \ No newline at end of file diff --git a/site/content/zh/docs/Tutorials/QOS/qos-customized-metrics-interference-detection-avoidance-and-sorting.zh.md b/site/content/zh/docs/Tutorials/QOS/qos-customized-metrics-interference-detection-avoidance-and-sorting.zh.md new file mode 100644 index 000000000..16b3398c4 --- /dev/null +++ b/site/content/zh/docs/Tutorials/QOS/qos-customized-metrics-interference-detection-avoidance-and-sorting.zh.md @@ -0,0 +1,54 @@ +--- +title: "QoS: 定义自己的水位线指标" +description: "如何自定义水位线指标" +weight: 22 +--- + +## 自定义指标干扰检测回避和自定义排序 +自定义指标干扰检测回避和自定义排序的使用同 精确执行回避动作 部分中介绍的流程,此处介绍如何自定义自己的指标参与干扰检测回避流程 + +为了更好的基于NodeQOSEnsurancePolicy配置的metric进行排序和精准控制,对metric引入属性的概念。 + +metric的属性包含如下几个,自定义的指标实现这些字段即可: + +1. Name 表明了metric的名称,需要同collector模块中收集到的指标名称一致 +2. ActionPriority 表示指标的优先级,0为最低,10为最高 +3. SortAble 表明该指标是否可以排序,如果为true,需实现对应的SortFunc +4. SortFunc 对应的排序方法,排序方法可以排列组合一些通用方法,再结合指标自身的排序,将在下文详细介绍 +5. ThrottleAble 表明针对该指标,是否可以对pod进行压制,例如针对cpu使用量这个metric,就有相对应的压制手段,但是对于memory使用量这种指标,就只能进行pod的驱逐,无法进行有效的压制 +6. ThrottleQuantified 表明压制(restore)一个pod后,能否准确计算出经过压制后释放出的对应metric的资源量,我们将可以准确量化的指标称为可Quantified,否则为不可Quantified; + 比如cpu用量,可以通过限制cgroup用量进行压制,同时可以通过当前运行值和压制后的值计算压制后释放的cpu使用量;而比如memory usage就不属于压制可量化metric,因为memory没有对应的throttle实现,也就无法准确衡量压制一个pod后释放出来的memory资源具体用量; +7. ThrottleFunc,执行Throttle动作的具体方法,如果不可Throttle,返回的released为空 +8. RestoreFunc,被Throttle后,执行恢复动作的具体方法,如果不可Restore,返回的released为空 +9. EvictAble,EvictQuantified,EvictFunc 对evict动作的相关定义,具体内容和Throttle动作类似 + +```go +type metric struct { + Name WaterLineMetric + + ActionPriority int + + SortAble bool + SortFunc func(pods []podinfo.PodContext) + + ThrottleAble bool + ThrottleQuantified bool + ThrottleFunc func(ctx *ExecuteContext, index int, ThrottleDownPods ThrottlePods, totalReleasedResource *ReleaseResource) (errPodKeys []string, released ReleaseResource) + RestoreFunc func(ctx *ExecuteContext, index int, ThrottleUpPods ThrottlePods, totalReleasedResource *ReleaseResource) (errPodKeys []string, released ReleaseResource) + + EvictAble bool + EvictQuantified bool + EvictFunc func(wg *sync.WaitGroup, ctx *ExecuteContext, index int, totalReleasedResource *ReleaseResource, EvictPods EvictPods) (errPodKeys []string, released ReleaseResource) +} +``` + +用户可以自行定义自己的metric,在构造完成后,通过registerMetricMap()进行注册 + +针对需要自定义的指标,可以通过实现如下的方法,搭配通用的排序方法即可方便地实现pod的灵活自定义排序,以代表自定义metric指标,代表自定义的针对的排序策略 +```yaml +func Sorter(pods []podinfo.PodContext) { + orderedBy(classAndPriority, , runningTime).Sort(pods) +} +``` +其中``需要实现如下的排序方法 +`func (p1, p2 podinfo.PodContext) int32` \ No newline at end of file diff --git a/site/content/zh/docs/Tutorials/QOS/qos-dynamic-resource-oversold-and-limit.zh.md b/site/content/zh/docs/Tutorials/QOS/qos-dynamic-resource-oversold-and-limit.zh.md new file mode 100644 index 000000000..ba0566a1f --- /dev/null +++ b/site/content/zh/docs/Tutorials/QOS/qos-dynamic-resource-oversold-and-limit.zh.md @@ -0,0 +1,79 @@ +--- +title: "QoS: 弹性资源超卖和限制" +description: "离线作业如何使用Crane" +weight: 20 +--- + +## 预测算法增强的动态资源超卖 +为了提高稳定性,通常用户在部署应用的时候会设置高于实际使用量的Request值,造成资源的浪费,为了提高节点的资源利用率,用户会搭配部署一些BestEffort的应用,利用闲置资源,实现超卖; +但是这些应用由于缺乏资源limit和request的约束和相关信息,调度器依旧可能将这些pod调度到负载较高的节点上去,这与我们的初衷是不符的,所以最好能依据节点的空闲资源量进行调度。 + +crane通过如下两种方式收集了节点的空闲资源量,综合后作为节点的空闲资源量,增强了资源评估的准确性: + +这里以cpu为例,同时也支持内存的空闲资源回收和计算。 + +1. 通过本地收集的cpu用量信息 + `nodeCpuCannotBeReclaimed := nodeCpuUsageTotal + exclusiveCPUIdle - extResContainerCpuUsageTotal` + + exclusiveCPUIdle是指被cpu manager policy为exclusive的pod占用的cpu的空闲量,虽然这部分资源是空闲的,但是因为独占的原因,是无法被复用的,因此加上被算作已使用量 + + extResContainerCpuUsageTotal是指被作为动态资源使用的cpu用量,需要减去以免被二次计算 + +2. 创建节点cpu使用量的TSP,默认情况下自动创建,会根据历史预测节点CPU用量 +```yaml +apiVersion: v1 +data: + spec: | + predictionMetrics: + - algorithm: + algorithmType: dsp + dsp: + estimators: + fft: + - highFrequencyThreshold: "0.05" + lowAmplitudeThreshold: "1.0" + marginFraction: "0.2" + maxNumOfSpectrumItems: 20 + minNumOfSpectrumItems: 10 + historyLength: 3d + sampleInterval: 60s + resourceIdentifier: cpu + type: ExpressionQuery + expressionQuery: + expression: 'sum(count(node_cpu_seconds_total{mode="idle",instance=~"({{.metadata.name}})(:\\d+)?"}) by (mode, cpu)) - sum(irate(node_cpu_seconds_total{mode="idle",instance=~"({{.metadata.name}})(:\\d+)?"}[5m]))' + predictionWindowSeconds: 3600 +kind: ConfigMap +metadata: + name: noderesource-tsp-template + namespace: default +``` + +结合预测算法和当前实际用量推算节点的剩余可用资源,并将其作为拓展资源赋予节点,pod可标明使用该扩展资源作为离线作业将空闲资源利用起来,以提升节点的资源利用率; + +使用方法: +部署pod时limit和request使用`gocrane.io/<$ResourceName>:<$value>`即可,如下 +```yaml +spec: + containers: + - image: nginx + imagePullPolicy: Always + name: extended-resource-demo-ctr + resources: + limits: + gocrane.io/cpu: "2" + gocrane.io/memory: "2000Mi" + requests: + gocrane.io/cpu: "2" + gocrane.io/memory: "2000Mi" +``` + +## 弹性资源限制功能 +原生的BestEffort应用缺乏资源用量的公平保证,Crane保证使用动态资源的BestEffort pod其cpu使用量被限制在其允许使用的合理范围内,agent保证使用扩展资源的pod实际用量也不会超过其声明限制,同时在cpu竞争时也能按照各自声明量公平竞争;同时使用弹性资源的pod也会受到水位线功能的管理。 + +使用方法: +部署pod时limit和request使用`gocrane.io/<$ResourceName>:<$value>`即可 + +## 适配场景 +为了提升节点的负载,可以将一些离线作业或者重要性较低的作业通过使用弹性资源的方式调度部署到集群中,这类作业会使用空闲的弹性资源, +搭配QOS的水位线保障,在节点出现负载较高的时候,也会优先被驱逐和压制,在保证高优先级业务稳定的前提下提升节点利用率。 +可以参见qos-interference-detection-and-active-avoidance.zh.md中"与弹性资源搭配使用"部分的内容。 \ No newline at end of file diff --git a/site/content/zh/docs/Tutorials/QOS/qos-enhanced-bypass-cpuset-management.zh.md b/site/content/zh/docs/Tutorials/QOS/qos-enhanced-bypass-cpuset-management.zh.md new file mode 100644 index 000000000..a216d0535 --- /dev/null +++ b/site/content/zh/docs/Tutorials/QOS/qos-enhanced-bypass-cpuset-management.zh.md @@ -0,0 +1,39 @@ +--- +title: "QoS: 增强的旁路cpuset管理能力" +description: "增强的旁路cpuset管理能力" +weight: 23 +--- + +## 增强的旁路cpuset管理能力 +kubelet支持static的cpu manager策略,当guaranteed pod运行在节点上时,kebelet会为该pod分配指定的专属cpu,其他进程无法占用,这保证了guaranteed pod的cpu独占,但是也造成了cpu和节点的的利用率较低,造成了一定的浪费。 +crane agent为cpuset管理提供了新的策略,允许pod和其他pod共享cpu当其指定了cpu绑核时,可以在利用绑核更少的上下文切换和更高的缓存亲和性的优点的前提下,还能让其他workload部署共用,提升资源利用率。 + +1. 提供了3种pod cpuset类型: + +- exclusive:绑核后其他container不能再使用该cpu,独占cpu +- share:绑核后其他container可以使用该cpu +- none:选择没有被exclusive pod的container占用的cpu,可以使用share类型的绑核 + + share类型的绑核策略可以在利用绑核更少的上下文切换和更高的缓存亲和性的优点的前提下,还能让其他workload部署共用,提升资源利用率 + +2. 放宽了kubelet中绑核的限制 + + 原先需要所有container的CPU limit与CPU request相等 ,这里只需要任意container的CPU limit大于或等于1且等于CPU request即可为该container设置绑核 + + +3. 支持在pod运行过程中修改pod的 cpuset policy,会立即生效 + + pod的cpu manager policy从none转换到share,从exclusive转换到share,均无需重启 + +使用方法: +1. 设置kubelet的cpuset manager为"none" +2. 通过pod annotation设置cpu manager policy + + `qos.gocrane.io/cpu-manager: none/exclusive/share` + ```yaml + apiVersion: v1 + kind: Pod + metadata: + annotations: + qos.gocrane.io/cpu-manager: none/exclusive/share + ``` \ No newline at end of file diff --git a/site/content/zh/docs/Tutorials/QOS/qos-interference-detection-and-active-avoidance.zh.md b/site/content/zh/docs/Tutorials/QOS/qos-interference-detection-and-active-avoidance.zh.md new file mode 100644 index 000000000..607ff9859 --- /dev/null +++ b/site/content/zh/docs/Tutorials/QOS/qos-interference-detection-and-active-avoidance.zh.md @@ -0,0 +1,249 @@ +--- +title: "QoS:干扰检测和主动回避" +description: "水位线功能" +weight: 19 +--- + +## Qos Ensurance 架构 +Qos ensurance 的架构如下图所示。它包含三个模块。 + +1. `State Collector`:定期收集指标 +2. `Anomaly Analyzer`:使用收集指标,以分析节点是否发生异常 +3. `Action Executor`:执行回避动作,包括 Disable Scheduling、Throttle 和 Eviction。 + +![](/images/crane-qos-ensurance.png) + +主要流程: + +1. `State Collector` 从 kube-apiserver 同步策略。 +2. 如果策略发生更改,`State Collector`会更新指标收集规则。 +3. `State Collector`定期收集指标。 +4. `State Collector`将指标传输到`Anomaly Analyzer`。 +5. `Anomaly Analyzer`对所有规则进行范围分析,以分析达到的回避阈值或恢复阈值。 +6. `Anomaly Analyzer`合并分析结果并通知`Action Executor`执行回避动作。 +7. `Action Executor`根据分析结果执行动作。 + +## 干扰检测和主动回避 + +### 相关CR +AvoidanceAction主要定义了检测到干扰后需要执行的操作,包含了Disable Scheduling, throttle, eviction等几个操作,并且定义了其相关的一些参数。 + +NodeQOS主要定义了指标采集方式和参数,水位线指标相关参数,以及指标异常时关联的回避操作,同时通过label selector将上面的内容关联到指定的节点。 + +PodQOS定义了指定pod可以被执行的AvoidanceAction,通常和NodeQOS搭配起来,从节点和pod的维度共同限制执行动作的范围,PodQOS支持的seletor包含label selector, +还支持筛选特定QOSClass("BestEffort","Guaranteed"等),特定Priority,特定Namespace的pod,并且之间采用与的方式关联。 + +### Disable Scheduling + +定义 `AvoidanceAction`, `PodQOS`和 `NodeQOS`。 + +当节点 CPU 使用率触发回避阈值时,将该节点设置为禁用调度。 + + +示例 YAML 如下所示: + +```yaml title="AvoidanceAction" +apiVersion: ensurance.crane.io/v1alpha1 +kind: AvoidanceAction +metadata: + labels: + app: system + name: disablescheduling +spec: + description: disable schedule new pods to the node + coolDownSeconds: 300 #(1) +``` + +1. 节点从禁止调度状态到正常状态的最小等待时间 + +```yaml title="NodeQOS" +apiVersion: ensurance.crane.io/v1alpha1 +kind: NodeQOS +metadata: + name: "watermark1" + labels: + app: "system" +spec: + nodeQualityProbe: + timeoutSeconds: 10 + nodeLocalGet: + localCacheTTLSeconds: 60 + rules: + - name: "cpu-usage" + avoidanceThreshold: 2 #(1) + restoreThreshold: 2 #(2) + actionName: "disablescheduling" #(3) + strategy: "None" #(4) + metricRule: + name: "cpu_total_usage" #(5) + value: 4000 #(6) +``` + +1. 当达到阈值并持续多次,那么我们认为规则被触发 +2. 当阈值未达到并继续多次, 那么我们认为规则已恢复 +3. 关联到 AvoidanceAction 名称 +4. 动作的策略,你可以将其设置为“预览”以不实际执行 +5. 指标名称 +6. 指标的阈值 + +```yaml title="PodQOS" +apiVersion: ensurance.crane.io/v1alpha1 +kind: PodQOS +metadata: + name: all-elastic-pods +spec: + allowedActions: #(1) + - eviction + labelSelector: #(2) + matchLabels: + preemptible_job: "true" +``` + +1. 被该PodQOS关联的pod允许被执行的action为eviction +2. 通过label selector关联具有preemptible_job: "true"的pod + +请观看视频以了解更多`Disable Scheduling`的细节。 + + + +### Throttle + +定义 `AvoidanceAction` 和 `NodeQOSEnsurancePolicy`。 + +当节点 CPU 使用率触发回避阈值时,将执行节点的`Throttle Action`。 + +示例 YAML 如下所示: + +```yaml title="AvoidanceAction" +apiVersion: ensurance.crane.io/v1alpha1 +kind: AvoidanceAction +metadata: + name: throttle + labels: + app: system +spec: + coolDownSeconds: 300 + throttle: + cpuThrottle: + minCPURatio: 10 #(1) + stepCPURatio: 10 #(2) + description: "throttle low priority pods" +``` + +1. CPU 配额的最小比例,如果 pod 被限制低于这个比例,就会被设置为这个。 + + +2. 该配置设置给`Throttle Action`。它将在每个触发的回避动作中减少这个 CPU 配额占比。它会在每个恢复动作中增加这个 CPU 配额占比。 + +```yaml title="NodeQOS" +apiVersion: ensurance.crane.io/v1alpha1 +kind: NodeQOS +metadata: + name: "watermark2" + labels: + app: "system" +spec: + nodeQualityProbe: + timeoutSeconds: 10 + nodeLocalGet: + localCacheTTLSeconds: 60 + rules: + - name: "cpu-usage" + avoidanceThreshold: 2 + restoredThreshold: 2 + actionName: "throttle" + strategy: "None" + metricRule: + name: "cpu_total_usage" + value: 6000 +``` + +```yaml title="PodQOS" +apiVersion: ensurance.crane.io/v1alpha1 +kind: PodQOS +metadata: + name: all-be-pods +spec: + allowedActions: + - throttle + scopeSelector: + matchExpressions: + - operator: In + scopeName: QOSClass + values: + - BestEffort +``` + +### Eviction + +下面的 YAML 是另一种情况,当节点 CPU 使用率触发阈值时,节点上的低优先级 pod 将被驱逐。 + +```yaml title="AvoidanceAction" +apiVersion: ensurance.crane.io/v1alpha1 +kind: AvoidanceAction +metadata: + name: eviction + labels: + app: system +spec: + coolDownSeconds: 300 + eviction: + terminationGracePeriodSeconds: 30 #(1) + description: "evict low priority pods" +``` + +pod 需要优雅终止的持续时间(以秒为单位)。 + +```yaml title="NodeQOS" +apiVersion: ensurance.crane.io/v1alpha1 +kind: NodeQOS +metadata: + name: "watermark3" + labels: + app: "system" +spec: + nodeQualityProbe: + timeoutSeconds: 10 + nodeLocalGet: + localCacheTTLSeconds: 60 + rules: + - name: "cpu-usage" + avoidanceThreshold: 2 + restoreThreshold: 2 + actionName: "eviction" + strategy: "Preview" #(1) + metricRule: + name: "cpu_total_usage" + value: 6000 +``` + +```yaml title="PodQOS" +apiVersion: ensurance.crane.io/v1alpha1 +kind: PodQOS +metadata: + name: all-elastic-pods +spec: + allowedActions: + - eviction + labelSelector: + matchLabels: + preemptible_job: "true" +``` + +回避动作策略。当设置为`Preview`时,将不会被实际执行 + +### 支持的水位线指标 +Name | Description +---------|------------- +cpu_total_usage | node cpu usage +cpu_total_utilization | node cpu utilization percent +memory_total_usage | node mem usage +memory_total_utilization| node mem utilization percent + +具体可以参考examples/ensurance下的例子 + +### 与弹性资源搭配使用 +为了避免主动回避操作对于高优先级业务的影响,比如误驱逐了重要业务,建议使用PodQOS关联使用了弹性资源的workload,这样在执行动作的时候只会影响这些使用了空闲资源的workload, +保证了节点上的核心业务的稳定。 + +弹性资源的内容可以参见qos-dynamic-resource-oversold-and-limit.zh.md。 \ No newline at end of file diff --git a/site/content/zh/docs/Tutorials/QOS/using-qos-ensurance.zh.md b/site/content/zh/docs/Tutorials/QOS/using-qos-ensurance.zh.md new file mode 100644 index 000000000..8321148f4 --- /dev/null +++ b/site/content/zh/docs/Tutorials/QOS/using-qos-ensurance.zh.md @@ -0,0 +1,18 @@ +--- +title: "QoS Ensurance" +description: "QoS Ensurance总体介绍" +weight: 18 +--- + +# QOS Ensurance +Qos 相关能力保证了运行在 Kubernetes 上的 Pod 的稳定性。 + +具有干扰检测和主动回避能力,当较高优先级的 Pod 受到资源竞争的影响时,Disable Schedule、Throttle以及Evict 将应用于低优先级的 Pod,以保证节点整体的稳定, +目前已经支持节点的cpu/mem负载绝对值/百分比作为水位线,具体可以参考qos-interference-detection-and-active-avoidance.zh.md +在发生干扰进行驱逐或压制时,会进行精确计算,将负载降低到略低于水位线即停止操作,防止误伤和过渡操作,具体内容可以参照qos-accurately-perform-avoidance-actions.zh.md。 + +同时,crane支持自定义指标适配整个干扰检测框架,只需要完成排序定义等一些操作,即可复用包含精确操作在内的干扰检测和回避流程,具体内容可以参照qos-customized-metrics-interference-detection-avoidance-and-sorting.zh.md。 + +具有预测算法增强的弹性资源超卖能力,将集群内的空闲资源复用起来,同时结合crane的预测能力,更好地复用闲置资源,当前已经支持cpu和mem的空闲资源回收。同时具有弹性资源限制功能,限制使用弹性资源的workload最大和最小资源使用量,避免对高优业务的影响和饥饿问题。具体内容可以参照qos-dynamic-resource-oversold-and-limit.zh.md。 + +同时具备增强的旁路cpuset管理能力,在绑核的同时提升资源利用效率,具体内容可以参照qos-enhanced-bypass-cpuset-management.zh.md。 \ No newline at end of file diff --git a/site/content/zh/docs/Tutorials/using-qos-ensurance.md b/site/content/zh/docs/Tutorials/using-qos-ensurance.md deleted file mode 100644 index 12379772e..000000000 --- a/site/content/zh/docs/Tutorials/using-qos-ensurance.md +++ /dev/null @@ -1,396 +0,0 @@ ---- -title: "QoS Ensurance" -description: "QoS Ensurance 功能介绍" -weight: 18 ---- - -Qos Ensurance 保证了运行在 Kubernetes 上的 Pod 的稳定性。 - -具有干扰检测和主动回避能力,当较高优先级的 Pod 受到资源竞争的影响时,Disable Schedule、Throttle以及Evict 将应用于低优先级的 Pod,支持自定义指标干扰检测和自定义操作; - -同时具备增强的旁路cpuset管理能力,在绑核的同时提升资源利用效率。 - -具有预测算法增强的动态资源超卖能力,将空闲资源复用起来,同时结合crane的预测能力,更好地复用闲置资源。同时具有弹性资源限制功能,限制复用空闲资源的workload。 - -## Qos Ensurance 架构 -Qos ensurance 的架构如下图所示。它包含三个模块。 - -1. `State Collector`:定期收集指标 -2. `Anomaly Analyzer`:使用收集指标,以分析节点是否发生异常 -3. `Action Executor`:执行回避动作,包括 Disable Scheduling、Throttle 和 Eviction。 - -![crane-qos-enurance](/images/crane-qos-ensurance.png) - -主要流程: - -1. `State Collector` 从 kube-apiserver 同步策略。 -2. 如果策略发生更改,`State Collector`会更新指标收集规则。 -3. `State Collector`定期收集指标。 -4. `State Collector`将指标传输到`Anomaly Analyzer`。 -5. `Anomaly Analyzer`对所有规则进行范围分析,以分析达到的回避阈值或恢复阈值。 -6. `Anomaly Analyzer`合并分析结果并通知`Action Executor`执行回避动作。 -7. `Action Executor`根据分析结果执行动作。 - -## 干扰检测和主动回避 -### Disable Scheduling - -定义 `AvoidanceAction` 和 `NodeQOSEnsurancePolicy`。 - -当节点 CPU 使用率触发回避阈值时,将该节点设置为禁用调度。 - - -示例 YAML 如下所示: - -```yaml title="AvoidanceAction" -apiVersion: ensurance.crane.io/v1alpha1 -kind: AvoidanceAction -metadata: - labels: - app: system - name: disablescheduling -spec: - description: disable schedule new pods to the node - coolDownSeconds: 300 #(1) -``` - -1. 节点从禁止调度状态到正常状态的最小等待时间 - -```yaml title="NodeQOSEnsurancePolicy" -apiVersion: ensurance.crane.io/v1alpha1 -kind: NodeQOSEnsurancePolicy -metadata: - name: "waterline1" - labels: - app: "system" -spec: - nodeQualityProbe: - timeoutSeconds: 10 - nodeLocalGet: - localCacheTTLSeconds: 60 - objectiveEnsurances: - - name: "cpu-usage" - avoidanceThreshold: 2 #(1) - restoreThreshold: 2 #(2) - actionName: "disablescheduling" #(3) - strategy: "None" #(4) - metricRule: - name: "cpu_total_usage" #(5) - value: 4000 #(6) -``` - -1. 当达到阈值并持续多次,那么我们认为规则被触发 -2. 当阈值未达到并继续多次, 那么我们认为规则已恢复 -3. 关联到 AvoidanceAction 名称 -4. 动作的策略,你可以将其设置为“预览”以不实际执行 -5. 指标名称 -6. 指标的阈值 - -请观看视频以了解更多`Disable Scheduling`的细节。 - - - -### Throttle - -定义 `AvoidanceAction` 和 `NodeQOSEnsurancePolicy`。 - -当节点 CPU 使用率触发回避阈值时,将执行节点的`Throttle Action`。 - -示例 YAML 如下所示: - -```yaml title="AvoidanceAction" -apiVersion: ensurance.crane.io/v1alpha1 -kind: AvoidanceAction -metadata: - name: throttle - labels: - app: system -spec: - coolDownSeconds: 300 - throttle: - cpuThrottle: - minCPURatio: 10 #(1) - stepCPURatio: 10 #(2) - description: "throttle low priority pods" -``` - -1. CPU 配额的最小比例,如果 pod 被限制低于这个比例,就会被设置为这个。 - - -2. 该配置设置给`Throttle Action`。它将在每个触发的回避动作中减少这个 CPU 配额占比。它会在每个恢复动作中增加这个 CPU 配额占比。 - -```yaml title="NodeQOSEnsurancePolicy" -apiVersion: ensurance.crane.io/v1alpha1 -kind: NodeQOSEnsurancePolicy -metadata: - name: "waterline2" - labels: - app: "system" -spec: - nodeQualityProbe: - timeoutSeconds: 10 - nodeLocalGet: - localCacheTTLSeconds: 60 - objectiveEnsurances: - - name: "cpu-usage" - avoidanceThreshold: 2 - restoredThreshold: 2 - actionName: "throttle" - strategy: "None" - metricRule: - name: "cpu_total_usage" - value: 6000 -``` - -### Eviction - -下面的 YAML 是另一种情况,当节点 CPU 使用率触发阈值时,节点上的低优先级 pod 将被驱逐。 - -```yaml title="AvoidanceAction" -apiVersion: ensurance.crane.io/v1alpha1 -kind: AvoidanceAction -metadata: - name: eviction - labels: - app: system -spec: - coolDownSeconds: 300 - eviction: - terminationGracePeriodSeconds: 30 #(1) - description: "evict low priority pods" -``` - -pod 需要优雅终止的持续时间(以秒为单位)。 - -```yaml title="NodeQOSEnsurancePolicy" -apiVersion: ensurance.crane.io/v1alpha1 -kind: NodeQOSEnsurancePolicy -metadata: - name: "waterline3" - labels: - app: "system" -spec: - nodeQualityProbe: - timeoutSeconds: 10 - nodeLocalGet: - localCacheTTLSeconds: 60 - objectiveEnsurances: - - name: "cpu-usage" - avoidanceThreshold: 2 - restoreThreshold: 2 - actionName: "eviction" - strategy: "Preview" #(1) - metricRule: - name: "cpu_total_usage" - value: 6000 -``` - -回避动作策略。当设置为`Preview`时,将不会被实际执行 - -### Supported Metrics - -Name | Description ----------|------------- -cpu_total_usage | node cpu usage -cpu_total_utilization | node cpu utilization - -### 精确执行回避动作 -通过如下两点进行,避免了对于低优pod的过度操作的同时能够更快地降低指标到指定水位线的差距,保障高优业务不受影响 -1. 排序pod - - -crane实现了一些通用的排序方法(之后会更多地完善): - -classAndPriority: 比较两个pod的QOSClass和class value,优先比较QOSClass,再比较class value;priority高的排在后面优先级更高 - -runningTime:比较两个pod的运行时间,运行时间长的排在后面优先级更高 - -如果仅需使用这两个排序策略,使用默认的排序方法即可:会首先比较pod的优先级,之后比较pod对应指标的用量,之后比较pod的运行时长,有一个维度可以比较出结果即为pod的排序结果 - -以cpu usage指标的排序为例,还扩展了一些与自身指标相关的排序策略, 如cpu usage 使用量的排序,会依次比较两个pod的优先级,如果优先级相同的情况下,再比较cpu用量,如果cpu用量也相同的情况下继续比较扩展cpu资源用量, 最后比较pod的运行时长,当某一个指标存在差异时即可返回比较结果:`orderedBy(classAndPriority, cpuUsage, extCpuUsage, runningTime).Sort(pods)` - - -2. 参考水位线和pod用量执行回避动作 - ```go - //将所有触发水位线的metrics根据其Quantified属性区分为两部分 - metricsQuantified, MetricsNotQuantified := ThrottleDownWaterLine.DivideMetricsByQuantified() - // 如果存在不可Quantified的metric,获取具有最高ActionPriority的一个throttleAble的metric对所选择的所有pod进行操作 - if len(MetricsNotThrottleQuantified) != 0 { - highestPrioriyMetric := GetHighestPriorityThrottleAbleMetric() - t.throttlePods(ctx, &totalReleased, highestPrioriyMetric) - } else { - //获取节点和workload的最新用量,构造和水位线差距 - ThrottoleDownGapToWaterLines = buildGapToWaterLine(ctx.getStateFunc()) - //如果触发水位线中存在metric的实时用量无法获取,则获取具有最高ActionPriority的一个throttleAble的metric对所选择的所有pod进行压制操作 - if ThrottoleDownGapToWaterLines.HasUsageMissedMetric() { - highestPrioriyMetric := ThrottleDownWaterLine.GetHighestPriorityThrottleAbleMetric() - errPodKeys = throttlePods(ctx, &totalReleased, highestPrioriyMetric) - } else { - var released ReleaseResource - //遍历触发水位线的metric中可以量化的metric:如果metric具有排序方法则直接使用其SortFunc对pod进行排序,否则使用GeneralSorter排序; - //之后使用其对应的操作方法对pod执行操作,并计算释放出来的对应metric的资源量,直到对应metric到水位线的差距已不存在 - for _, m := range metricsQuantified { - if m.SortAble { - m.SortFunc(ThrottleDownPods) - } else { - GeneralSorter(ThrottleDownPods) - } - - for !ThrottoleDownGapToWaterLines.TargetGapsRemoved(m) { - for index, _ := range ThrottleDownPods { - released = m.ThrottleFunc(ctx, index, ThrottleDownPods, &totalReleased) - ThrottoleDownGapToWaterLines[m] -= released[m] - } - } - } - } - } - ``` -关于扩展自定义指标和排序参考 "自定义指标干扰检测回避和自定义排序" 部分 - -## 增强的旁路cpuset管理能力 -kubelet支持static的cpu manager策略,当guaranteed pod运行在节点上时,kebelet会为该pod分配指定的专属cpu,其他进程无法占用,这保证了guaranteed pod的cpu独占,但是也造成了cpu和节点的的利用率较低,造成了一定的浪费。 -crane agent为cpuset管理提供了新的策略,允许pod和其他pod共享cpu当其指定了cpu绑核时,可以在利用绑核更少的上下文切换和更高的缓存亲和性的优点的前提下,还能让其他workload部署共用,提升资源利用率。 - -1. 提供了3种pod cpuset类型: - -- exclusive:绑核后其他container不能再使用该cpu,独占cpu -- share:绑核后其他container可以使用该cpu -- none:选择没有被exclusive pod的container占用的cpu,可以使用share类型的绑核 - - share类型的绑核策略可以在利用绑核更少的上下文切换和更高的缓存亲和性的优点的前提下,还能让其他workload部署共用,提升资源利用率 - -2. 放宽了kubelet中绑核的限制 - - 原先需要所有container的CPU limit与CPU request相等 ,这里只需要任意container的CPU limit大于或等于1且等于CPU request即可为该container设置绑核 - - -3. 支持在pod运行过程中修改pod的 cpuset policy,会立即生效 - - pod的cpu manager policy从none转换到share,从exclusive转换到share,均无需重启 - -使用方法: -1. 设置kubelet的cpuset manager为"none" -2. 通过pod annotation设置cpu manager policy - - `qos.gocrane.io/cpu-manager: none/exclusive/share` - ```yaml - apiVersion: v1 - kind: Pod - metadata: - annotations: - qos.gocrane.io/cpu-manager: none/exclusive/share - ``` - -## 预测算法增强的动态资源超卖 -为了提高稳定性,通常用户在部署应用的时候会设置高于实际使用量的Request值,造成资源的浪费,为了提高节点的资源利用率,用户会搭配部署一些BestEffort的应用,利用闲置资源,实现超卖; -但是这些应用由于缺乏资源limit和request的约束和相关信息,调度器依旧可能将这些pod调度到负载较高的节点上去,这与我们的初衷是不符的,所以最好能依据节点的空闲资源量进行调度。 - -crane通过如下两种方式收集了节点的空闲资源量,综合后作为节点的空闲资源量,增强了资源评估的准确性: - -1. 通过本地收集的cpu用量信息 - `nodeCpuCannotBeReclaimed := nodeCpuUsageTotal + exclusiveCPUIdle - extResContainerCpuUsageTotal` - - exclusiveCPUIdle是指被cpu manager policy为exclusive的pod占用的cpu的空闲量,虽然这部分资源是空闲的,但是因为独占的原因,是无法被复用的,因此加上被算作已使用量 - - extResContainerCpuUsageTotal是指被作为动态资源使用的cpu用量,需要减去以免被二次计算 - -2. 创建节点cpu使用量的TSP,默认情况下自动创建,会根据历史预测节点CPU用量 -```yaml -apiVersion: v1 -data: - spec: | - predictionMetrics: - - algorithm: - algorithmType: dsp - dsp: - estimators: - fft: - - highFrequencyThreshold: "0.05" - lowAmplitudeThreshold: "1.0" - marginFraction: "0.2" - maxNumOfSpectrumItems: 20 - minNumOfSpectrumItems: 10 - historyLength: 3d - sampleInterval: 60s - resourceIdentifier: cpu - type: ExpressionQuery - expressionQuery: - expression: 'sum(count(node_cpu_seconds_total{mode="idle",instance=~"({{.metadata.name}})(:\\d+)?"}) by (mode, cpu)) - sum(irate(node_cpu_seconds_total{mode="idle",instance=~"({{.metadata.name}})(:\\d+)?"}[5m]))' - predictionWindowSeconds: 3600 -kind: ConfigMap -metadata: - name: noderesource-tsp-template - namespace: default -``` - -结合预测算法和当前实际用量推算节点的剩余可用资源,并将其作为拓展资源赋予节点,pod可标明使用该扩展资源作为离线作业将空闲资源利用起来,以提升节点的资源利用率; - -使用方法: -部署pod时limit和request使用`gocrane.io/<$ResourceName>:<$value>`即可,如下 -```yaml -spec: - containers: - - image: nginx - imagePullPolicy: Always - name: extended-resource-demo-ctr - resources: - limits: - gocrane.io/cpu: "2" - requests: - gocrane.io/cpu: "2" -``` - -## 弹性资源限制功能 -原生的BestEffort应用缺乏资源用量的公平保证,Crane保证使用动态资源的BestEffort pod其cpu使用量被限制在其允许使用的合理范围内,agent保证使用扩展资源的pod实际用量也不会超过其声明限制,同时在cpu竞争时也能按照各自声明量公平竞争;同时使用弹性资源的pod也会受到水位线功能的管理。 - -使用方法: -部署pod时limit和request使用`gocrane.io/<$ResourceName>:<$value>`即可 - -## 自定义指标干扰检测回避和自定义排序 -自定义指标干扰检测回避和自定义排序的使用同 精确执行回避动作 部分中介绍的流程,此处介绍如何自定义自己的指标参与干扰检测回避流程 - -为了更好的基于NodeQOSEnsurancePolicy配置的metric进行排序和精准控制,对metric引入属性的概念。 - -metric的属性包含如下几个,自定义的指标实现这些字段即可: - -1. Name 表明了metric的名称,需要同collector模块中收集到的指标名称一致 -2. ActionPriority 表示指标的优先级,0为最低,10为最高 -3. SortAble 表明该指标是否可以排序,如果为true,需实现对应的SortFunc -4. SortFunc 对应的排序方法,排序方法可以排列组合一些通用方法,再结合指标自身的排序,将在下文详细介绍 -5. ThrottleAble 表明针对该指标,是否可以对pod进行压制,例如针对cpu使用量这个metric,就有相对应的压制手段,但是对于memory使用量这种指标,就只能进行pod的驱逐,无法进行有效的压制 -6. ThrottleQuantified 表明压制(restore)一个pod后,能否准确计算出经过压制后释放出的对应metric的资源量,我们将可以准确量化的指标称为可Quantified,否则为不可Quantified; - 比如cpu用量,可以通过限制cgroup用量进行压制,同时可以通过当前运行值和压制后的值计算压制后释放的cpu使用量;而比如memory usage就不属于压制可量化metric,因为memory没有对应的throttle实现,也就无法准确衡量压制一个pod后释放出来的memory资源具体用量; -7. ThrottleFunc,执行Throttle动作的具体方法,如果不可Throttle,返回的released为空 -8. RestoreFunc,被Throttle后,执行恢复动作的具体方法,如果不可Restore,返回的released为空 -9. EvictAble,EvictQuantified,EvictFunc 对evict动作的相关定义,具体内容和Throttle动作类似 - -```go -type metric struct { - Name WaterLineMetric - - ActionPriority int - - SortAble bool - SortFunc func(pods []podinfo.PodContext) - - ThrottleAble bool - ThrottleQuantified bool - ThrottleFunc func(ctx *ExecuteContext, index int, ThrottleDownPods ThrottlePods, totalReleasedResource *ReleaseResource) (errPodKeys []string, released ReleaseResource) - RestoreFunc func(ctx *ExecuteContext, index int, ThrottleUpPods ThrottlePods, totalReleasedResource *ReleaseResource) (errPodKeys []string, released ReleaseResource) - - EvictAble bool - EvictQuantified bool - EvictFunc func(wg *sync.WaitGroup, ctx *ExecuteContext, index int, totalReleasedResource *ReleaseResource, EvictPods EvictPods) (errPodKeys []string, released ReleaseResource) -} -``` - -用户可以自行定义自己的metric,在构造完成后,通过registerMetricMap()进行注册 - -针对需要自定义的指标,可以通过实现如下的方法,搭配通用的排序方法即可方便地实现pod的灵活自定义排序,以代表自定义metric指标,代表自定义的针对的排序策略 -```yaml -func Sorter(pods []podinfo.PodContext) { - orderedBy(classAndPriority, , runningTime).Sort(pods) -} -``` -其中``需要实现如下的排序方法 -`func (p1, p2 podinfo.PodContext) int32` \ No newline at end of file diff --git a/site/content/zh/docs/Tutorials/using-time-series-prediction.md b/site/content/zh/docs/Tutorials/using-time-series-prediction.md index dbf6f217b..e279ec838 100644 --- a/site/content/zh/docs/Tutorials/using-time-series-prediction.md +++ b/site/content/zh/docs/Tutorials/using-time-series-prediction.md @@ -1,7 +1,7 @@ --- title: "TimeSeriesPrediction" description: "TimeSeriesPrediction 功能介绍" -weight: 19 +weight: 24 --- Knowing the future makes things easier for us. diff --git a/site/static/images/crane-qos-ensurance.png b/site/static/images/crane-qos-ensurance.png index b71c72ba30da8462e5381067c9928bbcd7b8aa1b..68f21da0c68a956bcd6c561d19c01dcc783da4c6 100644 GIT binary patch literal 60302 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%0DDtM~Jbqo#CJP9%q;`9Jj1F0<_7L z{Y+coqopyO>_$P!nGuo)QMuZ+zlwJrt(n%U|9hImGjsAoxmu{=%!0`7uQnk3�@? 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%0A2U7xjM#TX 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�~lXRk`U%sZLm@@n+J_r(}bmR4$tHC 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 Bs|El7