From 7694b8b53ecda63235a53bc5018371b33e2478a7 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Wed, 10 Dec 2025 15:33:45 -0800 Subject: [PATCH 001/164] Add blog post on AKS Configurable Scheduler Profiles This blog post introduces AKS Configurable Scheduler Profiles, highlighting their benefits for optimizing resource utilization and improving scheduling strategies for web-distributed and AI workloads. It covers configuration examples for GPU utilization, pod distribution across topology domains, and memory-optimized scheduling. --- .../index.md | 209 ++++++++++++++++++ 1 file changed, 209 insertions(+) create mode 100644 website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md new file mode 100644 index 000000000..0b5445719 --- /dev/null +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -0,0 +1,209 @@ +--- +title: "Announcing Azure Configurable Scheduler Profiles: Optimize resource ROI with fine grained scheduling strategies." +description: "Avoid scheduling inefficiencies and improve GPU utilization with AKS Configurable Scheduler Profiles" +date: 2025-12-16 +authors: + - Colin Mixon +categories: +- operations +- ai +tags: + - AI + - performance + - Scheduler +--- +# Avoid scheduling inefficiencies and improve GPU utilizaiton with AKS Configurable Scheduler Profiles (Preview) +Thoughtful scheduling strategies can resolve pervasive challenges across web-distributed workloads and AI workloads like resiliency and resource utilization. But the default scheduler was primarily designed for general-purpose workloads and out-of-box pod scheduling. The scheduler ultimately selects the optimal node for pod(s) based on several criteria, including (but not limited to): + +1. Resource requirements (CPU, memory) +2. Node affinity/anti-affinity +3. Pod affinity/anti-affinity +4. Taints and tolerations + +The criteria, and their respective priority in the scheduling cycle, are not suitable for advanced use cases that might require custom scheduling strategies. Nor, does the default scheduler enable user customization for fine-grain pod placement control while avoiding managing a second custom scheduler. For example, users running batch jobs might prefer collocating on a few nodes for better performance or cost-sensitive workloads might benefit from node binpacking to minimize idle node costs. + +To support these advanced use cases, and to give users more control, use [AKS Configurable Scheduler Profiles][https://learn.microsoft.com/en-us/azure/aks/concepts-scheduler-configuration] to tailor a sheduler to their specific workload requirements using node bin-packing, preemption, and 16 other scheduling plugins that can optimize ROI​, improve gpu utilization, improve data locality, or increase resliency. + +In this blog you will learn how to configure the AKS Configurable Scheduler Profiles for [bin packing GPU-backed nodes][#increase-gpu-utilization-by-bin-packing-gpu-backed-nodes], [distributing pods across topologies][#increase-reselieince-by-distributing-pods-across-topology-domains], and [placing jobs on memory-optimized, pvc-ready nodes][#reduce-latency-with-memory‑optimized-pvc‑aware-scheduling]. Lastly, you will find [Best Practices and Configuration Considerations][#best-practice-and-configuration-considerations] to help guide how you consider both individual plugin configurations, your custom scheduler configuration, and your Deployment design holistically. + +## AKS Configurable Scheduler Profiles +A scheduler profile is a set of one or more in-tree scheduling plugins and configurations that dictate how to schedule a pod. Previously, the scheduler configuration wasn't accessible to users. Starting from Kubernetes version 1.33, you can now configure and set a scheduler profile for the AKS scheduler on your cluster. + +AKS supports 18 in-tree Kubernetes scheduling plugins that allow pods to be placed on user-specified nodes, ensure pods are matched with specific storage resources, and more. The plugins can be generally grouped into the following categories: + +1. Scheduling constraints and order-based plugins +2. Node selection constraints scheduling plugins +3. Resource and topology optimization scheduling plugins + +Below you will find example configurations for some of the most common workload objectives. +:::note +Adjust VM SKUs in NodeAffinity, shift utilization curves or weights, and use the right zones for your cluster(s) in the configurations below. +::: + +### Increse GPU Utilization by Bin Packing GPU-backed Nodes +You can use `NodeResourceFit` to control how pods are assigned to nodes based on available resources (CPU, memory, etc.), including favoring nodes with high resource utilization, within the set configuration. + +For example, scheduling pending jobs on nodes with a higher relative GPU utilization, users can reduce costs and increase GPU Utilization while maintaining performance. + +**This scheduler configuration maximizes GPU efficiency for larger batch jobs by cobsolidating smaller jobs onto fewer nodes and lowering the operational cost of underutilized resources without sacrificing performance.** +```yaml +apiVersion: aks.azure.com/v1alpha1 +kind: SchedulerConfiguration +metadata: + name: upstream +spec: + rawConfig: | + apiVersion: kubescheduler.config.k8s.io/v1 + kind: KubeSchedulerConfiguration + - schedulerName: gpu-node-binpacking-scheduler + plugins: + multiPoint: + enabled: + - name: ImageLocality + - name: NodeResourceFit + - name: NodeResourcesBalancedAllocation + pluginConfig: + - name: NodeResourcesFit + args: + scoringStrategy: + type: MostAllocated + resources: + - name: cpu + weight: 1 + - name: nvidia.com/gpu + weight: 3 + - name: NodeResourcesBalancedAllocation + args: + resources: + - name: nvidia.com/gpu + weight: 1 +``` +### Increase reselieince by distributing pods across topology domains +`PodTopologySpread` is a scheduling strategy that seeks to distribute pods evenly across failure domains (such as availability zones or regions) to ensure high availability and fault tolerance in the event of zone or node failures. + +For example, spreading replicas across distinct zones safeguards availability during an AZ outage, while a softer host‑level rule prevents scheduling deadlocks when cluster capacity is uneven. + +**This configuration is effective for highly‑available stateless services (web/API, gateways) or distributed messaging clusters, like Kafka brokers, that rely on the availability of multipe replicas.** +```yaml +apiVersion: aks.azure.com/v1alpha1 +kind: SchedulerConfiguration +metadata: + name: upstream +spec: + rawConfig: | + apiVersion: kubescheduler.config.k8s.io/v1 + kind: KubeSchedulerConfiguration + profiles: + - schedulerName: pod-distribution-scheduler + pluginConfig: + - name: PodTopologySpread + args: + defaultingType: List + defaultConstraints: + - maxSkew: 2 + topologyKey: topology.kubernetes.io/zone + whenUnsatisfiable: DoNotSchedule + - maxSkew: 1 + topologyKey: kubernetes.io/hostname + whenUnsatisfiable: ScheduleAnyway +``` +### Reduce latency with memory‑optimized, PVC‑aware scheduling +Use `VolumeBinding` to ensure pods are placed on nodes where _PersistentVolumeClaim's_ (PVC) can bind to _PersistentVolume's_ (PV). `VolumeZone` validates that nodes and volumes satisfy zonal requirements to avoid cross-zone storage access. + +For example, combine `VolumeBinding` and `VolumeZone` plugins, with `NodeAffinity` and `NodeResourcesFit` with `RequestedToCapacityRatio`, to influence pod placement on [Azure memory-optimized SKUs][https://learn.microsoft.com/en-us/azure/virtual-machines/sizes/overview?tabs=breakdownseries%2Cgeneralsizelist%2Ccomputesizelist%2Cmemorysizelist%2Cstoragesizelist%2Cgpusizelist%2Cfpgasizelist%2Chpcsizelist#memory-optimized], while ensuring PVC's bind quickly in the target zone to minimize cross‑zone traffic and latency. + +**This scheduler configuration ensures workloads needing large memory footprints are placed on nodes that provide sufficient RAM and maintain proximity to their volumes, enabling fast, zone‑aligned PVC binding for optimal data locality.** +```yaml +apiVersion: aks.azure.com/v1alpha1 +kind: SchedulerConfiguration +metadata: + name: upstream +spec: + rawConfig: | + apiVersion: kubescheduler.config.k8s.io/v1 + kind: KubeSchedulerConfiguration + profiles: + - schedulerName: mem-optimized-node-scheduler + plugins: + multiPoint: + enabled: + - name: NodeAffinity + - name: NodeResourcesFit + - name: VolumeBinding + - name: VolumeZone + pluginConfig: + - name: NodeAffinity + args: + apiVersion: kubescheduler.config.k8s.io/v1 + kind: NodeAffinityArgs + addedAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - weight: 100 + preference: + matchExpressions: + - key: topology.kubernetes.io/zone + operator: In + values: [westus3-1, westus3-2, westus3-3] + - weight: 80 + preference: + matchExpressions: + - key: node.kubernetes.io/instance-type + operator: In + values: + - Standard_E16s_v5 + - Standard_E32s_v5 + - name: VolumeBinding + args: + apiVersion: kubescheduler.config.k8s.io/v1 + kind: VolumeBindingArgs + bindTimeoutSeconds: 300 + - name: NodeResourcesFit + args: + apiVersion: kubescheduler.config.k8s.io/v1 + kind: NodeResourcesFitArgs + scoringStrategy: + type: RequestedToCapacityRatio + resources: + - name: memory + weight: 5 + - name: cpu + weight: 1 + - name: ephemeral-storage + weight: 1 + requestedToCapacityRatio: + shape: + - utilization: 0 + score: 0 + - utilization: 30 + score: 4 + - utilization: 60 + score: 8 + - utilization: 80 + score: 10 + - utilization: 90 + score: 6 + - utilization: 100 + score: 0 +``` + +## Best Practices and Configuration Considerations +As a reminder, there are many parameters the scheduler considers across the [scheduling cycle][https://kubernetes.io/docs/concepts/scheduling-eviction/scheduling-framework/#interfaces] before a pod is placed on a node that impacts how a pod is assigned. This section is meant to help guide how you consider both individual plugin configurations, your custom scheduler configuration, and your Deployment design holistically. + +1. Ensure the intended deployment is assigned to the _correct_ scheduler profile. +2. Ensure the customer scheduler profile complements the implementation of Deployments, StorageClasses, and PersistentVolumeClaim's. Misalignment can lead to pending pods and degraded workload performance, even when the scheduler is functioning as expected. +3. Ensure their are enough nodes in each zone to accommodate your deployment replicas and ensure your AKS node pool spans the right availability zones. If not, pods may remain in a pending state. +4. Use namespaces to separate workloads which improves your ability to validate or troubleshoot. +5. Assign `priorityClassName` for workloads that should preempt others, this is critical if you use the DefaultPreemption plugin. +6. If you use the `ImageLocality` plugin, use DaemonSets or node pre-pulling for latency-sensitive images, otherwise the benefit may be minimal. +7. If your cluster is large, a low `PercentageOfNodesToScore` speeds scheduling by reducing the number of nodes scored, _but_ it may reduce optimal placement. +8. If you enable a plugin in the `plugins:multipoint` section but do not define it in `pluginConfig:`, AKS uses the default configuration for that plugin. +9. For `NodeResourcesFit`, the ratio matters more than absolute values. So CPU:Memory:Storage = 3:1:2, which means CPU is 3× more influential than memory, and storage is 2x more influential than memory in the scoring phase. +10. Pair `PodTopologySpread` with pod disruption budget's (PDB) and multi‑replica strategies for HA during upgrades. + +## Next Steps: Try out AKS Configurable Scheduler + +With AKS Configurable Scheduler Profiles, teams gain fine-grained control over pod placement strategies like bin-packing, topology distribution, and resource-based scoring that directly address the challenges of resielince and resource utilization for web-distributed workloads and AI workloads. By leveraging these advanced scheduling plugins, AKS users can ensure their workloads make full use of available GPU capacity, reduce idle time, and avoid costly overprovisioning. This not only improves ROI but also accelerates innovation by allowing more jobs to run concurrently and reliably. + +- For best practices using the kube-scheduler visit [kube-scheduler best practices][https://learn.microsoft.com/en-us/azure/aks/operator-best-practices-advanced-scheduler] +- Configure your workload specific scheduler using the [AKS Configurable Scheduler][https://learn.microsoft.com/en-us/azure/aks/concepts-scheduler-configuration] +- If additional capabilities or ML frameworks are needed to schedule and queue batch workloads, you can [install and configure Kueue on AKS][https://learn.microsoft.com/en-us/azure/aks/kueue-overview] to ensure efficient, policy-driven scheduling in AKS clusters. From 8103dda5ff0b16ff7baf19bdc3ac520408c8c498 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Wed, 10 Dec 2025 15:40:22 -0800 Subject: [PATCH 002/164] Add Scheduler tag to blog tags configuration Added a new tag for Scheduler with relevant details. --- website/blog/tags.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/website/blog/tags.yml b/website/blog/tags.yml index c4d4c4117..bf7a4cbc3 100644 --- a/website/blog/tags.yml +++ b/website/blog/tags.yml @@ -272,6 +272,11 @@ scaling: permalink: /scaling description: Horizontal and vertical scaling strategies, autoscaler tuning, and capacity planning. +scheduler: + label: Scheduler + permalink: /scheduler + description: Techniques and capabilities to control pod placement, improve resource efficiency, and tune scheduling for diverse AKS workloads. + security: label: Security permalink: /security From 6c035be3048edc88625d2147aa39cfb728774f18 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Wed, 10 Dec 2025 15:42:27 -0800 Subject: [PATCH 003/164] Update index.md --- .../2025-12-16-aks-config-scheduler-profiles-preview/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index 0b5445719..e947798d4 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -22,7 +22,7 @@ Thoughtful scheduling strategies can resolve pervasive challenges across web-dis The criteria, and their respective priority in the scheduling cycle, are not suitable for advanced use cases that might require custom scheduling strategies. Nor, does the default scheduler enable user customization for fine-grain pod placement control while avoiding managing a second custom scheduler. For example, users running batch jobs might prefer collocating on a few nodes for better performance or cost-sensitive workloads might benefit from node binpacking to minimize idle node costs. -To support these advanced use cases, and to give users more control, use [AKS Configurable Scheduler Profiles][https://learn.microsoft.com/en-us/azure/aks/concepts-scheduler-configuration] to tailor a sheduler to their specific workload requirements using node bin-packing, preemption, and 16 other scheduling plugins that can optimize ROI​, improve gpu utilization, improve data locality, or increase resliency. +To support these advanced use cases, and to give users more control, use [AKS Configurable Scheduler Profiles][https://learn.microsoft.com/en-us/azure/aks/concepts-scheduler-configuration] to tailor a scheduler to their specific workload requirements using node bin-packing, preemption, and 16 other scheduling plugins that can optimize ROI​, improve gpu utilization, improve data locality, or increase resliency. In this blog you will learn how to configure the AKS Configurable Scheduler Profiles for [bin packing GPU-backed nodes][#increase-gpu-utilization-by-bin-packing-gpu-backed-nodes], [distributing pods across topologies][#increase-reselieince-by-distributing-pods-across-topology-domains], and [placing jobs on memory-optimized, pvc-ready nodes][#reduce-latency-with-memory‑optimized-pvc‑aware-scheduling]. Lastly, you will find [Best Practices and Configuration Considerations][#best-practice-and-configuration-considerations] to help guide how you consider both individual plugin configurations, your custom scheduler configuration, and your Deployment design holistically. From 4d7a3ccb984ee46d7340fdf0c7350a8144a5fe7a Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Wed, 10 Dec 2025 15:46:19 -0800 Subject: [PATCH 004/164] Fix typos in AKS configuration blog post --- .../2025-12-16-aks-config-scheduler-profiles-preview/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index e947798d4..d596337e6 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -40,7 +40,7 @@ Below you will find example configurations for some of the most common workload Adjust VM SKUs in NodeAffinity, shift utilization curves or weights, and use the right zones for your cluster(s) in the configurations below. ::: -### Increse GPU Utilization by Bin Packing GPU-backed Nodes +### Increase GPU Utilization by Bin Packing GPU-backed Nodes You can use `NodeResourceFit` to control how pods are assigned to nodes based on available resources (CPU, memory, etc.), including favoring nodes with high resource utilization, within the set configuration. For example, scheduling pending jobs on nodes with a higher relative GPU utilization, users can reduce costs and increase GPU Utilization while maintaining performance. @@ -83,7 +83,7 @@ spec: For example, spreading replicas across distinct zones safeguards availability during an AZ outage, while a softer host‑level rule prevents scheduling deadlocks when cluster capacity is uneven. -**This configuration is effective for highly‑available stateless services (web/API, gateways) or distributed messaging clusters, like Kafka brokers, that rely on the availability of multipe replicas.** +**This configuration is effective for highly‑available stateless services (web/API, gateways) or distributed messaging clusters, like Kafka brokers, that rely on the availability of multiple replicas.** ```yaml apiVersion: aks.azure.com/v1alpha1 kind: SchedulerConfiguration From 0b3b6b9bf7db61b0fa641fad050a888dfb67b58d Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Wed, 10 Dec 2025 15:51:16 -0800 Subject: [PATCH 005/164] Revise AKS Configurable Scheduler Profiles blog post Updated blog post on AKS Configurable Scheduler Profiles to improve clarity and correctness, including sections on GPU utilization, pod distribution, and memory-optimized scheduling. --- .../index.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index d596337e6..074e0f638 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -13,6 +13,7 @@ tags: - Scheduler --- # Avoid scheduling inefficiencies and improve GPU utilizaiton with AKS Configurable Scheduler Profiles (Preview) + Thoughtful scheduling strategies can resolve pervasive challenges across web-distributed workloads and AI workloads like resiliency and resource utilization. But the default scheduler was primarily designed for general-purpose workloads and out-of-box pod scheduling. The scheduler ultimately selects the optimal node for pod(s) based on several criteria, including (but not limited to): 1. Resource requirements (CPU, memory) @@ -27,6 +28,7 @@ To support these advanced use cases, and to give users more control, use [AKS Co In this blog you will learn how to configure the AKS Configurable Scheduler Profiles for [bin packing GPU-backed nodes][#increase-gpu-utilization-by-bin-packing-gpu-backed-nodes], [distributing pods across topologies][#increase-reselieince-by-distributing-pods-across-topology-domains], and [placing jobs on memory-optimized, pvc-ready nodes][#reduce-latency-with-memory‑optimized-pvc‑aware-scheduling]. Lastly, you will find [Best Practices and Configuration Considerations][#best-practice-and-configuration-considerations] to help guide how you consider both individual plugin configurations, your custom scheduler configuration, and your Deployment design holistically. ## AKS Configurable Scheduler Profiles + A scheduler profile is a set of one or more in-tree scheduling plugins and configurations that dictate how to schedule a pod. Previously, the scheduler configuration wasn't accessible to users. Starting from Kubernetes version 1.33, you can now configure and set a scheduler profile for the AKS scheduler on your cluster. AKS supports 18 in-tree Kubernetes scheduling plugins that allow pods to be placed on user-specified nodes, ensure pods are matched with specific storage resources, and more. The plugins can be generally grouped into the following categories: @@ -36,16 +38,19 @@ AKS supports 18 in-tree Kubernetes scheduling plugins that allow pods to be plac 3. Resource and topology optimization scheduling plugins Below you will find example configurations for some of the most common workload objectives. + :::note Adjust VM SKUs in NodeAffinity, shift utilization curves or weights, and use the right zones for your cluster(s) in the configurations below. ::: ### Increase GPU Utilization by Bin Packing GPU-backed Nodes + You can use `NodeResourceFit` to control how pods are assigned to nodes based on available resources (CPU, memory, etc.), including favoring nodes with high resource utilization, within the set configuration. For example, scheduling pending jobs on nodes with a higher relative GPU utilization, users can reduce costs and increase GPU Utilization while maintaining performance. **This scheduler configuration maximizes GPU efficiency for larger batch jobs by cobsolidating smaller jobs onto fewer nodes and lowering the operational cost of underutilized resources without sacrificing performance.** + ```yaml apiVersion: aks.azure.com/v1alpha1 kind: SchedulerConfiguration @@ -78,12 +83,15 @@ spec: - name: nvidia.com/gpu weight: 1 ``` + ### Increase reselieince by distributing pods across topology domains + `PodTopologySpread` is a scheduling strategy that seeks to distribute pods evenly across failure domains (such as availability zones or regions) to ensure high availability and fault tolerance in the event of zone or node failures. For example, spreading replicas across distinct zones safeguards availability during an AZ outage, while a softer host‑level rule prevents scheduling deadlocks when cluster capacity is uneven. **This configuration is effective for highly‑available stateless services (web/API, gateways) or distributed messaging clusters, like Kafka brokers, that rely on the availability of multiple replicas.** + ```yaml apiVersion: aks.azure.com/v1alpha1 kind: SchedulerConfiguration @@ -107,12 +115,14 @@ spec: topologyKey: kubernetes.io/hostname whenUnsatisfiable: ScheduleAnyway ``` + ### Reduce latency with memory‑optimized, PVC‑aware scheduling Use `VolumeBinding` to ensure pods are placed on nodes where _PersistentVolumeClaim's_ (PVC) can bind to _PersistentVolume's_ (PV). `VolumeZone` validates that nodes and volumes satisfy zonal requirements to avoid cross-zone storage access. For example, combine `VolumeBinding` and `VolumeZone` plugins, with `NodeAffinity` and `NodeResourcesFit` with `RequestedToCapacityRatio`, to influence pod placement on [Azure memory-optimized SKUs][https://learn.microsoft.com/en-us/azure/virtual-machines/sizes/overview?tabs=breakdownseries%2Cgeneralsizelist%2Ccomputesizelist%2Cmemorysizelist%2Cstoragesizelist%2Cgpusizelist%2Cfpgasizelist%2Chpcsizelist#memory-optimized], while ensuring PVC's bind quickly in the target zone to minimize cross‑zone traffic and latency. **This scheduler configuration ensures workloads needing large memory footprints are placed on nodes that provide sufficient RAM and maintain proximity to their volumes, enabling fast, zone‑aligned PVC binding for optimal data locality.** + ```yaml apiVersion: aks.azure.com/v1alpha1 kind: SchedulerConfiguration From 4fd375d7ab785d42bbfca919268380ed2f4e59ef Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Wed, 10 Dec 2025 15:55:38 -0800 Subject: [PATCH 006/164] Fix typos and enhance clarity in AKS blog post Corrected typos and improved clarity in the blog post about AKS Configurable Scheduler Profiles. --- .../index.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index 074e0f638..8235cb539 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -29,7 +29,7 @@ In this blog you will learn how to configure the AKS Configurable Scheduler Prof ## AKS Configurable Scheduler Profiles -A scheduler profile is a set of one or more in-tree scheduling plugins and configurations that dictate how to schedule a pod. Previously, the scheduler configuration wasn't accessible to users. Starting from Kubernetes version 1.33, you can now configure and set a scheduler profile for the AKS scheduler on your cluster. +A scheduler profile is a set of one or more in-tree scheduling plugins and configurations that dictate how to schedule a pod. Previously, the scheduler configuration wasn't accessible to users. Starting from Kubernetes version 1.33, you can now configure and set a scheduler profile for the AKS scheduler on your cluster. AKS supports 18 in-tree Kubernetes scheduling plugins that allow pods to be placed on user-specified nodes, ensure pods are matched with specific storage resources, and more. The plugins can be generally grouped into the following categories: @@ -45,9 +45,9 @@ Adjust VM SKUs in NodeAffinity, shift utilization curves or weights, and use the ### Increase GPU Utilization by Bin Packing GPU-backed Nodes -You can use `NodeResourceFit` to control how pods are assigned to nodes based on available resources (CPU, memory, etc.), including favoring nodes with high resource utilization, within the set configuration. +You can use `NodeResourceFit` to control how pods are assigned to nodes based on available resources (CPU, memory, etc.), including favoring nodes with high resource utilization, within the set configuration. -For example, scheduling pending jobs on nodes with a higher relative GPU utilization, users can reduce costs and increase GPU Utilization while maintaining performance. +For example, scheduling pending jobs on nodes with a higher relative GPU utilization, users can reduce costs and increase GPU Utilization while maintaining performance. **This scheduler configuration maximizes GPU efficiency for larger batch jobs by cobsolidating smaller jobs onto fewer nodes and lowering the operational cost of underutilized resources without sacrificing performance.** @@ -86,7 +86,7 @@ spec: ### Increase reselieince by distributing pods across topology domains -`PodTopologySpread` is a scheduling strategy that seeks to distribute pods evenly across failure domains (such as availability zones or regions) to ensure high availability and fault tolerance in the event of zone or node failures. +`PodTopologySpread` is a scheduling strategy that seeks to distribute pods evenly across failure domains (such as availability zones or regions) to ensure high availability and fault tolerance in the event of zone or node failures. For example, spreading replicas across distinct zones safeguards availability during an AZ outage, while a softer host‑level rule prevents scheduling deadlocks when cluster capacity is uneven. @@ -197,6 +197,7 @@ spec: ``` ## Best Practices and Configuration Considerations + As a reminder, there are many parameters the scheduler considers across the [scheduling cycle][https://kubernetes.io/docs/concepts/scheduling-eviction/scheduling-framework/#interfaces] before a pod is placed on a node that impacts how a pod is assigned. This section is meant to help guide how you consider both individual plugin configurations, your custom scheduler configuration, and your Deployment design holistically. 1. Ensure the intended deployment is assigned to the _correct_ scheduler profile. @@ -212,7 +213,7 @@ As a reminder, there are many parameters the scheduler considers across the [sch ## Next Steps: Try out AKS Configurable Scheduler -With AKS Configurable Scheduler Profiles, teams gain fine-grained control over pod placement strategies like bin-packing, topology distribution, and resource-based scoring that directly address the challenges of resielince and resource utilization for web-distributed workloads and AI workloads. By leveraging these advanced scheduling plugins, AKS users can ensure their workloads make full use of available GPU capacity, reduce idle time, and avoid costly overprovisioning. This not only improves ROI but also accelerates innovation by allowing more jobs to run concurrently and reliably. +With AKS Configurable Scheduler Profiles, teams gain fine-grained control over pod placement strategies like bin-packing, topology distribution, and resource-based scoring that directly address the challenges of resielince and resource utilization for web-distributed workloads and AI workloads. By leveraging these advanced scheduling plugins, AKS users can ensure their workloads make full use of available GPU capacity, reduce idle time, and avoid costly overprovisioning. This not only improves ROI but also accelerates innovation by allowing more jobs to run concurrently and reliably. - For best practices using the kube-scheduler visit [kube-scheduler best practices][https://learn.microsoft.com/en-us/azure/aks/operator-best-practices-advanced-scheduler] - Configure your workload specific scheduler using the [AKS Configurable Scheduler][https://learn.microsoft.com/en-us/azure/aks/concepts-scheduler-configuration] From 5d34e5036e36a3d3bee307b25a1cf19735b033c8 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Wed, 10 Dec 2025 16:01:21 -0800 Subject: [PATCH 007/164] Fix links and typos in AKS Configurable Scheduler blog --- .../index.md | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index 8235cb539..6099ccfb2 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -23,9 +23,9 @@ Thoughtful scheduling strategies can resolve pervasive challenges across web-dis The criteria, and their respective priority in the scheduling cycle, are not suitable for advanced use cases that might require custom scheduling strategies. Nor, does the default scheduler enable user customization for fine-grain pod placement control while avoiding managing a second custom scheduler. For example, users running batch jobs might prefer collocating on a few nodes for better performance or cost-sensitive workloads might benefit from node binpacking to minimize idle node costs. -To support these advanced use cases, and to give users more control, use [AKS Configurable Scheduler Profiles][https://learn.microsoft.com/en-us/azure/aks/concepts-scheduler-configuration] to tailor a scheduler to their specific workload requirements using node bin-packing, preemption, and 16 other scheduling plugins that can optimize ROI​, improve gpu utilization, improve data locality, or increase resliency. +To support these advanced use cases, and to give users more control, use [AKS Configurable Scheduler Profiles][concepts-scheduler-configuration] to tailor a scheduler to their specific workload requirements using node bin-packing, preemption, and 16 other scheduling plugins that can optimize ROI​, improve gpu utilization, improve data locality, or increase resliency. -In this blog you will learn how to configure the AKS Configurable Scheduler Profiles for [bin packing GPU-backed nodes][#increase-gpu-utilization-by-bin-packing-gpu-backed-nodes], [distributing pods across topologies][#increase-reselieince-by-distributing-pods-across-topology-domains], and [placing jobs on memory-optimized, pvc-ready nodes][#reduce-latency-with-memory‑optimized-pvc‑aware-scheduling]. Lastly, you will find [Best Practices and Configuration Considerations][#best-practice-and-configuration-considerations] to help guide how you consider both individual plugin configurations, your custom scheduler configuration, and your Deployment design holistically. +In this blog you will learn how to configure the AKS Configurable Scheduler Profiles for [bin packing GPU-backed nodes](#increase-gpu-utilization-by-bin-packing-gpu-backed-nodes), [distributing pods across topologies](#increase-reselieince-by-distributing-pods-across-topology-domains), and [placing jobs on memory-optimized, pvc-ready nodes](#reduce-latency-with-memory‑optimized-pvc‑aware-scheduling). Lastly, you will find [best practices](#best-practice-and-configuration-considerations) to help guide how you consider both individual plugin configurations, your custom scheduler configuration, and your Deployment design holistically. ## AKS Configurable Scheduler Profiles @@ -198,7 +198,7 @@ spec: ## Best Practices and Configuration Considerations -As a reminder, there are many parameters the scheduler considers across the [scheduling cycle][https://kubernetes.io/docs/concepts/scheduling-eviction/scheduling-framework/#interfaces] before a pod is placed on a node that impacts how a pod is assigned. This section is meant to help guide how you consider both individual plugin configurations, your custom scheduler configuration, and your Deployment design holistically. +As a reminder, there are many parameters the scheduler considers across the [scheduling cycle][scheduling-framework/#interfaces] before a pod is placed on a node that impacts how a pod is assigned. This section is meant to help guide how you consider both individual plugin configurations, your custom scheduler configuration, and your Deployment design holistically. 1. Ensure the intended deployment is assigned to the _correct_ scheduler profile. 2. Ensure the customer scheduler profile complements the implementation of Deployments, StorageClasses, and PersistentVolumeClaim's. Misalignment can lead to pending pods and degraded workload performance, even when the scheduler is functioning as expected. @@ -215,6 +215,11 @@ As a reminder, there are many parameters the scheduler considers across the [sch With AKS Configurable Scheduler Profiles, teams gain fine-grained control over pod placement strategies like bin-packing, topology distribution, and resource-based scoring that directly address the challenges of resielince and resource utilization for web-distributed workloads and AI workloads. By leveraging these advanced scheduling plugins, AKS users can ensure their workloads make full use of available GPU capacity, reduce idle time, and avoid costly overprovisioning. This not only improves ROI but also accelerates innovation by allowing more jobs to run concurrently and reliably. -- For best practices using the kube-scheduler visit [kube-scheduler best practices][https://learn.microsoft.com/en-us/azure/aks/operator-best-practices-advanced-scheduler] -- Configure your workload specific scheduler using the [AKS Configurable Scheduler][https://learn.microsoft.com/en-us/azure/aks/concepts-scheduler-configuration] -- If additional capabilities or ML frameworks are needed to schedule and queue batch workloads, you can [install and configure Kueue on AKS][https://learn.microsoft.com/en-us/azure/aks/kueue-overview] to ensure efficient, policy-driven scheduling in AKS clusters. +- For best practices using the kube-scheduler visit [kube-scheduler best practices][best-practices-advanced-scheduler] +- Configure your workload specific scheduler using the [AKS Configurable Scheduler][concepts-scheduler-configuration] +- If additional capabilities or ML frameworks are needed to schedule and queue batch workloads, you can [install and configure Kueue on AKS][kueue-overview] to ensure efficient, policy-driven scheduling in AKS clusters. + +[concepts-scheduler-configuration]: https://learn.microsoft.com/en-us/azure/aks/concepts-scheduler-configuration +[kueue-overview]: https://learn.microsoft.com/en-us/azure/aks/kueue-overview +[best-practices-advanced-scheduler]:https://learn.microsoft.com/en-us/azure/aks/operator-best-practices-advanced-scheduler +[scheduling-framework/#interfaces]: https://kubernetes.io/docs/concepts/scheduling-eviction/scheduling-framework/#interfaces From 0760340b0ffdf6e8c52f4ea937b5504562d4a4cb Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Wed, 10 Dec 2025 16:28:59 -0800 Subject: [PATCH 008/164] Clarify objectives and improve section titles in blog Updated the blog to clarify the objectives of configuring AKS Configurable Scheduler Profiles, improved section titles, and ensured consistency in terminology. --- .../index.md | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index 6099ccfb2..f381a189b 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -25,7 +25,12 @@ The criteria, and their respective priority in the scheduling cycle, are not sui To support these advanced use cases, and to give users more control, use [AKS Configurable Scheduler Profiles][concepts-scheduler-configuration] to tailor a scheduler to their specific workload requirements using node bin-packing, preemption, and 16 other scheduling plugins that can optimize ROI​, improve gpu utilization, improve data locality, or increase resliency. -In this blog you will learn how to configure the AKS Configurable Scheduler Profiles for [bin packing GPU-backed nodes](#increase-gpu-utilization-by-bin-packing-gpu-backed-nodes), [distributing pods across topologies](#increase-reselieince-by-distributing-pods-across-topology-domains), and [placing jobs on memory-optimized, pvc-ready nodes](#reduce-latency-with-memory‑optimized-pvc‑aware-scheduling). Lastly, you will find [best practices](#best-practice-and-configuration-considerations) to help guide how you consider both individual plugin configurations, your custom scheduler configuration, and your Deployment design holistically. +In this blog you will learn how to configure the AKS Configurable Scheduler Profiles for three workloads objectives: +1. [Bin packing GPU-backed nodes](#increase-gpu-utilization-by-bin-packing-gpu-backed-nodes) +2. [Distributing pods across topologies](#increase-reselieince-by-distributing-pods-across-topology-domains) +3. [Placing jobs on memory-optimized, pvc-ready nodes](#optimize-data-locality-with-memory-and-pvc-aware-scheduling) + +Lastly, you will find [best practices](#best-practices-and-configuration-considerations) to help guide how you consider both individual plugin configurations, your custom scheduler configuration, and your Deployment design holistically. ## AKS Configurable Scheduler Profiles @@ -116,10 +121,11 @@ spec: whenUnsatisfiable: ScheduleAnyway ``` -### Reduce latency with memory‑optimized, PVC‑aware scheduling +### Optimize data locality with Memory and PVC-Aware Scheduling + Use `VolumeBinding` to ensure pods are placed on nodes where _PersistentVolumeClaim's_ (PVC) can bind to _PersistentVolume's_ (PV). `VolumeZone` validates that nodes and volumes satisfy zonal requirements to avoid cross-zone storage access. -For example, combine `VolumeBinding` and `VolumeZone` plugins, with `NodeAffinity` and `NodeResourcesFit` with `RequestedToCapacityRatio`, to influence pod placement on [Azure memory-optimized SKUs][https://learn.microsoft.com/en-us/azure/virtual-machines/sizes/overview?tabs=breakdownseries%2Cgeneralsizelist%2Ccomputesizelist%2Cmemorysizelist%2Cstoragesizelist%2Cgpusizelist%2Cfpgasizelist%2Chpcsizelist#memory-optimized], while ensuring PVC's bind quickly in the target zone to minimize cross‑zone traffic and latency. +For example, combine `VolumeBinding` and `VolumeZone` plugins, with `NodeAffinity` and `NodeResourcesFit` with `RequestedToCapacityRatio`, to influence pod placement on [Azure memory-optimized SKUs][memory-optimized-vm], while ensuring PVC's bind quickly in the target zone to minimize cross‑zone traffic and latency. **This scheduler configuration ensures workloads needing large memory footprints are placed on nodes that provide sufficient RAM and maintain proximity to their volumes, enabling fast, zone‑aligned PVC binding for optimal data locality.** @@ -223,3 +229,4 @@ With AKS Configurable Scheduler Profiles, teams gain fine-grained control over p [kueue-overview]: https://learn.microsoft.com/en-us/azure/aks/kueue-overview [best-practices-advanced-scheduler]:https://learn.microsoft.com/en-us/azure/aks/operator-best-practices-advanced-scheduler [scheduling-framework/#interfaces]: https://kubernetes.io/docs/concepts/scheduling-eviction/scheduling-framework/#interfaces +[memory-optimized-vm]: https://learn.microsoft.com/en-us/azure/virtual-machines/sizes/overview?tabs=breakdownseries%2Cgeneralsizelist%2Ccomputesizelist%2Cmemorysizelist%2Cstoragesizelist%2Cgpusizelist%2Cfpgasizelist%2Chpcsizelist#memory-optimized From 92ff663c129d082f7a423a26d45d3005548276d2 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Wed, 10 Dec 2025 16:38:34 -0800 Subject: [PATCH 009/164] Enhance clarity in AKS Configurable Scheduler blog Clarified the objectives and improved the wording in the blog post about AKS Configurable Scheduler Profiles. --- .../2025-12-16-aks-config-scheduler-profiles-preview/index.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index f381a189b..fe67422c8 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -26,6 +26,7 @@ The criteria, and their respective priority in the scheduling cycle, are not sui To support these advanced use cases, and to give users more control, use [AKS Configurable Scheduler Profiles][concepts-scheduler-configuration] to tailor a scheduler to their specific workload requirements using node bin-packing, preemption, and 16 other scheduling plugins that can optimize ROI​, improve gpu utilization, improve data locality, or increase resliency. In this blog you will learn how to configure the AKS Configurable Scheduler Profiles for three workloads objectives: + 1. [Bin packing GPU-backed nodes](#increase-gpu-utilization-by-bin-packing-gpu-backed-nodes) 2. [Distributing pods across topologies](#increase-reselieince-by-distributing-pods-across-topology-domains) 3. [Placing jobs on memory-optimized, pvc-ready nodes](#optimize-data-locality-with-memory-and-pvc-aware-scheduling) @@ -42,7 +43,7 @@ AKS supports 18 in-tree Kubernetes scheduling plugins that allow pods to be plac 2. Node selection constraints scheduling plugins 3. Resource and topology optimization scheduling plugins -Below you will find example configurations for some of the most common workload objectives. +Below you will find example configurations for some of the most common workload objectives. :::note Adjust VM SKUs in NodeAffinity, shift utilization curves or weights, and use the right zones for your cluster(s) in the configurations below. From ef5c000979a47f8a6419a874264370598acd1846 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Thu, 11 Dec 2025 10:00:34 -0800 Subject: [PATCH 010/164] Update index.md --- .../index.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index fe67422c8..a7f523b70 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -25,11 +25,11 @@ The criteria, and their respective priority in the scheduling cycle, are not sui To support these advanced use cases, and to give users more control, use [AKS Configurable Scheduler Profiles][concepts-scheduler-configuration] to tailor a scheduler to their specific workload requirements using node bin-packing, preemption, and 16 other scheduling plugins that can optimize ROI​, improve gpu utilization, improve data locality, or increase resliency. -In this blog you will learn how to configure the AKS Configurable Scheduler Profiles for three workloads objectives: +In this blog you will learn how to configure the AKS Configurable Scheduler Profiles for three workload objectives: -1. [Bin packing GPU-backed nodes](#increase-gpu-utilization-by-bin-packing-gpu-backed-nodes) -2. [Distributing pods across topologies](#increase-reselieince-by-distributing-pods-across-topology-domains) -3. [Placing jobs on memory-optimized, pvc-ready nodes](#optimize-data-locality-with-memory-and-pvc-aware-scheduling) +1. [Increase GPU utilization by bin packing GPU-backed nodes](#increase-gpu-utilization-by-bin-packing-gpu-backed-nodes) +2. [Increase reselieince by distributing pods across topology domains](#increase-reselieince-by-distributing-pods-across-topology-domains) +3. [Optimize data locality with memory and PVC-aware scheduling](#optimize-data-locality-with-memory-and-pvc-aware-scheduling) Lastly, you will find [best practices](#best-practices-and-configuration-considerations) to help guide how you consider both individual plugin configurations, your custom scheduler configuration, and your Deployment design holistically. From a488c12f1db0db28c851bf362f15c63e0f7d0458 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Thu, 11 Dec 2025 11:14:51 -0800 Subject: [PATCH 011/164] Update website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md Co-authored-by: Diego Casati --- .../2025-12-16-aks-config-scheduler-profiles-preview/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index a7f523b70..301430a79 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -46,7 +46,7 @@ AKS supports 18 in-tree Kubernetes scheduling plugins that allow pods to be plac Below you will find example configurations for some of the most common workload objectives. :::note -Adjust VM SKUs in NodeAffinity, shift utilization curves or weights, and use the right zones for your cluster(s) in the configurations below. +Adjust VM SKUs in `NodeAffinity`, shift utilization curves or weights, and use the right zones for your cluster(s) in the configurations below. ::: ### Increase GPU Utilization by Bin Packing GPU-backed Nodes From 3999b23db4fcc1ba05334154e137096e9fb8a0d0 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Thu, 11 Dec 2025 11:38:46 -0800 Subject: [PATCH 012/164] Update website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../2025-12-16-aks-config-scheduler-profiles-preview/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index 301430a79..66955895c 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -209,7 +209,7 @@ As a reminder, there are many parameters the scheduler considers across the [sch 1. Ensure the intended deployment is assigned to the _correct_ scheduler profile. 2. Ensure the customer scheduler profile complements the implementation of Deployments, StorageClasses, and PersistentVolumeClaim's. Misalignment can lead to pending pods and degraded workload performance, even when the scheduler is functioning as expected. -3. Ensure their are enough nodes in each zone to accommodate your deployment replicas and ensure your AKS node pool spans the right availability zones. If not, pods may remain in a pending state. +3. Ensure there are enough nodes in each zone to accommodate your deployment replicas and ensure your AKS node pool spans the right availability zones. If not, pods may remain in a pending state. 4. Use namespaces to separate workloads which improves your ability to validate or troubleshoot. 5. Assign `priorityClassName` for workloads that should preempt others, this is critical if you use the DefaultPreemption plugin. 6. If you use the `ImageLocality` plugin, use DaemonSets or node pre-pulling for latency-sensitive images, otherwise the benefit may be minimal. From 37ced5b2a4e20e71ee76a55983fe44ad40833b48 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Thu, 11 Dec 2025 11:38:56 -0800 Subject: [PATCH 013/164] Update website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../2025-12-16-aks-config-scheduler-profiles-preview/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index 66955895c..b4b09ae46 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -1,5 +1,5 @@ --- -title: "Announcing Azure Configurable Scheduler Profiles: Optimize resource ROI with fine grained scheduling strategies." +title: "Announcing Azure Configurable Scheduler Profiles: Optimize resource ROI with fine grained scheduling strategies" description: "Avoid scheduling inefficiencies and improve GPU utilization with AKS Configurable Scheduler Profiles" date: 2025-12-16 authors: From ef30f6eafee937fe5a684c06a516d02ce026a296 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Thu, 11 Dec 2025 11:39:31 -0800 Subject: [PATCH 014/164] Update website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../2025-12-16-aks-config-scheduler-profiles-preview/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index b4b09ae46..a89131af4 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -12,7 +12,7 @@ tags: - performance - Scheduler --- -# Avoid scheduling inefficiencies and improve GPU utilizaiton with AKS Configurable Scheduler Profiles (Preview) +# Avoid scheduling inefficiencies and improve GPU utilization with AKS Configurable Scheduler Profiles (Preview) Thoughtful scheduling strategies can resolve pervasive challenges across web-distributed workloads and AI workloads like resiliency and resource utilization. But the default scheduler was primarily designed for general-purpose workloads and out-of-box pod scheduling. The scheduler ultimately selects the optimal node for pod(s) based on several criteria, including (but not limited to): From 4dd4ee0b569be9fb5c02ef9841619b47a3c05065 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Thu, 11 Dec 2025 12:01:48 -0800 Subject: [PATCH 015/164] Update website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../2025-12-16-aks-config-scheduler-profiles-preview/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index a89131af4..a04b84f1f 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -23,7 +23,7 @@ Thoughtful scheduling strategies can resolve pervasive challenges across web-dis The criteria, and their respective priority in the scheduling cycle, are not suitable for advanced use cases that might require custom scheduling strategies. Nor, does the default scheduler enable user customization for fine-grain pod placement control while avoiding managing a second custom scheduler. For example, users running batch jobs might prefer collocating on a few nodes for better performance or cost-sensitive workloads might benefit from node binpacking to minimize idle node costs. -To support these advanced use cases, and to give users more control, use [AKS Configurable Scheduler Profiles][concepts-scheduler-configuration] to tailor a scheduler to their specific workload requirements using node bin-packing, preemption, and 16 other scheduling plugins that can optimize ROI​, improve gpu utilization, improve data locality, or increase resliency. +To support these advanced use cases, and to give users more control, use [AKS Configurable Scheduler Profiles][concepts-scheduler-configuration] to tailor a scheduler to their specific workload requirements using node bin-packing, preemption, and 16 other scheduling plugins that can optimize ROI​, improve gpu utilization, improve data locality, or increase resiliency. In this blog you will learn how to configure the AKS Configurable Scheduler Profiles for three workload objectives: From 0cf3a813ae0574f29787d123d1ff0e8f7602d798 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Thu, 11 Dec 2025 12:02:01 -0800 Subject: [PATCH 016/164] Update website/blog/tags.yml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- website/blog/tags.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/website/blog/tags.yml b/website/blog/tags.yml index bf7a4cbc3..0bf18cb2a 100644 --- a/website/blog/tags.yml +++ b/website/blog/tags.yml @@ -276,7 +276,6 @@ scheduler: label: Scheduler permalink: /scheduler description: Techniques and capabilities to control pod placement, improve resource efficiency, and tune scheduling for diverse AKS workloads. - security: label: Security permalink: /security From 4aa8cb9c5e03c39c1c1153a851368b56b8d1d9ab Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Thu, 11 Dec 2025 12:03:27 -0800 Subject: [PATCH 017/164] Refactor author and tags in blog post metadata Updated author format and adjusted tag casing in the blog post. --- .../index.md | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index a04b84f1f..0bc18b3d9 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -3,14 +3,11 @@ title: "Announcing Azure Configurable Scheduler Profiles: Optimize resource ROI description: "Avoid scheduling inefficiencies and improve GPU utilization with AKS Configurable Scheduler Profiles" date: 2025-12-16 authors: - - Colin Mixon -categories: -- operations -- ai + - colin-mixon tags: - - AI + - ai - performance - - Scheduler + - scheduler --- # Avoid scheduling inefficiencies and improve GPU utilization with AKS Configurable Scheduler Profiles (Preview) From 0b458e91b08a125f5c1eb985351cb3ec10292cad Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Thu, 11 Dec 2025 13:55:39 -0800 Subject: [PATCH 018/164] Update website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../2025-12-16-aks-config-scheduler-profiles-preview/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index 0bc18b3d9..8f312503c 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -52,7 +52,7 @@ You can use `NodeResourceFit` to control how pods are assigned to nodes based on For example, scheduling pending jobs on nodes with a higher relative GPU utilization, users can reduce costs and increase GPU Utilization while maintaining performance. -**This scheduler configuration maximizes GPU efficiency for larger batch jobs by cobsolidating smaller jobs onto fewer nodes and lowering the operational cost of underutilized resources without sacrificing performance.** +**This scheduler configuration maximizes GPU efficiency for larger batch jobs by consolidating smaller jobs onto fewer nodes and lowering the operational cost of underutilized resources without sacrificing performance.** ```yaml apiVersion: aks.azure.com/v1alpha1 From 2bfef0ab1d50e159973fbf61db30656b8d5d9e65 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Thu, 11 Dec 2025 13:58:39 -0800 Subject: [PATCH 019/164] Fix typo in blog title for AKS Scheduler Profiles --- .../2025-12-16-aks-config-scheduler-profiles-preview/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index 8f312503c..bd5d29db8 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -1,5 +1,5 @@ --- -title: "Announcing Azure Configurable Scheduler Profiles: Optimize resource ROI with fine grained scheduling strategies" +title: "Announcing Azure Configurable Scheduler Profiles (Preivew): Optimize resource ROI with fine grained scheduling strategies" description: "Avoid scheduling inefficiencies and improve GPU utilization with AKS Configurable Scheduler Profiles" date: 2025-12-16 authors: @@ -8,8 +8,8 @@ tags: - ai - performance - scheduler + - best-practices --- -# Avoid scheduling inefficiencies and improve GPU utilization with AKS Configurable Scheduler Profiles (Preview) Thoughtful scheduling strategies can resolve pervasive challenges across web-distributed workloads and AI workloads like resiliency and resource utilization. But the default scheduler was primarily designed for general-purpose workloads and out-of-box pod scheduling. The scheduler ultimately selects the optimal node for pod(s) based on several criteria, including (but not limited to): From 581a58aff10ee408f68ba944a8ad70903fc56f20 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Thu, 11 Dec 2025 13:59:20 -0800 Subject: [PATCH 020/164] Update website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../2025-12-16-aks-config-scheduler-profiles-preview/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index bd5d29db8..7b0466d5f 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -217,7 +217,7 @@ As a reminder, there are many parameters the scheduler considers across the [sch ## Next Steps: Try out AKS Configurable Scheduler -With AKS Configurable Scheduler Profiles, teams gain fine-grained control over pod placement strategies like bin-packing, topology distribution, and resource-based scoring that directly address the challenges of resielince and resource utilization for web-distributed workloads and AI workloads. By leveraging these advanced scheduling plugins, AKS users can ensure their workloads make full use of available GPU capacity, reduce idle time, and avoid costly overprovisioning. This not only improves ROI but also accelerates innovation by allowing more jobs to run concurrently and reliably. +With AKS Configurable Scheduler Profiles, teams gain fine-grained control over pod placement strategies like bin-packing, topology distribution, and resource-based scoring that directly address the challenges of resilience and resource utilization for web-distributed workloads and AI workloads. By leveraging these advanced scheduling plugins, AKS users can ensure their workloads make full use of available GPU capacity, reduce idle time, and avoid costly overprovisioning. This not only improves ROI but also accelerates innovation by allowing more jobs to run concurrently and reliably. - For best practices using the kube-scheduler visit [kube-scheduler best practices][best-practices-advanced-scheduler] - Configure your workload specific scheduler using the [AKS Configurable Scheduler][concepts-scheduler-configuration] From 92f516b2b5158b1a6a6d0d8bd59e457cb6112527 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Thu, 11 Dec 2025 14:00:39 -0800 Subject: [PATCH 021/164] Fix typo in blog title for AKS Scheduler Profiles --- .../2025-12-16-aks-config-scheduler-profiles-preview/index.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index 7b0466d5f..d539226d8 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -1,5 +1,5 @@ --- -title: "Announcing Azure Configurable Scheduler Profiles (Preivew): Optimize resource ROI with fine grained scheduling strategies" +title: "Announcing Azure Configurable Scheduler Profiles (Preview): Optimize resource ROI with fine grained scheduling strategies" description: "Avoid scheduling inefficiencies and improve GPU utilization with AKS Configurable Scheduler Profiles" date: 2025-12-16 authors: @@ -30,6 +30,8 @@ In this blog you will learn how to configure the AKS Configurable Scheduler Prof Lastly, you will find [best practices](#best-practices-and-configuration-considerations) to help guide how you consider both individual plugin configurations, your custom scheduler configuration, and your Deployment design holistically. + + ## AKS Configurable Scheduler Profiles A scheduler profile is a set of one or more in-tree scheduling plugins and configurations that dictate how to schedule a pod. Previously, the scheduler configuration wasn't accessible to users. Starting from Kubernetes version 1.33, you can now configure and set a scheduler profile for the AKS scheduler on your cluster. From 2330ca1b2282fb91ed80e620eaa3ff362aaefac5 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Thu, 11 Dec 2025 17:07:40 -0800 Subject: [PATCH 022/164] Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../2025-12-16-aks-config-scheduler-profiles-preview/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index d539226d8..47a28c236 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -25,7 +25,7 @@ To support these advanced use cases, and to give users more control, use [AKS Co In this blog you will learn how to configure the AKS Configurable Scheduler Profiles for three workload objectives: 1. [Increase GPU utilization by bin packing GPU-backed nodes](#increase-gpu-utilization-by-bin-packing-gpu-backed-nodes) -2. [Increase reselieince by distributing pods across topology domains](#increase-reselieince-by-distributing-pods-across-topology-domains) +2. [Increase resilience by distributing pods across topology domains](#increase-resilience-by-distributing-pods-across-topology-domains) 3. [Optimize data locality with memory and PVC-aware scheduling](#optimize-data-locality-with-memory-and-pvc-aware-scheduling) Lastly, you will find [best practices](#best-practices-and-configuration-considerations) to help guide how you consider both individual plugin configurations, your custom scheduler configuration, and your Deployment design holistically. @@ -89,7 +89,7 @@ spec: weight: 1 ``` -### Increase reselieince by distributing pods across topology domains +### Increase resilience by distributing pods across topology domains `PodTopologySpread` is a scheduling strategy that seeks to distribute pods evenly across failure domains (such as availability zones or regions) to ensure high availability and fault tolerance in the event of zone or node failures. From 14b044a9a84f8a54479c695b0e2dc098338c2056 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Thu, 11 Dec 2025 17:08:28 -0800 Subject: [PATCH 023/164] Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../index.md | 43 ++++++++++--------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index 47a28c236..3e45dcd30 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -65,28 +65,29 @@ spec: rawConfig: | apiVersion: kubescheduler.config.k8s.io/v1 kind: KubeSchedulerConfiguration - - schedulerName: gpu-node-binpacking-scheduler - plugins: - multiPoint: - enabled: - - name: ImageLocality - - name: NodeResourceFit + profiles: + - schedulerName: gpu-node-binpacking-scheduler + plugins: + multiPoint: + enabled: + - name: ImageLocality + - name: NodeResourceFit + - name: NodeResourcesBalancedAllocation + pluginConfig: + - name: NodeResourcesFit + args: + scoringStrategy: + type: MostAllocated + resources: + - name: cpu + weight: 1 + - name: nvidia.com/gpu + weight: 3 - name: NodeResourcesBalancedAllocation - pluginConfig: - - name: NodeResourcesFit - args: - scoringStrategy: - type: MostAllocated - resources: - - name: cpu - weight: 1 - - name: nvidia.com/gpu - weight: 3 - - name: NodeResourcesBalancedAllocation - args: - resources: - - name: nvidia.com/gpu - weight: 1 + args: + resources: + - name: nvidia.com/gpu + weight: 1 ``` ### Increase resilience by distributing pods across topology domains From 434d7f79cad97f52badcbb7e9974665f07561249 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Thu, 11 Dec 2025 17:16:22 -0800 Subject: [PATCH 024/164] Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../2025-12-16-aks-config-scheduler-profiles-preview/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index 3e45dcd30..808367f17 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -228,6 +228,6 @@ With AKS Configurable Scheduler Profiles, teams gain fine-grained control over p [concepts-scheduler-configuration]: https://learn.microsoft.com/en-us/azure/aks/concepts-scheduler-configuration [kueue-overview]: https://learn.microsoft.com/en-us/azure/aks/kueue-overview -[best-practices-advanced-scheduler]:https://learn.microsoft.com/en-us/azure/aks/operator-best-practices-advanced-scheduler +[best-practices-advanced-scheduler]: https://learn.microsoft.com/en-us/azure/aks/operator-best-practices-advanced-scheduler [scheduling-framework/#interfaces]: https://kubernetes.io/docs/concepts/scheduling-eviction/scheduling-framework/#interfaces [memory-optimized-vm]: https://learn.microsoft.com/en-us/azure/virtual-machines/sizes/overview?tabs=breakdownseries%2Cgeneralsizelist%2Ccomputesizelist%2Cmemorysizelist%2Cstoragesizelist%2Cgpusizelist%2Cfpgasizelist%2Chpcsizelist#memory-optimized From 7b8d9f807fe9cf9b47e86097a09dfac2106fa0a6 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Thu, 11 Dec 2025 19:59:40 -0800 Subject: [PATCH 025/164] Update links in AKS Config Scheduler blog post --- .../index.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index 808367f17..1bef2fc37 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -226,8 +226,8 @@ With AKS Configurable Scheduler Profiles, teams gain fine-grained control over p - Configure your workload specific scheduler using the [AKS Configurable Scheduler][concepts-scheduler-configuration] - If additional capabilities or ML frameworks are needed to schedule and queue batch workloads, you can [install and configure Kueue on AKS][kueue-overview] to ensure efficient, policy-driven scheduling in AKS clusters. -[concepts-scheduler-configuration]: https://learn.microsoft.com/en-us/azure/aks/concepts-scheduler-configuration -[kueue-overview]: https://learn.microsoft.com/en-us/azure/aks/kueue-overview -[best-practices-advanced-scheduler]: https://learn.microsoft.com/en-us/azure/aks/operator-best-practices-advanced-scheduler +[concepts-scheduler-configuration]: https://learn.microsoft.com/azure/aks/concepts-scheduler-configuration +[kueue-overview]: https://learn.microsoft.com/azure/aks/kueue-overview +[best-practices-advanced-scheduler]: https://learn.microsoft.com/azure/aks/operator-best-practices-advanced-scheduler [scheduling-framework/#interfaces]: https://kubernetes.io/docs/concepts/scheduling-eviction/scheduling-framework/#interfaces -[memory-optimized-vm]: https://learn.microsoft.com/en-us/azure/virtual-machines/sizes/overview?tabs=breakdownseries%2Cgeneralsizelist%2Ccomputesizelist%2Cmemorysizelist%2Cstoragesizelist%2Cgpusizelist%2Cfpgasizelist%2Chpcsizelist#memory-optimized +[memory-optimized-vm]: https://learn.microsoft.com/azure/virtual-machines/sizes/overview?tabs=breakdownseries%2Cgeneralsizelist%2Ccomputesizelist%2Cmemorysizelist%2Cstoragesizelist%2Cgpusizelist%2Cfpgasizelist%2Chpcsizelist#memory-optimized From 7b813e2196b8e886a8209fdf0c1b17fd427b2e23 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Thu, 11 Dec 2025 20:00:18 -0800 Subject: [PATCH 026/164] Apply suggestions from code review Co-authored-by: Diego Casati --- .../2025-12-16-aks-config-scheduler-profiles-preview/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index 1bef2fc37..56998f7b9 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -214,9 +214,9 @@ As a reminder, there are many parameters the scheduler considers across the [sch 5. Assign `priorityClassName` for workloads that should preempt others, this is critical if you use the DefaultPreemption plugin. 6. If you use the `ImageLocality` plugin, use DaemonSets or node pre-pulling for latency-sensitive images, otherwise the benefit may be minimal. 7. If your cluster is large, a low `PercentageOfNodesToScore` speeds scheduling by reducing the number of nodes scored, _but_ it may reduce optimal placement. -8. If you enable a plugin in the `plugins:multipoint` section but do not define it in `pluginConfig:`, AKS uses the default configuration for that plugin. +8. If you enable a plugin in the `plugins:multipoint` section but do not define it in `pluginConfig`, AKS uses the default configuration for that plugin. 9. For `NodeResourcesFit`, the ratio matters more than absolute values. So CPU:Memory:Storage = 3:1:2, which means CPU is 3× more influential than memory, and storage is 2x more influential than memory in the scoring phase. -10. Pair `PodTopologySpread` with pod disruption budget's (PDB) and multi‑replica strategies for HA during upgrades. +10. Pair `PodTopologySpread` with Pod Disruption Budget's (PDB) and multi‑replica strategies for HA during upgrades. ## Next Steps: Try out AKS Configurable Scheduler From c8182032289acac848e70f3dc87f671efd928536 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Fri, 12 Dec 2025 11:18:34 -0800 Subject: [PATCH 027/164] Revise blog on AKS Configurable Scheduler Profiles Updated the blog post to clarify the advantages of AKS Configurable Scheduler Profiles over the default kube-scheduler, emphasizing flexibility and control for advanced use cases. Enhanced explanations of scheduling strategies and their impact on resource utilization and performance. --- .../index.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index 56998f7b9..159d209cf 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -11,18 +11,18 @@ tags: - best-practices --- -Thoughtful scheduling strategies can resolve pervasive challenges across web-distributed workloads and AI workloads like resiliency and resource utilization. But the default scheduler was primarily designed for general-purpose workloads and out-of-box pod scheduling. The scheduler ultimately selects the optimal node for pod(s) based on several criteria, including (but not limited to): +Thoughtful scheduling strategies can resolve pervasive challenges across web-distributed workloads and AI workloads like resiliency and resource utilization. But the default scheduler was primarily designed for general-purpose workloads and out-of-box pod scheduling that could be restrictive if you needed more fine-grain control. The scheduler selects the optimal node for newly created pod(s) based on several criteria, including (but not limited to): 1. Resource requirements (CPU, memory) 2. Node affinity/anti-affinity 3. Pod affinity/anti-affinity 4. Taints and tolerations -The criteria, and their respective priority in the scheduling cycle, are not suitable for advanced use cases that might require custom scheduling strategies. Nor, does the default scheduler enable user customization for fine-grain pod placement control while avoiding managing a second custom scheduler. For example, users running batch jobs might prefer collocating on a few nodes for better performance or cost-sensitive workloads might benefit from node binpacking to minimize idle node costs. +Out of the available nodes, the scheduler then filters out nodes that don't meet the requirements to identify the node that is most optimal for the pod(s). Today, the AKS default scheduler lacks the flexibility for users to change which criteria should be prioritized, and ignored, in the scheduling cycle on a per workload basis. This means the default scheduling criteria, and their fixed priority order, are not suitable for workloads that demand co-locating pods with their persistent volumes for increased data locality, optimizing GPU utilization for machine learning, or enforcing strict zone-level distribution for microservices. -To support these advanced use cases, and to give users more control, use [AKS Configurable Scheduler Profiles][concepts-scheduler-configuration] to tailor a scheduler to their specific workload requirements using node bin-packing, preemption, and 16 other scheduling plugins that can optimize ROI​, improve gpu utilization, improve data locality, or increase resiliency. +**Why use the AKS Configurable Scheduler Profiles versus the default kube-scheduler?** For extensability and configuration control. Now, customers can use the [AKS Configurable Scheduler Profiles][concepts-scheduler-configuration] to define their own scheduling logic by selecting specific policies, altering parameter weight, changing policy priority, adding additional policy paramaters, and changing policy evaluation point (i.e. pre-Filter, Filter, Score) to provide fine-grain control as unique as the workload's themselves. Now the criteria, and their respective priority in the scheduling cycle, are suitable for advanced use cases that would have otherwise required managing a second custom scheduler. The [AKS Configurable Scheduler Profiles][concepts-scheduler-configuration] enables users to optimize ROI​, improve gpu utilization, improve data locality, or increase resiliency. -In this blog you will learn how to configure the AKS Configurable Scheduler Profiles for three workload objectives: +In this blog you will learn how to configure AKS Configurable Scheduler Profiles for three workload objectives: 1. [Increase GPU utilization by bin packing GPU-backed nodes](#increase-gpu-utilization-by-bin-packing-gpu-backed-nodes) 2. [Increase resilience by distributing pods across topology domains](#increase-resilience-by-distributing-pods-across-topology-domains) @@ -50,7 +50,7 @@ Adjust VM SKUs in `NodeAffinity`, shift utilization curves or weights, and use t ### Increase GPU Utilization by Bin Packing GPU-backed Nodes -You can use `NodeResourceFit` to control how pods are assigned to nodes based on available resources (CPU, memory, etc.), including favoring nodes with high resource utilization, within the set configuration. +The AKS default scheduler scores nodes for workload placement based upon a _LeastAllocated_ strategy, to spread across the nodes in a cluster. However, this behavior does not result in efficient resource utilization, as nodes with higher allocation are not favored and cannot be used to their optimal capacity. You can use `NodeResourceFit` to control how pods are assigned to nodes based on available resources (CPU, GPU, memory, etc.), including favoring nodes with high resource utilization, within the set configuration. For example, scheduling pending jobs on nodes with a higher relative GPU utilization, users can reduce costs and increase GPU Utilization while maintaining performance. From cae92822b0470370394e1fb077554de1418c44d3 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Fri, 12 Dec 2025 11:27:02 -0800 Subject: [PATCH 028/164] Revise AKS Configurable Scheduler Profiles section Updated the explanation of the AKS Configurable Scheduler Profiles, emphasizing the problem it solves over the default kube-scheduler --- .../index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index 159d209cf..02a0d7f48 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -11,16 +11,16 @@ tags: - best-practices --- -Thoughtful scheduling strategies can resolve pervasive challenges across web-distributed workloads and AI workloads like resiliency and resource utilization. But the default scheduler was primarily designed for general-purpose workloads and out-of-box pod scheduling that could be restrictive if you needed more fine-grain control. The scheduler selects the optimal node for newly created pod(s) based on several criteria, including (but not limited to): +Thoughtful scheduling strategies can resolve pervasive challenges across web-distributed workloads and AI workloads like resiliency and resource utilization. But the default scheduler was primarily designed for general-purpose workloads and out-of-box pod scheduling that could be restrictive if you needed more fine-grain control since it applies a set of criteria in a fixed priority order. The scheduler selects the optimal node for newly created pod(s) based on several criteria, including (but not limited to): 1. Resource requirements (CPU, memory) 2. Node affinity/anti-affinity 3. Pod affinity/anti-affinity 4. Taints and tolerations -Out of the available nodes, the scheduler then filters out nodes that don't meet the requirements to identify the node that is most optimal for the pod(s). Today, the AKS default scheduler lacks the flexibility for users to change which criteria should be prioritized, and ignored, in the scheduling cycle on a per workload basis. This means the default scheduling criteria, and their fixed priority order, are not suitable for workloads that demand co-locating pods with their persistent volumes for increased data locality, optimizing GPU utilization for machine learning, or enforcing strict zone-level distribution for microservices. +Out of the available nodes, the scheduler then filters out nodes that don't meet the requirements to identify the node that is most optimal for the pod(s). Today, the AKS default scheduler lacks the flexibility for users to change which criteria should be prioritized, and ignored, in the scheduling cycle on a per workload basis. This means the default scheduling criteria, and their fixed priority order, are not suitable for workloads that demand co-locating pods with their persistent volumes for increased data locality, optimizing GPU utilization for machine learning, or enforcing strict zone-level distribution for microservices. This rigidity often forces users to either accept suboptimal placement or manage a separate custom scheduler, both of which increase operational complexity. -**Why use the AKS Configurable Scheduler Profiles versus the default kube-scheduler?** For extensability and configuration control. Now, customers can use the [AKS Configurable Scheduler Profiles][concepts-scheduler-configuration] to define their own scheduling logic by selecting specific policies, altering parameter weight, changing policy priority, adding additional policy paramaters, and changing policy evaluation point (i.e. pre-Filter, Filter, Score) to provide fine-grain control as unique as the workload's themselves. Now the criteria, and their respective priority in the scheduling cycle, are suitable for advanced use cases that would have otherwise required managing a second custom scheduler. The [AKS Configurable Scheduler Profiles][concepts-scheduler-configuration] enables users to optimize ROI​, improve gpu utilization, improve data locality, or increase resiliency. +**[AKS Configurable Scheduler Profiles][concepts-scheduler-configuration] reduces operational complexity by providing extensibility and control.** Now, customers can define their own scheduling logic by selecting specific policies, altering parameter weight, changing policy priority, adding additional policy paramaters, and changing policy evaluation point (i.e. pre-Filter, Filter, Score) without deploying a second scheduler. The AKS Configurable Scheduler Profiles enables users to optimize resource ROI​, improve GPU utilization, reduce data fragmentation, or increase resiliency. In this blog you will learn how to configure AKS Configurable Scheduler Profiles for three workload objectives: From f824195fbe30b2a8ef1286d38d64e1fb69d64cb1 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Fri, 12 Dec 2025 12:09:36 -0800 Subject: [PATCH 029/164] Fix typo in AKS Configurable Scheduler Profiles description Corrected a typo in the description of AKS Configurable Scheduler Profiles, changing 'paramaters' to 'parameters'. --- .../2025-12-16-aks-config-scheduler-profiles-preview/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index 02a0d7f48..91122558f 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -20,7 +20,7 @@ Thoughtful scheduling strategies can resolve pervasive challenges across web-dis Out of the available nodes, the scheduler then filters out nodes that don't meet the requirements to identify the node that is most optimal for the pod(s). Today, the AKS default scheduler lacks the flexibility for users to change which criteria should be prioritized, and ignored, in the scheduling cycle on a per workload basis. This means the default scheduling criteria, and their fixed priority order, are not suitable for workloads that demand co-locating pods with their persistent volumes for increased data locality, optimizing GPU utilization for machine learning, or enforcing strict zone-level distribution for microservices. This rigidity often forces users to either accept suboptimal placement or manage a separate custom scheduler, both of which increase operational complexity. -**[AKS Configurable Scheduler Profiles][concepts-scheduler-configuration] reduces operational complexity by providing extensibility and control.** Now, customers can define their own scheduling logic by selecting specific policies, altering parameter weight, changing policy priority, adding additional policy paramaters, and changing policy evaluation point (i.e. pre-Filter, Filter, Score) without deploying a second scheduler. The AKS Configurable Scheduler Profiles enables users to optimize resource ROI​, improve GPU utilization, reduce data fragmentation, or increase resiliency. +**[AKS Configurable Scheduler Profiles][concepts-scheduler-configuration] reduces operational complexity by providing extensibility and control.** Now, customers can define their own scheduling logic by selecting specific policies, altering parameter weight, changing policy priority, adding additional policy parameters, and changing policy evaluation point (i.e. pre-Filter, Filter, Score) without deploying a second scheduler. The AKS Configurable Scheduler Profiles enables users to optimize resource ROI​, improve GPU utilization, reduce data fragmentation, or increase resiliency. In this blog you will learn how to configure AKS Configurable Scheduler Profiles for three workload objectives: From 80fafbc3b691d9c75c9715d800d57890f01a8459 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Fri, 12 Dec 2025 14:58:24 -0800 Subject: [PATCH 030/164] Enhance AKS Configurable Scheduler Profiles blog content Updated the blog post to clarify the benefits of AKS Configurable Scheduler Profiles, including user feedback on increased resiliency and reduced operational overhead. Adjusted language for improved clarity and conciseness throughout the article. --- .../index.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index 91122558f..ec603b306 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -20,7 +20,7 @@ Thoughtful scheduling strategies can resolve pervasive challenges across web-dis Out of the available nodes, the scheduler then filters out nodes that don't meet the requirements to identify the node that is most optimal for the pod(s). Today, the AKS default scheduler lacks the flexibility for users to change which criteria should be prioritized, and ignored, in the scheduling cycle on a per workload basis. This means the default scheduling criteria, and their fixed priority order, are not suitable for workloads that demand co-locating pods with their persistent volumes for increased data locality, optimizing GPU utilization for machine learning, or enforcing strict zone-level distribution for microservices. This rigidity often forces users to either accept suboptimal placement or manage a separate custom scheduler, both of which increase operational complexity. -**[AKS Configurable Scheduler Profiles][concepts-scheduler-configuration] reduces operational complexity by providing extensibility and control.** Now, customers can define their own scheduling logic by selecting specific policies, altering parameter weight, changing policy priority, adding additional policy parameters, and changing policy evaluation point (i.e. pre-Filter, Filter, Score) without deploying a second scheduler. The AKS Configurable Scheduler Profiles enables users to optimize resource ROI​, improve GPU utilization, reduce data fragmentation, or increase resiliency. +**[AKS Configurable Scheduler Profiles][concepts-scheduler-configuration] reduces operational complexity by providing extensibility and control.** Now, customers can define their own scheduling logic by selecting specific policies, altering parameter weight, changing policy priority, adding additional policy parameters, and changing policy evaluation point (i.e. pre-Filter, Filter, Score) without deploying a second scheduler. On AKS, customers have mentioned that AKS Configurable Scheduler Profiles allows them to increase resiliency without operational overhead of YAML wrangling or reduce cluster costs without adopting a secondary scheduler. Additionally, our AI and HPC customers have batch workloads that have benefitted from improved bin-packing and increased GPU utilization. In this blog you will learn how to configure AKS Configurable Scheduler Profiles for three workload objectives: @@ -34,15 +34,15 @@ Lastly, you will find [best practices](#best-practices-and-configuration-conside ## AKS Configurable Scheduler Profiles -A scheduler profile is a set of one or more in-tree scheduling plugins and configurations that dictate how to schedule a pod. Previously, the scheduler configuration wasn't accessible to users. Starting from Kubernetes version 1.33, you can now configure and set a scheduler profile for the AKS scheduler on your cluster. +AKS Configurable Scheduler Profiles uses a Custom Resource Definition (CRD) that lets users define custom scheduler profiles. A dedicated controller continuously reconciles these user-defined configurations with the underlying kube-scheduler deployment, validating changes and applying them transparently. If a configuration causes the scheduler to become unhealthy, the controller automatically rolls back to the last known good state to ensure cluster stability. -AKS supports 18 in-tree Kubernetes scheduling plugins that allow pods to be placed on user-specified nodes, ensure pods are matched with specific storage resources, and more. The plugins can be generally grouped into the following categories: +A scheduler profile is a set of one or more in-tree scheduling plugins and configurations that dictate how to schedule a pod. Previously, the scheduler configuration wasn't accessible to users. Starting from Kubernetes version 1.33, you can now configure and set a scheduler profile for the AKS scheduler on your cluster. AKS supports 18 in-tree Kubernetes [scheduling plugins][supported-in-tree-scheduling-plugins]. The plugins can be generally grouped into three categories: 1. Scheduling constraints and order-based plugins 2. Node selection constraints scheduling plugins 3. Resource and topology optimization scheduling plugins -Below you will find example configurations for some of the most common workload objectives. +Below you will find example configurations for common workload objectives. :::note Adjust VM SKUs in `NodeAffinity`, shift utilization curves or weights, and use the right zones for your cluster(s) in the configurations below. @@ -50,7 +50,7 @@ Adjust VM SKUs in `NodeAffinity`, shift utilization curves or weights, and use t ### Increase GPU Utilization by Bin Packing GPU-backed Nodes -The AKS default scheduler scores nodes for workload placement based upon a _LeastAllocated_ strategy, to spread across the nodes in a cluster. However, this behavior does not result in efficient resource utilization, as nodes with higher allocation are not favored and cannot be used to their optimal capacity. You can use `NodeResourceFit` to control how pods are assigned to nodes based on available resources (CPU, GPU, memory, etc.), including favoring nodes with high resource utilization, within the set configuration. +The AKS default scheduler scores nodes for workload placement based on a _LeastAllocated_ strategy, to spread across the nodes in a cluster. However, this behavior results in inefficient resource utilization, as nodes with higher allocation are not favored. You can use `NodeResourceFit` to control how pods are assigned to nodes based on available resources (CPU, GPU, memory, etc.), including favoring nodes with high resource utilization, within the set configuration. For example, scheduling pending jobs on nodes with a higher relative GPU utilization, users can reduce costs and increase GPU Utilization while maintaining performance. @@ -92,7 +92,7 @@ spec: ### Increase resilience by distributing pods across topology domains -`PodTopologySpread` is a scheduling strategy that seeks to distribute pods evenly across failure domains (such as availability zones or regions) to ensure high availability and fault tolerance in the event of zone or node failures. +If you don't configure any cluster-level default constraints for pod topology spreading, then the default kube-scheduler can unevenly spread pods across zones and hosts unless specified in each deployments, every time. Use `PodTopologySpread` to control how pods are distributed across failure domains to ensure high availability and fault tolerance in the event of zone or node failures, without overprovisioning. For example, spreading replicas across distinct zones safeguards availability during an AZ outage, while a softer host‑level rule prevents scheduling deadlocks when cluster capacity is uneven. @@ -231,3 +231,5 @@ With AKS Configurable Scheduler Profiles, teams gain fine-grained control over p [best-practices-advanced-scheduler]: https://learn.microsoft.com/azure/aks/operator-best-practices-advanced-scheduler [scheduling-framework/#interfaces]: https://kubernetes.io/docs/concepts/scheduling-eviction/scheduling-framework/#interfaces [memory-optimized-vm]: https://learn.microsoft.com/azure/virtual-machines/sizes/overview?tabs=breakdownseries%2Cgeneralsizelist%2Ccomputesizelist%2Cmemorysizelist%2Cstoragesizelist%2Cgpusizelist%2Cfpgasizelist%2Chpcsizelist#memory-optimized +[#internal-default-constraints]: https://kubernetes.io/docs/concepts/scheduling-eviction/topology-spread-constraints/#internal-default-constraints +[supported-in-tree-scheduling-plugins]: https://learn.microsoft.com/en-us/azure/aks/concepts-scheduler-configuration#supported-in-tree-scheduling-plugins From df42499662a6fcba6908e2e0588766ca643cd679 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Fri, 12 Dec 2025 15:03:55 -0800 Subject: [PATCH 031/164] Enhance GPU utilization explanation in AKS scheduler docs Clarified the explanation of the AKS default scheduler and its resource allocation strategy, emphasizing the benefits of using NodeResourceFit for GPU utilization. --- .../2025-12-16-aks-config-scheduler-profiles-preview/index.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index ec603b306..d29a685ae 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -50,7 +50,7 @@ Adjust VM SKUs in `NodeAffinity`, shift utilization curves or weights, and use t ### Increase GPU Utilization by Bin Packing GPU-backed Nodes -The AKS default scheduler scores nodes for workload placement based on a _LeastAllocated_ strategy, to spread across the nodes in a cluster. However, this behavior results in inefficient resource utilization, as nodes with higher allocation are not favored. You can use `NodeResourceFit` to control how pods are assigned to nodes based on available resources (CPU, GPU, memory, etc.), including favoring nodes with high resource utilization, within the set configuration. +The AKS default scheduler scores nodes for workload placement based on a _LeastAllocated_ strategy, to spread across the nodes in a cluster. However, this behavior results in inefficient resource utilization, as nodes with higher allocation are not favored. You can use `NodeResourceFit` to control how pods are assigned to nodes based on available resources (CPU, GPU, memory, etc.), including favoring nodes with high resource utilization, within the set configuration. For example, scheduling pending jobs on nodes with a higher relative GPU utilization, users can reduce costs and increase GPU Utilization while maintaining performance. @@ -231,5 +231,4 @@ With AKS Configurable Scheduler Profiles, teams gain fine-grained control over p [best-practices-advanced-scheduler]: https://learn.microsoft.com/azure/aks/operator-best-practices-advanced-scheduler [scheduling-framework/#interfaces]: https://kubernetes.io/docs/concepts/scheduling-eviction/scheduling-framework/#interfaces [memory-optimized-vm]: https://learn.microsoft.com/azure/virtual-machines/sizes/overview?tabs=breakdownseries%2Cgeneralsizelist%2Ccomputesizelist%2Cmemorysizelist%2Cstoragesizelist%2Cgpusizelist%2Cfpgasizelist%2Chpcsizelist#memory-optimized -[#internal-default-constraints]: https://kubernetes.io/docs/concepts/scheduling-eviction/topology-spread-constraints/#internal-default-constraints [supported-in-tree-scheduling-plugins]: https://learn.microsoft.com/en-us/azure/aks/concepts-scheduler-configuration#supported-in-tree-scheduling-plugins From aedfcc4551a6fbeac57354c28803443c624f6232 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Mon, 15 Dec 2025 12:27:44 -0800 Subject: [PATCH 032/164] Correct typo in best practices --- .../2025-12-16-aks-config-scheduler-profiles-preview/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index d29a685ae..107bd69a5 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -208,7 +208,7 @@ spec: As a reminder, there are many parameters the scheduler considers across the [scheduling cycle][scheduling-framework/#interfaces] before a pod is placed on a node that impacts how a pod is assigned. This section is meant to help guide how you consider both individual plugin configurations, your custom scheduler configuration, and your Deployment design holistically. 1. Ensure the intended deployment is assigned to the _correct_ scheduler profile. -2. Ensure the customer scheduler profile complements the implementation of Deployments, StorageClasses, and PersistentVolumeClaim's. Misalignment can lead to pending pods and degraded workload performance, even when the scheduler is functioning as expected. +2. Ensure the custom scheduler profile complements the implementation of Deployments, StorageClasses, and PersistentVolumeClaim's. Misalignment can lead to pending pods and degraded workload performance, even when the scheduler is functioning as expected. 3. Ensure there are enough nodes in each zone to accommodate your deployment replicas and ensure your AKS node pool spans the right availability zones. If not, pods may remain in a pending state. 4. Use namespaces to separate workloads which improves your ability to validate or troubleshoot. 5. Assign `priorityClassName` for workloads that should preempt others, this is critical if you use the DefaultPreemption plugin. From ab2dcc1be19c13b72c72240aa84d7becdd5fc205 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Mon, 15 Dec 2025 12:43:11 -0800 Subject: [PATCH 033/164] Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../2025-12-16-aks-config-scheduler-profiles-preview/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index 107bd69a5..b3e171139 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -71,7 +71,7 @@ spec: multiPoint: enabled: - name: ImageLocality - - name: NodeResourceFit + - name: NodeResourcesFit - name: NodeResourcesBalancedAllocation pluginConfig: - name: NodeResourcesFit @@ -231,4 +231,4 @@ With AKS Configurable Scheduler Profiles, teams gain fine-grained control over p [best-practices-advanced-scheduler]: https://learn.microsoft.com/azure/aks/operator-best-practices-advanced-scheduler [scheduling-framework/#interfaces]: https://kubernetes.io/docs/concepts/scheduling-eviction/scheduling-framework/#interfaces [memory-optimized-vm]: https://learn.microsoft.com/azure/virtual-machines/sizes/overview?tabs=breakdownseries%2Cgeneralsizelist%2Ccomputesizelist%2Cmemorysizelist%2Cstoragesizelist%2Cgpusizelist%2Cfpgasizelist%2Chpcsizelist#memory-optimized -[supported-in-tree-scheduling-plugins]: https://learn.microsoft.com/en-us/azure/aks/concepts-scheduler-configuration#supported-in-tree-scheduling-plugins +[supported-in-tree-scheduling-plugins]: https://learn.microsoft.com/azure/aks/concepts-scheduler-configuration#supported-in-tree-scheduling-plugins From 065d1b4965044368e13ff19da680cb9269f3fd48 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Mon, 15 Dec 2025 12:45:02 -0800 Subject: [PATCH 034/164] Apply suggestions from code review Co-authored-by: Ahmed Sabbour <103856+sabbour@users.noreply.github.com> --- .../2025-12-16-aks-config-scheduler-profiles-preview/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index b3e171139..b7592e39f 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -50,7 +50,7 @@ Adjust VM SKUs in `NodeAffinity`, shift utilization curves or weights, and use t ### Increase GPU Utilization by Bin Packing GPU-backed Nodes -The AKS default scheduler scores nodes for workload placement based on a _LeastAllocated_ strategy, to spread across the nodes in a cluster. However, this behavior results in inefficient resource utilization, as nodes with higher allocation are not favored. You can use `NodeResourceFit` to control how pods are assigned to nodes based on available resources (CPU, GPU, memory, etc.), including favoring nodes with high resource utilization, within the set configuration. +The AKS default scheduler scores nodes for workload placement based on a _LeastAllocated_ strategy, to spread across the nodes in a cluster. However, this behavior can result in inefficient resource utilization, as nodes with higher allocation are not favored. You can use `NodeResourceFit` to control how pods are assigned to nodes based on available resources (CPU, GPU, memory, etc.), including favoring nodes with high resource utilization, within the set configuration. For example, scheduling pending jobs on nodes with a higher relative GPU utilization, users can reduce costs and increase GPU Utilization while maintaining performance. From 63821dd894c69d3af6ef28d5d6d8998170eff98a Mon Sep 17 00:00:00 2001 From: Ahmed Sabbour <103856+sabbour@users.noreply.github.com> Date: Fri, 23 Jan 2026 12:42:25 -0800 Subject: [PATCH 035/164] Update website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../2025-12-16-aks-config-scheduler-profiles-preview/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index b7592e39f..ba88abb15 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -124,7 +124,7 @@ spec: ### Optimize data locality with Memory and PVC-Aware Scheduling -Use `VolumeBinding` to ensure pods are placed on nodes where _PersistentVolumeClaim's_ (PVC) can bind to _PersistentVolume's_ (PV). `VolumeZone` validates that nodes and volumes satisfy zonal requirements to avoid cross-zone storage access. +Use `VolumeBinding` to ensure pods are placed on nodes where _PersistentVolumeClaims_ (PVC) can bind to _PersistentVolumes_ (PV). `VolumeZone` validates that nodes and volumes satisfy zonal requirements to avoid cross-zone storage access. For example, combine `VolumeBinding` and `VolumeZone` plugins, with `NodeAffinity` and `NodeResourcesFit` with `RequestedToCapacityRatio`, to influence pod placement on [Azure memory-optimized SKUs][memory-optimized-vm], while ensuring PVC's bind quickly in the target zone to minimize cross‑zone traffic and latency. From 2d0f77582e7af43e15be3c2761d8708eb7264056 Mon Sep 17 00:00:00 2001 From: Ahmed Sabbour <103856+sabbour@users.noreply.github.com> Date: Fri, 23 Jan 2026 12:48:46 -0800 Subject: [PATCH 036/164] Update website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../2025-12-16-aks-config-scheduler-profiles-preview/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index ba88abb15..d21e0f0ce 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -208,7 +208,7 @@ spec: As a reminder, there are many parameters the scheduler considers across the [scheduling cycle][scheduling-framework/#interfaces] before a pod is placed on a node that impacts how a pod is assigned. This section is meant to help guide how you consider both individual plugin configurations, your custom scheduler configuration, and your Deployment design holistically. 1. Ensure the intended deployment is assigned to the _correct_ scheduler profile. -2. Ensure the custom scheduler profile complements the implementation of Deployments, StorageClasses, and PersistentVolumeClaim's. Misalignment can lead to pending pods and degraded workload performance, even when the scheduler is functioning as expected. +2. Ensure the custom scheduler profile complements the implementation of Deployments, StorageClasses, and PersistentVolumeClaims. Misalignment can lead to pending pods and degraded workload performance, even when the scheduler is functioning as expected. 3. Ensure there are enough nodes in each zone to accommodate your deployment replicas and ensure your AKS node pool spans the right availability zones. If not, pods may remain in a pending state. 4. Use namespaces to separate workloads which improves your ability to validate or troubleshoot. 5. Assign `priorityClassName` for workloads that should preempt others, this is critical if you use the DefaultPreemption plugin. From 6f08f29b283a9d7814af225c1e60d9fd10bf9431 Mon Sep 17 00:00:00 2001 From: Ahmed Sabbour <103856+sabbour@users.noreply.github.com> Date: Fri, 23 Jan 2026 12:49:57 -0800 Subject: [PATCH 037/164] Update website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../2025-12-16-aks-config-scheduler-profiles-preview/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index d21e0f0ce..4fbed961f 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -216,7 +216,7 @@ As a reminder, there are many parameters the scheduler considers across the [sch 7. If your cluster is large, a low `PercentageOfNodesToScore` speeds scheduling by reducing the number of nodes scored, _but_ it may reduce optimal placement. 8. If you enable a plugin in the `plugins:multipoint` section but do not define it in `pluginConfig`, AKS uses the default configuration for that plugin. 9. For `NodeResourcesFit`, the ratio matters more than absolute values. So CPU:Memory:Storage = 3:1:2, which means CPU is 3× more influential than memory, and storage is 2x more influential than memory in the scoring phase. -10. Pair `PodTopologySpread` with Pod Disruption Budget's (PDB) and multi‑replica strategies for HA during upgrades. +10. Pair `PodTopologySpread` with Pod Disruption Budgets (PDBs) and multi‑replica strategies for HA during upgrades. ## Next Steps: Try out AKS Configurable Scheduler From 1052ca6b3ab825e5ee4b27ae2db270e5c470aa41 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Mon, 9 Mar 2026 16:07:09 -0700 Subject: [PATCH 038/164] Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../index.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index 4fbed961f..4cee8fd5e 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -1,7 +1,7 @@ --- -title: "Announcing Azure Configurable Scheduler Profiles (Preview): Optimize resource ROI with fine grained scheduling strategies" -description: "Avoid scheduling inefficiencies and improve GPU utilization with AKS Configurable Scheduler Profiles" -date: 2025-12-16 +title: "AKS configurable scheduler profiles (preview)" +description: "Optimize AKS scheduling with configurable scheduler profiles that improve GPU utilization and align pod placement to your critical workloads at scale." +date: 2026-01-23 authors: - colin-mixon tags: @@ -11,7 +11,7 @@ tags: - best-practices --- -Thoughtful scheduling strategies can resolve pervasive challenges across web-distributed workloads and AI workloads like resiliency and resource utilization. But the default scheduler was primarily designed for general-purpose workloads and out-of-box pod scheduling that could be restrictive if you needed more fine-grain control since it applies a set of criteria in a fixed priority order. The scheduler selects the optimal node for newly created pod(s) based on several criteria, including (but not limited to): +Thoughtful scheduling strategies can resolve pervasive challenges across web-distributed workloads and AI workloads like resiliency and resource utilization. But the default scheduler was primarily designed for general-purpose workloads and out-of-box pod scheduling that could be restrictive if you needed more fine-grained control since it applies a set of criteria in a fixed priority order. The scheduler selects the optimal node for newly created pod(s) based on several criteria, including (but not limited to): 1. Resource requirements (CPU, memory) 2. Node affinity/anti-affinity @@ -20,7 +20,7 @@ Thoughtful scheduling strategies can resolve pervasive challenges across web-dis Out of the available nodes, the scheduler then filters out nodes that don't meet the requirements to identify the node that is most optimal for the pod(s). Today, the AKS default scheduler lacks the flexibility for users to change which criteria should be prioritized, and ignored, in the scheduling cycle on a per workload basis. This means the default scheduling criteria, and their fixed priority order, are not suitable for workloads that demand co-locating pods with their persistent volumes for increased data locality, optimizing GPU utilization for machine learning, or enforcing strict zone-level distribution for microservices. This rigidity often forces users to either accept suboptimal placement or manage a separate custom scheduler, both of which increase operational complexity. -**[AKS Configurable Scheduler Profiles][concepts-scheduler-configuration] reduces operational complexity by providing extensibility and control.** Now, customers can define their own scheduling logic by selecting specific policies, altering parameter weight, changing policy priority, adding additional policy parameters, and changing policy evaluation point (i.e. pre-Filter, Filter, Score) without deploying a second scheduler. On AKS, customers have mentioned that AKS Configurable Scheduler Profiles allows them to increase resiliency without operational overhead of YAML wrangling or reduce cluster costs without adopting a secondary scheduler. Additionally, our AI and HPC customers have batch workloads that have benefitted from improved bin-packing and increased GPU utilization. +**[AKS Configurable Scheduler Profiles][concepts-scheduler-configuration] reduces operational complexity by providing extensibility and control.** Now, customers can define their own scheduling logic by selecting specific policies, altering parameter weight, changing policy priority, adding additional policy parameters, and changing policy evaluation point (i.e. PreFilter, Filter, Score) without deploying a second scheduler. On AKS, customers have mentioned that AKS Configurable Scheduler Profiles allows them to increase resiliency without operational overhead of YAML wrangling or reduce cluster costs without adopting a secondary scheduler. Additionally, our AI and HPC customers have batch workloads that have benefitted from improved bin-packing and increased GPU utilization. In this blog you will learn how to configure AKS Configurable Scheduler Profiles for three workload objectives: @@ -50,7 +50,7 @@ Adjust VM SKUs in `NodeAffinity`, shift utilization curves or weights, and use t ### Increase GPU Utilization by Bin Packing GPU-backed Nodes -The AKS default scheduler scores nodes for workload placement based on a _LeastAllocated_ strategy, to spread across the nodes in a cluster. However, this behavior can result in inefficient resource utilization, as nodes with higher allocation are not favored. You can use `NodeResourceFit` to control how pods are assigned to nodes based on available resources (CPU, GPU, memory, etc.), including favoring nodes with high resource utilization, within the set configuration. +The AKS default scheduler scores nodes for workload placement based on a _LeastAllocated_ strategy, to spread across the nodes in a cluster. However, this behavior can result in inefficient resource utilization, as nodes with higher allocation are not favored. You can use `NodeResourcesFit` to control how pods are assigned to nodes based on available resources (CPU, GPU, memory, etc.), including favoring nodes with high resource utilization, within the set configuration. For example, scheduling pending jobs on nodes with a higher relative GPU utilization, users can reduce costs and increase GPU Utilization while maintaining performance. @@ -92,7 +92,7 @@ spec: ### Increase resilience by distributing pods across topology domains -If you don't configure any cluster-level default constraints for pod topology spreading, then the default kube-scheduler can unevenly spread pods across zones and hosts unless specified in each deployments, every time. Use `PodTopologySpread` to control how pods are distributed across failure domains to ensure high availability and fault tolerance in the event of zone or node failures, without overprovisioning. +If you don't configure any cluster-level default constraints for pod topology spreading, then the default kube-scheduler can unevenly spread pods across zones and hosts unless specified in each deployment, every time. Use `PodTopologySpread` to control how pods are distributed across failure domains to ensure high availability and fault tolerance in the event of zone or node failures, without overprovisioning. For example, spreading replicas across distinct zones safeguards availability during an AZ outage, while a softer host‑level rule prevents scheduling deadlocks when cluster capacity is uneven. @@ -126,7 +126,7 @@ spec: Use `VolumeBinding` to ensure pods are placed on nodes where _PersistentVolumeClaims_ (PVC) can bind to _PersistentVolumes_ (PV). `VolumeZone` validates that nodes and volumes satisfy zonal requirements to avoid cross-zone storage access. -For example, combine `VolumeBinding` and `VolumeZone` plugins, with `NodeAffinity` and `NodeResourcesFit` with `RequestedToCapacityRatio`, to influence pod placement on [Azure memory-optimized SKUs][memory-optimized-vm], while ensuring PVC's bind quickly in the target zone to minimize cross‑zone traffic and latency. +For example, combine `VolumeBinding` and `VolumeZone` plugins, with `NodeAffinity` and `NodeResourcesFit` with `RequestedToCapacityRatio`, to influence pod placement on [Azure memory-optimized SKUs][memory-optimized-vm], while ensuring PVCs bind quickly in the target zone to minimize cross‑zone traffic and latency. **This scheduler configuration ensures workloads needing large memory footprints are placed on nodes that provide sufficient RAM and maintain proximity to their volumes, enabling fast, zone‑aligned PVC binding for optimal data locality.** From e649e06a04bc17d8f4e4c15c5ed6260a9b2fa7ee Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Mon, 9 Mar 2026 16:10:52 -0700 Subject: [PATCH 039/164] Revise AKS configurable scheduler profiles preview Updated the AKS scheduler profiles preview with new date and refined content. Removed outdated sections and optimized descriptions for clarity. --- .../index.md | 79 ++----------------- 1 file changed, 8 insertions(+), 71 deletions(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index 4cee8fd5e..110e46e01 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -1,7 +1,7 @@ --- title: "AKS configurable scheduler profiles (preview)" description: "Optimize AKS scheduling with configurable scheduler profiles that improve GPU utilization and align pod placement to your critical workloads at scale." -date: 2026-01-23 +date: 2026-04-23 authors: - colin-mixon tags: @@ -90,43 +90,9 @@ spec: weight: 1 ``` -### Increase resilience by distributing pods across topology domains -If you don't configure any cluster-level default constraints for pod topology spreading, then the default kube-scheduler can unevenly spread pods across zones and hosts unless specified in each deployment, every time. Use `PodTopologySpread` to control how pods are distributed across failure domains to ensure high availability and fault tolerance in the event of zone or node failures, without overprovisioning. +### ResourceToCapacity -For example, spreading replicas across distinct zones safeguards availability during an AZ outage, while a softer host‑level rule prevents scheduling deadlocks when cluster capacity is uneven. - -**This configuration is effective for highly‑available stateless services (web/API, gateways) or distributed messaging clusters, like Kafka brokers, that rely on the availability of multiple replicas.** - -```yaml -apiVersion: aks.azure.com/v1alpha1 -kind: SchedulerConfiguration -metadata: - name: upstream -spec: - rawConfig: | - apiVersion: kubescheduler.config.k8s.io/v1 - kind: KubeSchedulerConfiguration - profiles: - - schedulerName: pod-distribution-scheduler - pluginConfig: - - name: PodTopologySpread - args: - defaultingType: List - defaultConstraints: - - maxSkew: 2 - topologyKey: topology.kubernetes.io/zone - whenUnsatisfiable: DoNotSchedule - - maxSkew: 1 - topologyKey: kubernetes.io/hostname - whenUnsatisfiable: ScheduleAnyway -``` - -### Optimize data locality with Memory and PVC-Aware Scheduling - -Use `VolumeBinding` to ensure pods are placed on nodes where _PersistentVolumeClaims_ (PVC) can bind to _PersistentVolumes_ (PV). `VolumeZone` validates that nodes and volumes satisfy zonal requirements to avoid cross-zone storage access. - -For example, combine `VolumeBinding` and `VolumeZone` plugins, with `NodeAffinity` and `NodeResourcesFit` with `RequestedToCapacityRatio`, to influence pod placement on [Azure memory-optimized SKUs][memory-optimized-vm], while ensuring PVCs bind quickly in the target zone to minimize cross‑zone traffic and latency. **This scheduler configuration ensures workloads needing large memory footprints are placed on nodes that provide sufficient RAM and maintain proximity to their volumes, enabling fast, zone‑aligned PVC binding for optimal data locality.** @@ -140,40 +106,12 @@ spec: apiVersion: kubescheduler.config.k8s.io/v1 kind: KubeSchedulerConfiguration profiles: - - schedulerName: mem-optimized-node-scheduler + - schedulerName: cpu-binpacking-scheduler plugins: multiPoint: enabled: - - name: NodeAffinity - name: NodeResourcesFit - - name: VolumeBinding - - name: VolumeZone pluginConfig: - - name: NodeAffinity - args: - apiVersion: kubescheduler.config.k8s.io/v1 - kind: NodeAffinityArgs - addedAffinity: - preferredDuringSchedulingIgnoredDuringExecution: - - weight: 100 - preference: - matchExpressions: - - key: topology.kubernetes.io/zone - operator: In - values: [westus3-1, westus3-2, westus3-3] - - weight: 80 - preference: - matchExpressions: - - key: node.kubernetes.io/instance-type - operator: In - values: - - Standard_E16s_v5 - - Standard_E32s_v5 - - name: VolumeBinding - args: - apiVersion: kubescheduler.config.k8s.io/v1 - kind: VolumeBindingArgs - bindTimeoutSeconds: 300 - name: NodeResourcesFit args: apiVersion: kubescheduler.config.k8s.io/v1 @@ -192,13 +130,13 @@ spec: - utilization: 0 score: 0 - utilization: 30 - score: 4 - - utilization: 60 score: 8 - - utilization: 80 + - utilization: 50 + score: 10 + - utilization: 85 score: 10 - utilization: 90 - score: 6 + score: 3 - utilization: 100 score: 0 ``` @@ -208,10 +146,9 @@ spec: As a reminder, there are many parameters the scheduler considers across the [scheduling cycle][scheduling-framework/#interfaces] before a pod is placed on a node that impacts how a pod is assigned. This section is meant to help guide how you consider both individual plugin configurations, your custom scheduler configuration, and your Deployment design holistically. 1. Ensure the intended deployment is assigned to the _correct_ scheduler profile. -2. Ensure the custom scheduler profile complements the implementation of Deployments, StorageClasses, and PersistentVolumeClaims. Misalignment can lead to pending pods and degraded workload performance, even when the scheduler is functioning as expected. +2. Ensure the custom scheduler profile compliments the implementation of Deployments, StorageClasses, and PersistentVolumeClaims. Misalignment can lead to pending pods and degraded workload performance, even when the scheduler is functioning as expected. 3. Ensure there are enough nodes in each zone to accommodate your deployment replicas and ensure your AKS node pool spans the right availability zones. If not, pods may remain in a pending state. 4. Use namespaces to separate workloads which improves your ability to validate or troubleshoot. -5. Assign `priorityClassName` for workloads that should preempt others, this is critical if you use the DefaultPreemption plugin. 6. If you use the `ImageLocality` plugin, use DaemonSets or node pre-pulling for latency-sensitive images, otherwise the benefit may be minimal. 7. If your cluster is large, a low `PercentageOfNodesToScore` speeds scheduling by reducing the number of nodes scored, _but_ it may reduce optimal placement. 8. If you enable a plugin in the `plugins:multipoint` section but do not define it in `pluginConfig`, AKS uses the default configuration for that plugin. From 0b3fd861e76923048f8932293e644956e0af3afa Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Mon, 9 Mar 2026 16:14:05 -0700 Subject: [PATCH 040/164] Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../2025-12-16-aks-config-scheduler-profiles-preview/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index 110e46e01..06c598c21 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -2,8 +2,8 @@ title: "AKS configurable scheduler profiles (preview)" description: "Optimize AKS scheduling with configurable scheduler profiles that improve GPU utilization and align pod placement to your critical workloads at scale." date: 2026-04-23 -authors: - - colin-mixon +authors: + - colin-mixon tags: - ai - performance From 6f1a43aebf10b608ad6650118b959f7557dd094e Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Tue, 10 Mar 2026 13:36:13 -0700 Subject: [PATCH 041/164] Revise section on AKS Configurable Scheduler Profiles Updated the section title and enhanced the description of AKS Configurable Scheduler Profiles to emphasize optimization and testing. --- .../2025-12-16-aks-config-scheduler-profiles-preview/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index 06c598c21..0e5cd8642 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -155,7 +155,7 @@ As a reminder, there are many parameters the scheduler considers across the [sch 9. For `NodeResourcesFit`, the ratio matters more than absolute values. So CPU:Memory:Storage = 3:1:2, which means CPU is 3× more influential than memory, and storage is 2x more influential than memory in the scoring phase. 10. Pair `PodTopologySpread` with Pod Disruption Budgets (PDBs) and multi‑replica strategies for HA during upgrades. -## Next Steps: Try out AKS Configurable Scheduler +## Next Steps: Optimize and test with AKS Configurable Scheduler Profiles With AKS Configurable Scheduler Profiles, teams gain fine-grained control over pod placement strategies like bin-packing, topology distribution, and resource-based scoring that directly address the challenges of resilience and resource utilization for web-distributed workloads and AI workloads. By leveraging these advanced scheduling plugins, AKS users can ensure their workloads make full use of available GPU capacity, reduce idle time, and avoid costly overprovisioning. This not only improves ROI but also accelerates innovation by allowing more jobs to run concurrently and reliably. From 6b61379cb82cf90ccca243cec94fc5947da50227 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Tue, 10 Mar 2026 13:36:58 -0700 Subject: [PATCH 042/164] Remove best practices section from AKS blog post Removed the 'Best Practices and Configuration Considerations' section to streamline content and focus on next steps for AKS Configurable Scheduler Profiles. --- .../index.md | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index 0e5cd8642..95eaa4499 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -141,20 +141,6 @@ spec: score: 0 ``` -## Best Practices and Configuration Considerations - -As a reminder, there are many parameters the scheduler considers across the [scheduling cycle][scheduling-framework/#interfaces] before a pod is placed on a node that impacts how a pod is assigned. This section is meant to help guide how you consider both individual plugin configurations, your custom scheduler configuration, and your Deployment design holistically. - -1. Ensure the intended deployment is assigned to the _correct_ scheduler profile. -2. Ensure the custom scheduler profile compliments the implementation of Deployments, StorageClasses, and PersistentVolumeClaims. Misalignment can lead to pending pods and degraded workload performance, even when the scheduler is functioning as expected. -3. Ensure there are enough nodes in each zone to accommodate your deployment replicas and ensure your AKS node pool spans the right availability zones. If not, pods may remain in a pending state. -4. Use namespaces to separate workloads which improves your ability to validate or troubleshoot. -6. If you use the `ImageLocality` plugin, use DaemonSets or node pre-pulling for latency-sensitive images, otherwise the benefit may be minimal. -7. If your cluster is large, a low `PercentageOfNodesToScore` speeds scheduling by reducing the number of nodes scored, _but_ it may reduce optimal placement. -8. If you enable a plugin in the `plugins:multipoint` section but do not define it in `pluginConfig`, AKS uses the default configuration for that plugin. -9. For `NodeResourcesFit`, the ratio matters more than absolute values. So CPU:Memory:Storage = 3:1:2, which means CPU is 3× more influential than memory, and storage is 2x more influential than memory in the scoring phase. -10. Pair `PodTopologySpread` with Pod Disruption Budgets (PDBs) and multi‑replica strategies for HA during upgrades. - ## Next Steps: Optimize and test with AKS Configurable Scheduler Profiles With AKS Configurable Scheduler Profiles, teams gain fine-grained control over pod placement strategies like bin-packing, topology distribution, and resource-based scoring that directly address the challenges of resilience and resource utilization for web-distributed workloads and AI workloads. By leveraging these advanced scheduling plugins, AKS users can ensure their workloads make full use of available GPU capacity, reduce idle time, and avoid costly overprovisioning. This not only improves ROI but also accelerates innovation by allowing more jobs to run concurrently and reliably. From 7da937d1dd1b8f385f7e2b346ce512cca6fa887a Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Tue, 10 Mar 2026 13:53:09 -0700 Subject: [PATCH 043/164] Refactor authors and tags in blog post metadata Updated authors and tags formatting in the blog post. --- .../index.md | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index 95eaa4499..0015e3234 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -2,13 +2,8 @@ title: "AKS configurable scheduler profiles (preview)" description: "Optimize AKS scheduling with configurable scheduler profiles that improve GPU utilization and align pod placement to your critical workloads at scale." date: 2026-04-23 -authors: - - colin-mixon -tags: - - ai - - performance - - scheduler - - best-practices +authors: [colin-mixon] +tags: [ai, performance, scheduler, best-practices] --- Thoughtful scheduling strategies can resolve pervasive challenges across web-distributed workloads and AI workloads like resiliency and resource utilization. But the default scheduler was primarily designed for general-purpose workloads and out-of-box pod scheduling that could be restrictive if you needed more fine-grained control since it applies a set of criteria in a fixed priority order. The scheduler selects the optimal node for newly created pod(s) based on several criteria, including (but not limited to): From eed9353135c61bdebc76a0a2f4189afb88ed188c Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Tue, 10 Mar 2026 15:33:44 -0700 Subject: [PATCH 044/164] Revise blog content on AKS Configurable Scheduler Profiles Updated the blog post to clarify the objectives of configuring AKS Configurable Scheduler Profiles, changing the focus from general workload objectives to increased node utilization. Adjusted the list of objectives to reflect the new focus and improved clarity. --- .../index.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index 0015e3234..4adbc0b3e 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -17,11 +17,10 @@ Out of the available nodes, the scheduler then filters out nodes that don't meet **[AKS Configurable Scheduler Profiles][concepts-scheduler-configuration] reduces operational complexity by providing extensibility and control.** Now, customers can define their own scheduling logic by selecting specific policies, altering parameter weight, changing policy priority, adding additional policy parameters, and changing policy evaluation point (i.e. PreFilter, Filter, Score) without deploying a second scheduler. On AKS, customers have mentioned that AKS Configurable Scheduler Profiles allows them to increase resiliency without operational overhead of YAML wrangling or reduce cluster costs without adopting a secondary scheduler. Additionally, our AI and HPC customers have batch workloads that have benefitted from improved bin-packing and increased GPU utilization. -In this blog you will learn how to configure AKS Configurable Scheduler Profiles for three workload objectives: +In this blog you will learn how to configure AKS Configurable Scheduler Profiles for three increased node utilization: -1. [Increase GPU utilization by bin packing GPU-backed nodes](#increase-gpu-utilization-by-bin-packing-gpu-backed-nodes) -2. [Increase resilience by distributing pods across topology domains](#increase-resilience-by-distributing-pods-across-topology-domains) -3. [Optimize data locality with memory and PVC-aware scheduling](#optimize-data-locality-with-memory-and-pvc-aware-scheduling) +1. [How to increase CPU utilization](#increase-gpu-utilization-by-bin-packing-gpu-backed-nodes) +2. [How to increase GPU utilization](#increase-gpu-utilization-by-bin-packing-gpu-backed-nodes) Lastly, you will find [best practices](#best-practices-and-configuration-considerations) to help guide how you consider both individual plugin configurations, your custom scheduler configuration, and your Deployment design holistically. From 42db1bd9a37c6957cfc34644391a1d4672019ded Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Thu, 19 Mar 2026 10:10:45 -0700 Subject: [PATCH 045/164] Update tags for AKS configurable scheduler profiles post Added 'cost' tag to enhance categorization of the blog post. --- .../2025-12-16-aks-config-scheduler-profiles-preview/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index 4adbc0b3e..03615020c 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -3,7 +3,7 @@ title: "AKS configurable scheduler profiles (preview)" description: "Optimize AKS scheduling with configurable scheduler profiles that improve GPU utilization and align pod placement to your critical workloads at scale." date: 2026-04-23 authors: [colin-mixon] -tags: [ai, performance, scheduler, best-practices] +tags: [ai, performance, scheduler, best-practices, cost] --- Thoughtful scheduling strategies can resolve pervasive challenges across web-distributed workloads and AI workloads like resiliency and resource utilization. But the default scheduler was primarily designed for general-purpose workloads and out-of-box pod scheduling that could be restrictive if you needed more fine-grained control since it applies a set of criteria in a fixed priority order. The scheduler selects the optimal node for newly created pod(s) based on several criteria, including (but not limited to): From 3befa1da844d8e7707c8025c37f2148a779832c3 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Thu, 19 Mar 2026 10:26:05 -0700 Subject: [PATCH 046/164] Add files via upload --- config-scheduler-profiles.png | Bin 0 -> 56613 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 config-scheduler-profiles.png diff --git a/config-scheduler-profiles.png b/config-scheduler-profiles.png new file mode 100644 index 0000000000000000000000000000000000000000..fd7fd74e2418465c4ed96ef9e9945fb45cc14121 GIT binary patch literal 56613 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 literal 0 HcmV?d00001 From c7aefcc0f9418a367f63bf8e1a6fea1e0f9b806c Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Thu, 19 Mar 2026 10:27:35 -0700 Subject: [PATCH 047/164] Add files via upload --- .../config-scheduler-profiles.png | Bin 0 -> 56613 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 website/blog/2025-12-16-aks-config-scheduler-profiles-preview/config-scheduler-profiles.png diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/config-scheduler-profiles.png b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/config-scheduler-profiles.png new file mode 100644 index 0000000000000000000000000000000000000000..fd7fd74e2418465c4ed96ef9e9945fb45cc14121 GIT binary patch literal 56613 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 literal 0 HcmV?d00001 From 88b7a384ed01c09e2944790395f9937b10ccffcd Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Thu, 19 Mar 2026 10:27:53 -0700 Subject: [PATCH 048/164] Delete config-scheduler-profiles.png --- config-scheduler-profiles.png | Bin 56613 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 config-scheduler-profiles.png diff --git a/config-scheduler-profiles.png b/config-scheduler-profiles.png deleted file mode 100644 index fd7fd74e2418465c4ed96ef9e9945fb45cc14121..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56613 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 From 0307bac7b8751e429b282162a34fe6d970ba6d11 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Thu, 19 Mar 2026 10:29:10 -0700 Subject: [PATCH 049/164] Add diagram for AKS Configurable Scheduler Profiles Added a diagram to illustrate the Configurable Scheduler Profiles feature in AKS. --- .../2025-12-16-aks-config-scheduler-profiles-preview/index.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index 03615020c..b3fb6ca32 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -30,6 +30,8 @@ Lastly, you will find [best practices](#best-practices-and-configuration-conside AKS Configurable Scheduler Profiles uses a Custom Resource Definition (CRD) that lets users define custom scheduler profiles. A dedicated controller continuously reconciles these user-defined configurations with the underlying kube-scheduler deployment, validating changes and applying them transparently. If a configuration causes the scheduler to become unhealthy, the controller automatically rolls back to the last known good state to ensure cluster stability. +![Configurable Scheduler Profiles Diagram](CONFIG_SCHEDULER_PROFILES.png) + A scheduler profile is a set of one or more in-tree scheduling plugins and configurations that dictate how to schedule a pod. Previously, the scheduler configuration wasn't accessible to users. Starting from Kubernetes version 1.33, you can now configure and set a scheduler profile for the AKS scheduler on your cluster. AKS supports 18 in-tree Kubernetes [scheduling plugins][supported-in-tree-scheduling-plugins]. The plugins can be generally grouped into three categories: 1. Scheduling constraints and order-based plugins From 5f85dd4bfe4212854a424da243e8c46e3e9fd862 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Thu, 19 Mar 2026 11:05:07 -0700 Subject: [PATCH 050/164] Update scheduling strategies description in blog post Refine the explanation of scheduling strategies and constraints for better clarity. --- .../2025-12-16-aks-config-scheduler-profiles-preview/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index b3fb6ca32..9df11d37b 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -6,7 +6,7 @@ authors: [colin-mixon] tags: [ai, performance, scheduler, best-practices, cost] --- -Thoughtful scheduling strategies can resolve pervasive challenges across web-distributed workloads and AI workloads like resiliency and resource utilization. But the default scheduler was primarily designed for general-purpose workloads and out-of-box pod scheduling that could be restrictive if you needed more fine-grained control since it applies a set of criteria in a fixed priority order. The scheduler selects the optimal node for newly created pod(s) based on several criteria, including (but not limited to): +Thoughtful scheduling strategies can resolve pervasive challenges like resource utilization. The default scheduler was primarily designed for general-purpose workloads and out-of-box pod scheduling that can be restrictive if you want to bin pack nodes since the hard and soft constraints for pod scheduling do not align with scheudling pods with nodes of higher utilization. The scheduler selects the optimal node for queued pod(s) based on several constraints, including (but not limited to): 1. Resource requirements (CPU, memory) 2. Node affinity/anti-affinity From b040176b0b1ec31959f74d1f77c557d06b9233c7 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Thu, 19 Mar 2026 14:07:31 -0700 Subject: [PATCH 051/164] Enhance introduction with kube-scheduler context Updated introduction to include kube-scheduler as a core component of Kubernetes Control Plane. --- .../2025-12-16-aks-config-scheduler-profiles-preview/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index 9df11d37b..7980ad61d 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -6,7 +6,7 @@ authors: [colin-mixon] tags: [ai, performance, scheduler, best-practices, cost] --- -Thoughtful scheduling strategies can resolve pervasive challenges like resource utilization. The default scheduler was primarily designed for general-purpose workloads and out-of-box pod scheduling that can be restrictive if you want to bin pack nodes since the hard and soft constraints for pod scheduling do not align with scheudling pods with nodes of higher utilization. The scheduler selects the optimal node for queued pod(s) based on several constraints, including (but not limited to): +Thoughtful scheduling strategies can resolve pervasive challenges like resource utilization. The kube-scheduler is one of the core components of the Kubernetes Control Plane, alongside kube-apiserver, etcd, and the controller manager. The default scheduler was primarily designed for general-purpose workloads and out-of-box pod scheduling that can be restrictive if you want to bin pack nodes since the hard and soft constraints for pod scheduling do not align with scheudling pods with nodes of higher utilization. The scheduler selects the optimal node for queued pod(s) based on several constraints, including (but not limited to): 1. Resource requirements (CPU, memory) 2. Node affinity/anti-affinity From 74a27813b0f644715be317a7efdf83a8eab12499 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Thu, 19 Mar 2026 14:58:57 -0700 Subject: [PATCH 052/164] Add files via upload --- ...kube-scheduler-scheduling-cycles-diagram.png | Bin 0 -> 46603 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 website/blog/2025-12-16-aks-config-scheduler-profiles-preview/kube-scheduler-scheduling-cycles-diagram.png diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/kube-scheduler-scheduling-cycles-diagram.png b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/kube-scheduler-scheduling-cycles-diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..211eab37b6cd67c64902bdbe66f417da6bf877f1 GIT binary patch literal 46603 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 Date: Thu, 19 Mar 2026 15:01:04 -0700 Subject: [PATCH 053/164] Enhance blog with diagram and scheduler profiles benefits Added a diagram to illustrate Kube Scheduler cycles and highlighted the benefits of AKS Configurable Scheduler Profiles. --- .../2025-12-16-aks-config-scheduler-profiles-preview/index.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index 7980ad61d..f53131326 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -15,6 +15,8 @@ Thoughtful scheduling strategies can resolve pervasive challenges like resource Out of the available nodes, the scheduler then filters out nodes that don't meet the requirements to identify the node that is most optimal for the pod(s). Today, the AKS default scheduler lacks the flexibility for users to change which criteria should be prioritized, and ignored, in the scheduling cycle on a per workload basis. This means the default scheduling criteria, and their fixed priority order, are not suitable for workloads that demand co-locating pods with their persistent volumes for increased data locality, optimizing GPU utilization for machine learning, or enforcing strict zone-level distribution for microservices. This rigidity often forces users to either accept suboptimal placement or manage a separate custom scheduler, both of which increase operational complexity. +![Kube Scheduler Cycles Diagram](KUBE_SCHEDULER_SCHEDULING_CYCLES_DIAGRAM.png) + **[AKS Configurable Scheduler Profiles][concepts-scheduler-configuration] reduces operational complexity by providing extensibility and control.** Now, customers can define their own scheduling logic by selecting specific policies, altering parameter weight, changing policy priority, adding additional policy parameters, and changing policy evaluation point (i.e. PreFilter, Filter, Score) without deploying a second scheduler. On AKS, customers have mentioned that AKS Configurable Scheduler Profiles allows them to increase resiliency without operational overhead of YAML wrangling or reduce cluster costs without adopting a secondary scheduler. Additionally, our AI and HPC customers have batch workloads that have benefitted from improved bin-packing and increased GPU utilization. In this blog you will learn how to configure AKS Configurable Scheduler Profiles for three increased node utilization: From 50edecd975cfdca9f7d0078ee52b984916f1fabd Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Thu, 19 Mar 2026 15:40:18 -0700 Subject: [PATCH 054/164] Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../index.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index f53131326..bdd90f96e 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -15,7 +15,7 @@ Thoughtful scheduling strategies can resolve pervasive challenges like resource Out of the available nodes, the scheduler then filters out nodes that don't meet the requirements to identify the node that is most optimal for the pod(s). Today, the AKS default scheduler lacks the flexibility for users to change which criteria should be prioritized, and ignored, in the scheduling cycle on a per workload basis. This means the default scheduling criteria, and their fixed priority order, are not suitable for workloads that demand co-locating pods with their persistent volumes for increased data locality, optimizing GPU utilization for machine learning, or enforcing strict zone-level distribution for microservices. This rigidity often forces users to either accept suboptimal placement or manage a separate custom scheduler, both of which increase operational complexity. -![Kube Scheduler Cycles Diagram](KUBE_SCHEDULER_SCHEDULING_CYCLES_DIAGRAM.png) +![Kube Scheduler Cycles Diagram](./kube-scheduler-scheduling-cycles-diagram.png) **[AKS Configurable Scheduler Profiles][concepts-scheduler-configuration] reduces operational complexity by providing extensibility and control.** Now, customers can define their own scheduling logic by selecting specific policies, altering parameter weight, changing policy priority, adding additional policy parameters, and changing policy evaluation point (i.e. PreFilter, Filter, Score) without deploying a second scheduler. On AKS, customers have mentioned that AKS Configurable Scheduler Profiles allows them to increase resiliency without operational overhead of YAML wrangling or reduce cluster costs without adopting a secondary scheduler. Additionally, our AI and HPC customers have batch workloads that have benefitted from improved bin-packing and increased GPU utilization. @@ -32,7 +32,7 @@ Lastly, you will find [best practices](#best-practices-and-configuration-conside AKS Configurable Scheduler Profiles uses a Custom Resource Definition (CRD) that lets users define custom scheduler profiles. A dedicated controller continuously reconciles these user-defined configurations with the underlying kube-scheduler deployment, validating changes and applying them transparently. If a configuration causes the scheduler to become unhealthy, the controller automatically rolls back to the last known good state to ensure cluster stability. -![Configurable Scheduler Profiles Diagram](CONFIG_SCHEDULER_PROFILES.png) +![Configurable Scheduler Profiles Diagram](./config-scheduler-profiles.png) A scheduler profile is a set of one or more in-tree scheduling plugins and configurations that dictate how to schedule a pod. Previously, the scheduler configuration wasn't accessible to users. Starting from Kubernetes version 1.33, you can now configure and set a scheduler profile for the AKS scheduler on your cluster. AKS supports 18 in-tree Kubernetes [scheduling plugins][supported-in-tree-scheduling-plugins]. The plugins can be generally grouped into three categories: @@ -43,14 +43,14 @@ A scheduler profile is a set of one or more in-tree scheduling plugins and confi Below you will find example configurations for common workload objectives. :::note -Adjust VM SKUs in `NodeAffinity`, shift utilization curves or weights, and use the right zones for your cluster(s) in the configurations below. +Treat these examples as starting points. Adjust resource weights, utilization thresholds, and plugin parameters to match your VM SKUs, workload patterns, and cluster topology. ::: ### Increase GPU Utilization by Bin Packing GPU-backed Nodes The AKS default scheduler scores nodes for workload placement based on a _LeastAllocated_ strategy, to spread across the nodes in a cluster. However, this behavior can result in inefficient resource utilization, as nodes with higher allocation are not favored. You can use `NodeResourcesFit` to control how pods are assigned to nodes based on available resources (CPU, GPU, memory, etc.), including favoring nodes with high resource utilization, within the set configuration. -For example, scheduling pending jobs on nodes with a higher relative GPU utilization, users can reduce costs and increase GPU Utilization while maintaining performance. +For example, scheduling pending jobs on nodes with a higher relative GPU utilization, users can reduce costs and increase GPU utilization while maintaining performance. **This scheduler configuration maximizes GPU efficiency for larger batch jobs by consolidating smaller jobs onto fewer nodes and lowering the operational cost of underutilized resources without sacrificing performance.** From 110c48ab3ad8f3782ffa2538bd7a33fedc296047 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Thu, 19 Mar 2026 15:44:27 -0700 Subject: [PATCH 055/164] Add cost management tag to blog tags Added a new tag for cost management in AKS clusters. --- website/blog/tags.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/website/blog/tags.yml b/website/blog/tags.yml index 0bf18cb2a..5e260c9b7 100644 --- a/website/blog/tags.yml +++ b/website/blog/tags.yml @@ -82,6 +82,11 @@ certbot: permalink: /certbot description: Using Certbot and Let’s Encrypt to obtain and manage TLS certificates for AKS ingress. +cost: + label: Cost + permalink: /cost + description: Recommended patterns, anti-patterns, and guidance for managing and optimizing cost of AKS clusters. + cilium: label: Cilium permalink: /cilium @@ -276,6 +281,7 @@ scheduler: label: Scheduler permalink: /scheduler description: Techniques and capabilities to control pod placement, improve resource efficiency, and tune scheduling for diverse AKS workloads. + security: label: Security permalink: /security From c28e170685568b658cadcfd5e476adb09149170b Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Thu, 19 Mar 2026 16:22:59 -0700 Subject: [PATCH 056/164] Revise blog on AKS Configurable Scheduler Profiles Updated the blog post to improve clarity and accuracy regarding AKS Configurable Scheduler Profiles, including changes to the descriptions of scheduling logic, configuration examples, and next steps for optimization. --- .../index.md | 40 +++++++------------ 1 file changed, 15 insertions(+), 25 deletions(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index bdd90f96e..e34d94b16 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -17,15 +17,13 @@ Out of the available nodes, the scheduler then filters out nodes that don't meet ![Kube Scheduler Cycles Diagram](./kube-scheduler-scheduling-cycles-diagram.png) -**[AKS Configurable Scheduler Profiles][concepts-scheduler-configuration] reduces operational complexity by providing extensibility and control.** Now, customers can define their own scheduling logic by selecting specific policies, altering parameter weight, changing policy priority, adding additional policy parameters, and changing policy evaluation point (i.e. PreFilter, Filter, Score) without deploying a second scheduler. On AKS, customers have mentioned that AKS Configurable Scheduler Profiles allows them to increase resiliency without operational overhead of YAML wrangling or reduce cluster costs without adopting a secondary scheduler. Additionally, our AI and HPC customers have batch workloads that have benefitted from improved bin-packing and increased GPU utilization. +**[Configurable Scheduler Profiles on AKS][concepts-scheduler-configuration] reduces operational complexity by providing extensibility and control.** Now, customers can define their own scheduling logic by enabling specific policies, changing policy priority, altering parameter weight, and changing policy evaluation point (i.e. PreFilter, Filter, Score) without deploying a second scheduler. On AKS, Configurable Scheduler Profiles allows customers to increase resiliency without operational overhead of YAML wrangling or reduce cluster costs without adopting a secondary scheduler. In this blog you will learn how to configure AKS Configurable Scheduler Profiles for three increased node utilization: 1. [How to increase CPU utilization](#increase-gpu-utilization-by-bin-packing-gpu-backed-nodes) 2. [How to increase GPU utilization](#increase-gpu-utilization-by-bin-packing-gpu-backed-nodes) -Lastly, you will find [best practices](#best-practices-and-configuration-considerations) to help guide how you consider both individual plugin configurations, your custom scheduler configuration, and your Deployment design holistically. - ## AKS Configurable Scheduler Profiles @@ -34,25 +32,23 @@ AKS Configurable Scheduler Profiles uses a Custom Resource Definition (CRD) that ![Configurable Scheduler Profiles Diagram](./config-scheduler-profiles.png) -A scheduler profile is a set of one or more in-tree scheduling plugins and configurations that dictate how to schedule a pod. Previously, the scheduler configuration wasn't accessible to users. Starting from Kubernetes version 1.33, you can now configure and set a scheduler profile for the AKS scheduler on your cluster. AKS supports 18 in-tree Kubernetes [scheduling plugins][supported-in-tree-scheduling-plugins]. The plugins can be generally grouped into three categories: +A profile is a set of one or more in-tree scheduling plugins and configurations that dictate how to schedule a pod. Previously, the scheduler configuration wasn't accessible to users. Starting from Kubernetes version 1.33, you can now configure and set a scheduler profile for your AKS cluster. AKS supports 18 in-tree Kubernetes [scheduling plugins][supported-in-tree-scheduling-plugins], which can be generally grouped into three categories: 1. Scheduling constraints and order-based plugins 2. Node selection constraints scheduling plugins 3. Resource and topology optimization scheduling plugins -Below you will find example configurations for common workload objectives. - :::note Treat these examples as starting points. Adjust resource weights, utilization thresholds, and plugin parameters to match your VM SKUs, workload patterns, and cluster topology. ::: -### Increase GPU Utilization by Bin Packing GPU-backed Nodes +### Increase GPU Utilization of AKS Clusters The AKS default scheduler scores nodes for workload placement based on a _LeastAllocated_ strategy, to spread across the nodes in a cluster. However, this behavior can result in inefficient resource utilization, as nodes with higher allocation are not favored. You can use `NodeResourcesFit` to control how pods are assigned to nodes based on available resources (CPU, GPU, memory, etc.), including favoring nodes with high resource utilization, within the set configuration. -For example, scheduling pending jobs on nodes with a higher relative GPU utilization, users can reduce costs and increase GPU utilization while maintaining performance. +Additionally, customers running GPU-dependent applications like batch jobs will benefit from improved bin-packing and increased GPU utilization. For example, scheduling jobs on nodes with a higher relative GPU utilization, can reduce costs while maintaining performance. -**This scheduler configuration maximizes GPU efficiency for larger batch jobs by consolidating smaller jobs onto fewer nodes and lowering the operational cost of underutilized resources without sacrificing performance.** +**This scheduler configuration maximizes provisioined GPU resource by consolidating smaller jobs onto fewer nodes, lowering the operational cost of underutilized resources without sacrificing performance.** ```yaml apiVersion: aks.azure.com/v1alpha1 @@ -80,19 +76,14 @@ spec: - name: cpu weight: 1 - name: nvidia.com/gpu - weight: 3 - - name: NodeResourcesBalancedAllocation - args: - resources: - - name: nvidia.com/gpu - weight: 1 + weight: 5 ``` -### ResourceToCapacity +### Increase CPU Utilizaiton of AKS Cluster - -**This scheduler configuration ensures workloads needing large memory footprints are placed on nodes that provide sufficient RAM and maintain proximity to their volumes, enabling fast, zone‑aligned PVC binding for optimal data locality.** +Scoring Strategy - ResourceToCapacity +**This scheduler configuration ensures nodes are not oversaturated.** ```yaml apiVersion: aks.azure.com/v1alpha1 @@ -117,11 +108,9 @@ spec: scoringStrategy: type: RequestedToCapacityRatio resources: - - name: memory - weight: 5 - name: cpu - weight: 1 - - name: ephemeral-storage + weight: 8 + - name: mempory weight: 1 requestedToCapacityRatio: shape: @@ -139,12 +128,12 @@ spec: score: 0 ``` -## Next Steps: Optimize and test with AKS Configurable Scheduler Profiles +## Next Steps: Optimize resources and test Configurable Scheduler Profiles on AKS -With AKS Configurable Scheduler Profiles, teams gain fine-grained control over pod placement strategies like bin-packing, topology distribution, and resource-based scoring that directly address the challenges of resilience and resource utilization for web-distributed workloads and AI workloads. By leveraging these advanced scheduling plugins, AKS users can ensure their workloads make full use of available GPU capacity, reduce idle time, and avoid costly overprovisioning. This not only improves ROI but also accelerates innovation by allowing more jobs to run concurrently and reliably. +With Configurable Scheduler Profiles, teams gain fine-grained control over pod placement strategies like bin-packing, topology distribution, and resource-based scoring that directly addresses challenges related to applicaiton resilience and resource utilization for their AKS clusters. By leveraging these scheduling plugins, AKS users can ensure their workloads make full use of available GPU capacity, reduce idle costs, and avoid costly overprovisioning. This not only improves ROI but also accelerates development by allowing more jobs to run concurrently and reliably. - For best practices using the kube-scheduler visit [kube-scheduler best practices][best-practices-advanced-scheduler] -- Configure your workload specific scheduler using the [AKS Configurable Scheduler][concepts-scheduler-configuration] +- Increase node utilziaton using [Configurable Scheduler Profiles][node-bin-packing-configurations] - If additional capabilities or ML frameworks are needed to schedule and queue batch workloads, you can [install and configure Kueue on AKS][kueue-overview] to ensure efficient, policy-driven scheduling in AKS clusters. [concepts-scheduler-configuration]: https://learn.microsoft.com/azure/aks/concepts-scheduler-configuration @@ -153,3 +142,4 @@ With AKS Configurable Scheduler Profiles, teams gain fine-grained control over p [scheduling-framework/#interfaces]: https://kubernetes.io/docs/concepts/scheduling-eviction/scheduling-framework/#interfaces [memory-optimized-vm]: https://learn.microsoft.com/azure/virtual-machines/sizes/overview?tabs=breakdownseries%2Cgeneralsizelist%2Ccomputesizelist%2Cmemorysizelist%2Cstoragesizelist%2Cgpusizelist%2Cfpgasizelist%2Chpcsizelist#memory-optimized [supported-in-tree-scheduling-plugins]: https://learn.microsoft.com/azure/aks/concepts-scheduler-configuration#supported-in-tree-scheduling-plugins +[node-bin-packing-configurations]: https://learn.microsoft.com/azure/aks/configure-node-binpack-scheduler?tabs=new-cluster From 70338254e35ca8517bb98e0b95e6de37edce2b56 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Thu, 19 Mar 2026 16:49:49 -0700 Subject: [PATCH 057/164] Revise AKS Configurable Scheduler Profiles blog content Updated blog post to clarify examples of scheduler profiles and their benefits for AKS Cluster utilization. --- .../index.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index e34d94b16..565e376aa 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -15,14 +15,14 @@ Thoughtful scheduling strategies can resolve pervasive challenges like resource Out of the available nodes, the scheduler then filters out nodes that don't meet the requirements to identify the node that is most optimal for the pod(s). Today, the AKS default scheduler lacks the flexibility for users to change which criteria should be prioritized, and ignored, in the scheduling cycle on a per workload basis. This means the default scheduling criteria, and their fixed priority order, are not suitable for workloads that demand co-locating pods with their persistent volumes for increased data locality, optimizing GPU utilization for machine learning, or enforcing strict zone-level distribution for microservices. This rigidity often forces users to either accept suboptimal placement or manage a separate custom scheduler, both of which increase operational complexity. -![Kube Scheduler Cycles Diagram](./kube-scheduler-scheduling-cycles-diagram.png) +![kube-scheduler Phases Diagram](./kube-scheduler-scheduling-cycles-diagram.png) **[Configurable Scheduler Profiles on AKS][concepts-scheduler-configuration] reduces operational complexity by providing extensibility and control.** Now, customers can define their own scheduling logic by enabling specific policies, changing policy priority, altering parameter weight, and changing policy evaluation point (i.e. PreFilter, Filter, Score) without deploying a second scheduler. On AKS, Configurable Scheduler Profiles allows customers to increase resiliency without operational overhead of YAML wrangling or reduce cluster costs without adopting a secondary scheduler. -In this blog you will learn how to configure AKS Configurable Scheduler Profiles for three increased node utilization: +This blog you will provide examples of three different scheduler profiles, and detail the benefits of each, to increase the node utilization for AKS Clusters: -1. [How to increase CPU utilization](#increase-gpu-utilization-by-bin-packing-gpu-backed-nodes) -2. [How to increase GPU utilization](#increase-gpu-utilization-by-bin-packing-gpu-backed-nodes) +1. [How to increase AKS Cluster GPU utilization](#increase-aks-cluster-gpu-utilization) +2. [How to increase AKS Cluster CPU utilization](#increase-aks-cluster-cpu-utilization) @@ -42,7 +42,7 @@ A profile is a set of one or more in-tree scheduling plugins and configurations Treat these examples as starting points. Adjust resource weights, utilization thresholds, and plugin parameters to match your VM SKUs, workload patterns, and cluster topology. ::: -### Increase GPU Utilization of AKS Clusters +### Increase AKS Cluster GPU Utilization The AKS default scheduler scores nodes for workload placement based on a _LeastAllocated_ strategy, to spread across the nodes in a cluster. However, this behavior can result in inefficient resource utilization, as nodes with higher allocation are not favored. You can use `NodeResourcesFit` to control how pods are assigned to nodes based on available resources (CPU, GPU, memory, etc.), including favoring nodes with high resource utilization, within the set configuration. @@ -80,7 +80,7 @@ spec: ``` -### Increase CPU Utilizaiton of AKS Cluster +### Increase AKS Cluster CPU Utilization Scoring Strategy - ResourceToCapacity **This scheduler configuration ensures nodes are not oversaturated.** @@ -128,7 +128,7 @@ spec: score: 0 ``` -## Next Steps: Optimize resources and test Configurable Scheduler Profiles on AKS +## Next Steps: Optimize Azure resources and test Configurable Scheduler Profiles on AKS With Configurable Scheduler Profiles, teams gain fine-grained control over pod placement strategies like bin-packing, topology distribution, and resource-based scoring that directly addresses challenges related to applicaiton resilience and resource utilization for their AKS clusters. By leveraging these scheduling plugins, AKS users can ensure their workloads make full use of available GPU capacity, reduce idle costs, and avoid costly overprovisioning. This not only improves ROI but also accelerates development by allowing more jobs to run concurrently and reliably. From 506616ff574b32985f08a76fd05a3a15228d83f7 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Thu, 19 Mar 2026 16:51:20 -0700 Subject: [PATCH 058/164] Reorder cost tag in tags.yml --- website/blog/tags.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/website/blog/tags.yml b/website/blog/tags.yml index 5e260c9b7..5409eb1b0 100644 --- a/website/blog/tags.yml +++ b/website/blog/tags.yml @@ -82,16 +82,16 @@ certbot: permalink: /certbot description: Using Certbot and Let’s Encrypt to obtain and manage TLS certificates for AKS ingress. -cost: - label: Cost - permalink: /cost - description: Recommended patterns, anti-patterns, and guidance for managing and optimizing cost of AKS clusters. - cilium: label: Cilium permalink: /cilium description: Cilium CNI, eBPF networking, observability, and security features on AKS. +cost: + label: Cost + permalink: /cost + description: Recommended patterns, anti-patterns, and guidance for managing and optimizing cost of AKS clusters. + databases: label: Databases permalink: /databases From 88b49aa08c388520638cd016fa22b868222abf65 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Thu, 19 Mar 2026 16:54:49 -0700 Subject: [PATCH 059/164] Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../index.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index 565e376aa..ce172b747 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -48,7 +48,7 @@ The AKS default scheduler scores nodes for workload placement based on a _LeastA Additionally, customers running GPU-dependent applications like batch jobs will benefit from improved bin-packing and increased GPU utilization. For example, scheduling jobs on nodes with a higher relative GPU utilization, can reduce costs while maintaining performance. -**This scheduler configuration maximizes provisioined GPU resource by consolidating smaller jobs onto fewer nodes, lowering the operational cost of underutilized resources without sacrificing performance.** +**This scheduler configuration maximizes provisioned GPU resource by consolidating smaller jobs onto fewer nodes, lowering the operational cost of underutilized resources without sacrificing performance.** ```yaml apiVersion: aks.azure.com/v1alpha1 @@ -110,7 +110,7 @@ spec: resources: - name: cpu weight: 8 - - name: mempory + - name: memory weight: 1 requestedToCapacityRatio: shape: @@ -130,10 +130,10 @@ spec: ## Next Steps: Optimize Azure resources and test Configurable Scheduler Profiles on AKS -With Configurable Scheduler Profiles, teams gain fine-grained control over pod placement strategies like bin-packing, topology distribution, and resource-based scoring that directly addresses challenges related to applicaiton resilience and resource utilization for their AKS clusters. By leveraging these scheduling plugins, AKS users can ensure their workloads make full use of available GPU capacity, reduce idle costs, and avoid costly overprovisioning. This not only improves ROI but also accelerates development by allowing more jobs to run concurrently and reliably. +With Configurable Scheduler Profiles, teams gain fine-grained control over pod placement strategies like bin-packing, topology distribution, and resource-based scoring that directly addresses challenges related to application resilience and resource utilization for their AKS clusters. By leveraging these scheduling plugins, AKS users can ensure their workloads make full use of available GPU capacity, reduce idle costs, and avoid costly overprovisioning. This not only improves ROI but also accelerates development by allowing more jobs to run concurrently and reliably. - For best practices using the kube-scheduler visit [kube-scheduler best practices][best-practices-advanced-scheduler] -- Increase node utilziaton using [Configurable Scheduler Profiles][node-bin-packing-configurations] +- Increase node utilization using [Configurable Scheduler Profiles][node-bin-packing-configurations] - If additional capabilities or ML frameworks are needed to schedule and queue batch workloads, you can [install and configure Kueue on AKS][kueue-overview] to ensure efficient, policy-driven scheduling in AKS clusters. [concepts-scheduler-configuration]: https://learn.microsoft.com/azure/aks/concepts-scheduler-configuration From 9fb4796d27f5ab1795f35f3fb50bc1a5065c120f Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Fri, 20 Mar 2026 11:28:24 -0700 Subject: [PATCH 060/164] Enhance AKS Configurable Scheduler Profiles documentation Added information about Configurable Scheduler Profiles and their benefits for resource utilization in AKS. Clarified how the kube-scheduler operates and its impact on CPU and GPU resource management. --- .../index.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index ce172b747..bc1e53921 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -6,6 +6,12 @@ authors: [colin-mixon] tags: [ai, performance, scheduler, best-practices, cost] --- +Data shows most Kuberentes clusters only use an average of 10% cpu utilization. With the introduction of Configurable Scheduler Profiles on AKS, customers now have the opportunity to increase their node utilization across CPU and GPU resources and optimize their costs. + + +## How does the kube-scheduler Place Pods? +The AKS default scheduler scores nodes for workload placement based on a _LeastAllocated_ strategy, to spread across the nodes in a cluster. However, this behavior can result in inefficient resource utilization, as nodes with higher allocation are not favored. You can use `NodeResourcesFit` to control how pods are assigned to nodes based on available resources (CPU, GPU, memory, etc.), including favoring nodes with high resource utilization, within the set configuration. + Thoughtful scheduling strategies can resolve pervasive challenges like resource utilization. The kube-scheduler is one of the core components of the Kubernetes Control Plane, alongside kube-apiserver, etcd, and the controller manager. The default scheduler was primarily designed for general-purpose workloads and out-of-box pod scheduling that can be restrictive if you want to bin pack nodes since the hard and soft constraints for pod scheduling do not align with scheudling pods with nodes of higher utilization. The scheduler selects the optimal node for queued pod(s) based on several constraints, including (but not limited to): 1. Resource requirements (CPU, memory) @@ -24,11 +30,9 @@ This blog you will provide examples of three different scheduler profiles, and d 1. [How to increase AKS Cluster GPU utilization](#increase-aks-cluster-gpu-utilization) 2. [How to increase AKS Cluster CPU utilization](#increase-aks-cluster-cpu-utilization) - - ## AKS Configurable Scheduler Profiles -AKS Configurable Scheduler Profiles uses a Custom Resource Definition (CRD) that lets users define custom scheduler profiles. A dedicated controller continuously reconciles these user-defined configurations with the underlying kube-scheduler deployment, validating changes and applying them transparently. If a configuration causes the scheduler to become unhealthy, the controller automatically rolls back to the last known good state to ensure cluster stability. +Configurable Scheduler Profiles uses a Custom Resource Definition (CRD) that lets users define custom scheduler profiles. A dedicated controller continuously reconciles these user-defined configurations with the underlying kube-scheduler deployment, validating changes and applying them transparently. If a configuration causes the scheduler to become unhealthy, the controller automatically rolls back to the last known good state to ensure cluster stability. ![Configurable Scheduler Profiles Diagram](./config-scheduler-profiles.png) @@ -44,8 +48,6 @@ Treat these examples as starting points. Adjust resource weights, utilization th ### Increase AKS Cluster GPU Utilization -The AKS default scheduler scores nodes for workload placement based on a _LeastAllocated_ strategy, to spread across the nodes in a cluster. However, this behavior can result in inefficient resource utilization, as nodes with higher allocation are not favored. You can use `NodeResourcesFit` to control how pods are assigned to nodes based on available resources (CPU, GPU, memory, etc.), including favoring nodes with high resource utilization, within the set configuration. - Additionally, customers running GPU-dependent applications like batch jobs will benefit from improved bin-packing and increased GPU utilization. For example, scheduling jobs on nodes with a higher relative GPU utilization, can reduce costs while maintaining performance. **This scheduler configuration maximizes provisioned GPU resource by consolidating smaller jobs onto fewer nodes, lowering the operational cost of underutilized resources without sacrificing performance.** From 76c3a06b4cc510b0316bb51b7a45c9f7136e7ef1 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Fri, 20 Mar 2026 11:29:07 -0700 Subject: [PATCH 061/164] Add files via upload --- .../config-scheduler-profiles.png | Bin 56613 -> 89802 bytes ...configurable-scheduler-binpack-profile.png | Bin 0 -> 35966 bytes ...be-scheduler-scheduling-phases-diagram.png | Bin 0 -> 87145 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 website/blog/2025-12-16-aks-config-scheduler-profiles-preview/configurable-scheduler-binpack-profile.png create mode 100644 website/blog/2025-12-16-aks-config-scheduler-profiles-preview/kube-scheduler-scheduling-phases-diagram.png diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/config-scheduler-profiles.png b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/config-scheduler-profiles.png index fd7fd74e2418465c4ed96ef9e9945fb45cc14121..9363dbd15404d3477c0da750c7ce76833a5b0cc6 100644 GIT binary patch literal 89802 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 f(f_+WP6IOV- literal 56613 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 diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/configurable-scheduler-binpack-profile.png b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/configurable-scheduler-binpack-profile.png new file mode 100644 index 0000000000000000000000000000000000000000..f538c34334a93e5cc514035e7db9c793c0f2c0ec GIT binary patch literal 35966 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 literal 0 HcmV?d00001 diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/kube-scheduler-scheduling-phases-diagram.png b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/kube-scheduler-scheduling-phases-diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..c4630a028594bd22d088945e1ef634e41af624bb GIT binary patch literal 87145 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 Date: Fri, 20 Mar 2026 11:29:38 -0700 Subject: [PATCH 062/164] Delete website/blog/2025-12-16-aks-config-scheduler-profiles-preview/kube-scheduler-scheduling-cycles-diagram.png --- ...kube-scheduler-scheduling-cycles-diagram.png | Bin 46603 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 website/blog/2025-12-16-aks-config-scheduler-profiles-preview/kube-scheduler-scheduling-cycles-diagram.png diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/kube-scheduler-scheduling-cycles-diagram.png b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/kube-scheduler-scheduling-cycles-diagram.png deleted file mode 100644 index 211eab37b6cd67c64902bdbe66f417da6bf877f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46603 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 Date: Fri, 20 Mar 2026 11:31:28 -0700 Subject: [PATCH 063/164] Enhance AKS Configurable Scheduler Profiles blog post Updated the blog post on Configurable Scheduler Profiles to include an image and enhance explanations about scheduling strategies and their benefits for AKS clusters. --- .../index.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index bc1e53921..8cbc8738f 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -9,6 +9,9 @@ tags: [ai, performance, scheduler, best-practices, cost] Data shows most Kuberentes clusters only use an average of 10% cpu utilization. With the introduction of Configurable Scheduler Profiles on AKS, customers now have the opportunity to increase their node utilization across CPU and GPU resources and optimize their costs. + +![Increase Node Utilization with Node Bin Pack ](./configurable-scheduler-binpack-profile.png) + ## How does the kube-scheduler Place Pods? The AKS default scheduler scores nodes for workload placement based on a _LeastAllocated_ strategy, to spread across the nodes in a cluster. However, this behavior can result in inefficient resource utilization, as nodes with higher allocation are not favored. You can use `NodeResourcesFit` to control how pods are assigned to nodes based on available resources (CPU, GPU, memory, etc.), including favoring nodes with high resource utilization, within the set configuration. @@ -21,7 +24,7 @@ Thoughtful scheduling strategies can resolve pervasive challenges like resource Out of the available nodes, the scheduler then filters out nodes that don't meet the requirements to identify the node that is most optimal for the pod(s). Today, the AKS default scheduler lacks the flexibility for users to change which criteria should be prioritized, and ignored, in the scheduling cycle on a per workload basis. This means the default scheduling criteria, and their fixed priority order, are not suitable for workloads that demand co-locating pods with their persistent volumes for increased data locality, optimizing GPU utilization for machine learning, or enforcing strict zone-level distribution for microservices. This rigidity often forces users to either accept suboptimal placement or manage a separate custom scheduler, both of which increase operational complexity. -![kube-scheduler Phases Diagram](./kube-scheduler-scheduling-cycles-diagram.png) +![kube-scheduler Phases Diagram](./kube-scheduler-scheduling-phases-diagram.png) **[Configurable Scheduler Profiles on AKS][concepts-scheduler-configuration] reduces operational complexity by providing extensibility and control.** Now, customers can define their own scheduling logic by enabling specific policies, changing policy priority, altering parameter weight, and changing policy evaluation point (i.e. PreFilter, Filter, Score) without deploying a second scheduler. On AKS, Configurable Scheduler Profiles allows customers to increase resiliency without operational overhead of YAML wrangling or reduce cluster costs without adopting a secondary scheduler. From 38e7f635f3d6516cb744e9fb2b184feb2a3f0597 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Fri, 20 Mar 2026 11:38:26 -0700 Subject: [PATCH 064/164] Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../index.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index 8cbc8738f..563ef24c5 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -6,7 +6,7 @@ authors: [colin-mixon] tags: [ai, performance, scheduler, best-practices, cost] --- -Data shows most Kuberentes clusters only use an average of 10% cpu utilization. With the introduction of Configurable Scheduler Profiles on AKS, customers now have the opportunity to increase their node utilization across CPU and GPU resources and optimize their costs. +Data shows most Kubernetes clusters only use an average of 10% cpu utilization. With the introduction of Configurable Scheduler Profiles on AKS, customers now have the opportunity to increase their node utilization across CPU and GPU resources and optimize their costs. @@ -15,7 +15,7 @@ Data shows most Kuberentes clusters only use an average of 10% cpu utilization. ## How does the kube-scheduler Place Pods? The AKS default scheduler scores nodes for workload placement based on a _LeastAllocated_ strategy, to spread across the nodes in a cluster. However, this behavior can result in inefficient resource utilization, as nodes with higher allocation are not favored. You can use `NodeResourcesFit` to control how pods are assigned to nodes based on available resources (CPU, GPU, memory, etc.), including favoring nodes with high resource utilization, within the set configuration. -Thoughtful scheduling strategies can resolve pervasive challenges like resource utilization. The kube-scheduler is one of the core components of the Kubernetes Control Plane, alongside kube-apiserver, etcd, and the controller manager. The default scheduler was primarily designed for general-purpose workloads and out-of-box pod scheduling that can be restrictive if you want to bin pack nodes since the hard and soft constraints for pod scheduling do not align with scheudling pods with nodes of higher utilization. The scheduler selects the optimal node for queued pod(s) based on several constraints, including (but not limited to): +Thoughtful scheduling strategies can resolve pervasive challenges like resource utilization. The kube-scheduler is one of the core components of the Kubernetes Control Plane, alongside kube-apiserver, etcd, and the controller manager. The default scheduler was primarily designed for general-purpose workloads and out-of-box pod scheduling that can be restrictive if you want to bin pack nodes since the hard and soft constraints for pod scheduling do not align with scheduling pods with nodes of higher utilization. The scheduler selects the optimal node for queued pod(s) based on several constraints, including (but not limited to): 1. Resource requirements (CPU, memory) 2. Node affinity/anti-affinity @@ -28,10 +28,10 @@ Out of the available nodes, the scheduler then filters out nodes that don't meet **[Configurable Scheduler Profiles on AKS][concepts-scheduler-configuration] reduces operational complexity by providing extensibility and control.** Now, customers can define their own scheduling logic by enabling specific policies, changing policy priority, altering parameter weight, and changing policy evaluation point (i.e. PreFilter, Filter, Score) without deploying a second scheduler. On AKS, Configurable Scheduler Profiles allows customers to increase resiliency without operational overhead of YAML wrangling or reduce cluster costs without adopting a secondary scheduler. -This blog you will provide examples of three different scheduler profiles, and detail the benefits of each, to increase the node utilization for AKS Clusters: +This blog provides examples of three different scheduler profiles and details the benefits of each to increase node utilization for AKS clusters: -1. [How to increase AKS Cluster GPU utilization](#increase-aks-cluster-gpu-utilization) -2. [How to increase AKS Cluster CPU utilization](#increase-aks-cluster-cpu-utilization) +1. [How to increase AKS cluster GPU utilization](#increase-aks-cluster-gpu-utilization) +2. [How to increase AKS cluster CPU utilization](#increase-aks-cluster-cpu-utilization) ## AKS Configurable Scheduler Profiles From 33e25442b562fc3dc3498714842b7e341da94e6f Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Fri, 20 Mar 2026 11:39:52 -0700 Subject: [PATCH 065/164] Update section titles and improve clarity --- .../2025-12-16-aks-config-scheduler-profiles-preview/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index 563ef24c5..b114f6e64 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -12,7 +12,7 @@ Data shows most Kubernetes clusters only use an average of 10% cpu utilization. ![Increase Node Utilization with Node Bin Pack ](./configurable-scheduler-binpack-profile.png) -## How does the kube-scheduler Place Pods? +## How does the default Kubernetes scheduler place pods? The AKS default scheduler scores nodes for workload placement based on a _LeastAllocated_ strategy, to spread across the nodes in a cluster. However, this behavior can result in inefficient resource utilization, as nodes with higher allocation are not favored. You can use `NodeResourcesFit` to control how pods are assigned to nodes based on available resources (CPU, GPU, memory, etc.), including favoring nodes with high resource utilization, within the set configuration. Thoughtful scheduling strategies can resolve pervasive challenges like resource utilization. The kube-scheduler is one of the core components of the Kubernetes Control Plane, alongside kube-apiserver, etcd, and the controller manager. The default scheduler was primarily designed for general-purpose workloads and out-of-box pod scheduling that can be restrictive if you want to bin pack nodes since the hard and soft constraints for pod scheduling do not align with scheduling pods with nodes of higher utilization. The scheduler selects the optimal node for queued pod(s) based on several constraints, including (but not limited to): @@ -33,7 +33,7 @@ This blog provides examples of three different scheduler profiles and details th 1. [How to increase AKS cluster GPU utilization](#increase-aks-cluster-gpu-utilization) 2. [How to increase AKS cluster CPU utilization](#increase-aks-cluster-cpu-utilization) -## AKS Configurable Scheduler Profiles +## Configurable Scheduler Profiles on AKS Configurable Scheduler Profiles uses a Custom Resource Definition (CRD) that lets users define custom scheduler profiles. A dedicated controller continuously reconciles these user-defined configurations with the underlying kube-scheduler deployment, validating changes and applying them transparently. If a configuration causes the scheduler to become unhealthy, the controller automatically rolls back to the last known good state to ensure cluster stability. From 85c09306adc0e7869696be52eec077fc0bbf256c Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Fri, 20 Mar 2026 11:43:44 -0700 Subject: [PATCH 066/164] Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../index.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index b114f6e64..8146ff31e 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -83,10 +83,7 @@ spec: - name: nvidia.com/gpu weight: 5 ``` - - -### Increase AKS Cluster CPU Utilization - +### ResourceToCapacity Scoring Strategy - ResourceToCapacity **This scheduler configuration ensures nodes are not oversaturated.** From be0f84ade906d189be908ad5d4cc2d15d1616a82 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Fri, 20 Mar 2026 11:44:43 -0700 Subject: [PATCH 067/164] Update website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../2025-12-16-aks-config-scheduler-profiles-preview/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index 8146ff31e..cccb7c374 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -10,7 +10,7 @@ Data shows most Kubernetes clusters only use an average of 10% cpu utilization. -![Increase Node Utilization with Node Bin Pack ](./configurable-scheduler-binpack-profile.png) +![Diagram showing increased node utilization with the node bin packing scheduler profile](./configurable-scheduler-binpack-profile.png) ## How does the default Kubernetes scheduler place pods? The AKS default scheduler scores nodes for workload placement based on a _LeastAllocated_ strategy, to spread across the nodes in a cluster. However, this behavior can result in inefficient resource utilization, as nodes with higher allocation are not favored. You can use `NodeResourcesFit` to control how pods are assigned to nodes based on available resources (CPU, GPU, memory, etc.), including favoring nodes with high resource utilization, within the set configuration. From 02141bd6f8dd2171a52369ea3e53cacef6b1c176 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Fri, 20 Mar 2026 12:00:30 -0700 Subject: [PATCH 068/164] Revise title and description for AKS scheduler profiles Updated the title and description to clarify the benefits of configurable scheduler profiles for both GPU and CPU utilization in AKS. Added a new section on increasing AKS cluster CPU utilization. --- .../index.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index cccb7c374..fc89cbd3f 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -1,6 +1,6 @@ --- -title: "AKS configurable scheduler profiles (preview)" -description: "Optimize AKS scheduling with configurable scheduler profiles that improve GPU utilization and align pod placement to your critical workloads at scale." +title: "AKS Configurable Scheduler Profiles (preview)" +description: "Optimize GPU and CPU utilization and align pod placement to your critical workloads at scale with Configurable Scheduler Profiles on AKS." date: 2026-04-23 authors: [colin-mixon] tags: [ai, performance, scheduler, best-practices, cost] @@ -13,6 +13,7 @@ Data shows most Kubernetes clusters only use an average of 10% cpu utilization. ![Diagram showing increased node utilization with the node bin packing scheduler profile](./configurable-scheduler-binpack-profile.png) ## How does the default Kubernetes scheduler place pods? + The AKS default scheduler scores nodes for workload placement based on a _LeastAllocated_ strategy, to spread across the nodes in a cluster. However, this behavior can result in inefficient resource utilization, as nodes with higher allocation are not favored. You can use `NodeResourcesFit` to control how pods are assigned to nodes based on available resources (CPU, GPU, memory, etc.), including favoring nodes with high resource utilization, within the set configuration. Thoughtful scheduling strategies can resolve pervasive challenges like resource utilization. The kube-scheduler is one of the core components of the Kubernetes Control Plane, alongside kube-apiserver, etcd, and the controller manager. The default scheduler was primarily designed for general-purpose workloads and out-of-box pod scheduling that can be restrictive if you want to bin pack nodes since the hard and soft constraints for pod scheduling do not align with scheduling pods with nodes of higher utilization. The scheduler selects the optimal node for queued pod(s) based on several constraints, including (but not limited to): @@ -83,7 +84,9 @@ spec: - name: nvidia.com/gpu weight: 5 ``` -### ResourceToCapacity + +### Increase AKS Cluster CPU Utilization + Scoring Strategy - ResourceToCapacity **This scheduler configuration ensures nodes are not oversaturated.** @@ -142,6 +145,5 @@ With Configurable Scheduler Profiles, teams gain fine-grained control over pod p [kueue-overview]: https://learn.microsoft.com/azure/aks/kueue-overview [best-practices-advanced-scheduler]: https://learn.microsoft.com/azure/aks/operator-best-practices-advanced-scheduler [scheduling-framework/#interfaces]: https://kubernetes.io/docs/concepts/scheduling-eviction/scheduling-framework/#interfaces -[memory-optimized-vm]: https://learn.microsoft.com/azure/virtual-machines/sizes/overview?tabs=breakdownseries%2Cgeneralsizelist%2Ccomputesizelist%2Cmemorysizelist%2Cstoragesizelist%2Cgpusizelist%2Cfpgasizelist%2Chpcsizelist#memory-optimized [supported-in-tree-scheduling-plugins]: https://learn.microsoft.com/azure/aks/concepts-scheduler-configuration#supported-in-tree-scheduling-plugins [node-bin-packing-configurations]: https://learn.microsoft.com/azure/aks/configure-node-binpack-scheduler?tabs=new-cluster From 1f0c76da0da25502e614631d065275d3ccec9760 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Fri, 20 Mar 2026 12:08:25 -0700 Subject: [PATCH 069/164] Fix scoring strategy terminology in AKS blog post Updated the blog post to correct the scoring strategy terminology for AKS cluster CPU utilization. --- .../index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index fc89cbd3f..4beecacae 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -31,8 +31,8 @@ Out of the available nodes, the scheduler then filters out nodes that don't meet This blog provides examples of three different scheduler profiles and details the benefits of each to increase node utilization for AKS clusters: -1. [How to increase AKS cluster GPU utilization](#increase-aks-cluster-gpu-utilization) -2. [How to increase AKS cluster CPU utilization](#increase-aks-cluster-cpu-utilization) +1. [How to increase AKS cluster GPU utilization](#increase-aks-cluster-gpu-utilization) +2. [How to increase AKS cluster CPU utilization](#increase-aks-cluster-cpu-utilization) ## Configurable Scheduler Profiles on AKS @@ -87,7 +87,7 @@ spec: ### Increase AKS Cluster CPU Utilization -Scoring Strategy - ResourceToCapacity +Scoring Strategy - RequestedToCapacityRatio **This scheduler configuration ensures nodes are not oversaturated.** ```yaml From 6c6198b816feea58a7f9059eadb82833aba5041d Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Fri, 20 Mar 2026 12:18:53 -0700 Subject: [PATCH 070/164] Revise content for AKS Configurable Scheduler Profiles post Updated text for clarity and improved descriptions of features and benefits of Configurable Scheduler Profiles on AKS. --- .../index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index 4beecacae..e3c9de49a 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -23,11 +23,11 @@ Thoughtful scheduling strategies can resolve pervasive challenges like resource 3. Pod affinity/anti-affinity 4. Taints and tolerations -Out of the available nodes, the scheduler then filters out nodes that don't meet the requirements to identify the node that is most optimal for the pod(s). Today, the AKS default scheduler lacks the flexibility for users to change which criteria should be prioritized, and ignored, in the scheduling cycle on a per workload basis. This means the default scheduling criteria, and their fixed priority order, are not suitable for workloads that demand co-locating pods with their persistent volumes for increased data locality, optimizing GPU utilization for machine learning, or enforcing strict zone-level distribution for microservices. This rigidity often forces users to either accept suboptimal placement or manage a separate custom scheduler, both of which increase operational complexity. +Out of the available nodes, the scheduler then filters out nodes that don't meet the requirements to identify the node that is most optimal for the pod(s). Today, the default scheduler on AKS lacks the flexibility for users to change which criteria should be prioritized, and ignored, in the scheduling cycle on a per workload basis. This means the default scheduling criteria, and their fixed priority order, are not suitable for workloads that demand optimizing GPU utilization for batch jobs or enforcing strict zone-level distribution for microservices. This rigidity often forces users to either accept suboptimal placement or manage a separate custom scheduler, both of which increase operational complexity. -![kube-scheduler Phases Diagram](./kube-scheduler-scheduling-phases-diagram.png) +![Diagram of the kube-scheduler workflow showing pods entering the scheduling cycle and binding cycle to assign a pod on a node](./kube-scheduler-scheduling-phases-diagram.png) -**[Configurable Scheduler Profiles on AKS][concepts-scheduler-configuration] reduces operational complexity by providing extensibility and control.** Now, customers can define their own scheduling logic by enabling specific policies, changing policy priority, altering parameter weight, and changing policy evaluation point (i.e. PreFilter, Filter, Score) without deploying a second scheduler. On AKS, Configurable Scheduler Profiles allows customers to increase resiliency without operational overhead of YAML wrangling or reduce cluster costs without adopting a secondary scheduler. +**[Configurable Scheduler Profiles on AKS][concepts-scheduler-configuration] allows customers to benefit from the extensibility of the [scheduling framework][scheduling-framework/#interfaces] while reducing the operational overhead of adopting a second scheduler or defininng a customer scheduler.** Now, customers can define their own scheduling logic by enabling specific policies, changing policy priority, altering parameter weight, and changing policy evaluation point (i.e. PreFilter, Filter, Score). This blog provides examples of three different scheduler profiles and details the benefits of each to increase node utilization for AKS clusters: From b92fc5e4135770d86568e219d7e33ce19dc9291a Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Fri, 20 Mar 2026 12:24:56 -0700 Subject: [PATCH 071/164] Update website/blog/tags.yml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- website/blog/tags.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/blog/tags.yml b/website/blog/tags.yml index 5409eb1b0..0236b7469 100644 --- a/website/blog/tags.yml +++ b/website/blog/tags.yml @@ -90,7 +90,7 @@ cilium: cost: label: Cost permalink: /cost - description: Recommended patterns, anti-patterns, and guidance for managing and optimizing cost of AKS clusters. + description: Recommended patterns, anti-patterns, and guidance for managing and optimizing AKS cluster costs. databases: label: Databases From 69cccb92338ff585041f4a300ab00c5a8083fb5a Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Fri, 20 Mar 2026 12:27:47 -0700 Subject: [PATCH 072/164] Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../2025-12-16-aks-config-scheduler-profiles-preview/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index e3c9de49a..ca611589f 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -16,7 +16,7 @@ Data shows most Kubernetes clusters only use an average of 10% cpu utilization. The AKS default scheduler scores nodes for workload placement based on a _LeastAllocated_ strategy, to spread across the nodes in a cluster. However, this behavior can result in inefficient resource utilization, as nodes with higher allocation are not favored. You can use `NodeResourcesFit` to control how pods are assigned to nodes based on available resources (CPU, GPU, memory, etc.), including favoring nodes with high resource utilization, within the set configuration. -Thoughtful scheduling strategies can resolve pervasive challenges like resource utilization. The kube-scheduler is one of the core components of the Kubernetes Control Plane, alongside kube-apiserver, etcd, and the controller manager. The default scheduler was primarily designed for general-purpose workloads and out-of-box pod scheduling that can be restrictive if you want to bin pack nodes since the hard and soft constraints for pod scheduling do not align with scheduling pods with nodes of higher utilization. The scheduler selects the optimal node for queued pod(s) based on several constraints, including (but not limited to): +Thoughtful scheduling strategies can resolve pervasive challenges like resource utilization. The kube-scheduler is one of the core components of the Kubernetes control plane, alongside kube-apiserver, etcd, and the controller manager. The default scheduler was primarily designed for general-purpose workloads and out-of-the-box pod scheduling that can be restrictive if you want to bin pack nodes since the hard and soft constraints for pod scheduling do not align with scheduling pods with nodes of higher utilization. The scheduler selects the optimal node for queued pod(s) based on several constraints, including (but not limited to): 1. Resource requirements (CPU, memory) 2. Node affinity/anti-affinity @@ -38,7 +38,7 @@ This blog provides examples of three different scheduler profiles and details th Configurable Scheduler Profiles uses a Custom Resource Definition (CRD) that lets users define custom scheduler profiles. A dedicated controller continuously reconciles these user-defined configurations with the underlying kube-scheduler deployment, validating changes and applying them transparently. If a configuration causes the scheduler to become unhealthy, the controller automatically rolls back to the last known good state to ensure cluster stability. -![Configurable Scheduler Profiles Diagram](./config-scheduler-profiles.png) +![Architecture diagram showing how Configurable Scheduler Profiles use a CRD and controller to reconcile user-defined profiles with the kube-scheduler deployment](./config-scheduler-profiles.png) A profile is a set of one or more in-tree scheduling plugins and configurations that dictate how to schedule a pod. Previously, the scheduler configuration wasn't accessible to users. Starting from Kubernetes version 1.33, you can now configure and set a scheduler profile for your AKS cluster. AKS supports 18 in-tree Kubernetes [scheduling plugins][supported-in-tree-scheduling-plugins], which can be generally grouped into three categories: From 285aa5c89b96a7221a151dba6207739e7144b906 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Fri, 20 Mar 2026 12:30:18 -0700 Subject: [PATCH 073/164] Add files via upload --- .../hero-image.png | Bin 0 -> 35966 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 website/blog/2025-12-16-aks-config-scheduler-profiles-preview/hero-image.png diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/hero-image.png b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/hero-image.png new file mode 100644 index 0000000000000000000000000000000000000000..f538c34334a93e5cc514035e7db9c793c0f2c0ec GIT binary patch literal 35966 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 literal 0 HcmV?d00001 From 0c4f2d77906038c641a574d3f676ca1f19791e3f Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Fri, 20 Mar 2026 12:30:41 -0700 Subject: [PATCH 074/164] Delete website/blog/2025-12-16-aks-config-scheduler-profiles-preview/configurable-scheduler-binpack-profile.png --- .../configurable-scheduler-binpack-profile.png | Bin 35966 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 website/blog/2025-12-16-aks-config-scheduler-profiles-preview/configurable-scheduler-binpack-profile.png diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/configurable-scheduler-binpack-profile.png b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/configurable-scheduler-binpack-profile.png deleted file mode 100644 index f538c34334a93e5cc514035e7db9c793c0f2c0ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35966 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 From bb45216f24085314f1ffc3e4b9eb3d1817242e19 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Fri, 20 Mar 2026 12:31:01 -0700 Subject: [PATCH 075/164] Update index.md --- .../2025-12-16-aks-config-scheduler-profiles-preview/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index ca611589f..fa0858710 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -10,7 +10,7 @@ Data shows most Kubernetes clusters only use an average of 10% cpu utilization. -![Diagram showing increased node utilization with the node bin packing scheduler profile](./configurable-scheduler-binpack-profile.png) +![Diagram showing increased node utilization with the node bin packing scheduler profile](./hero-image.png) ## How does the default Kubernetes scheduler place pods? From 6279ea9f5f9a12e4fa8d413c8543adcb8da62ee8 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Fri, 20 Mar 2026 14:18:25 -0700 Subject: [PATCH 076/164] Delete website/blog/2025-12-16-aks-config-scheduler-profiles-preview/hero-image.png --- .../hero-image.png | Bin 35966 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 website/blog/2025-12-16-aks-config-scheduler-profiles-preview/hero-image.png diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/hero-image.png b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/hero-image.png deleted file mode 100644 index f538c34334a93e5cc514035e7db9c793c0f2c0ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35966 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 From 7335a3578bd8c9eaf71316a7f7471959770dfe5d Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Fri, 20 Mar 2026 14:18:39 -0700 Subject: [PATCH 077/164] Add files via upload --- .../hero-image.png | Bin 0 -> 54000 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 website/blog/2025-12-16-aks-config-scheduler-profiles-preview/hero-image.png diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/hero-image.png b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/hero-image.png new file mode 100644 index 0000000000000000000000000000000000000000..57788e20d156cd9349f43cc0bf45d84ec4f2b409 GIT binary patch literal 54000 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 Date: Fri, 20 Mar 2026 14:42:35 -0700 Subject: [PATCH 078/164] Revise blog on AKS Configurable Scheduler Profiles Updated the blog to reflect the change from three to two scheduler profiles and added an FAQ section addressing common questions about the configurable scheduler profiles. --- .../index.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index fa0858710..c1bd5a63d 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -29,10 +29,10 @@ Out of the available nodes, the scheduler then filters out nodes that don't meet **[Configurable Scheduler Profiles on AKS][concepts-scheduler-configuration] allows customers to benefit from the extensibility of the [scheduling framework][scheduling-framework/#interfaces] while reducing the operational overhead of adopting a second scheduler or defininng a customer scheduler.** Now, customers can define their own scheduling logic by enabling specific policies, changing policy priority, altering parameter weight, and changing policy evaluation point (i.e. PreFilter, Filter, Score). -This blog provides examples of three different scheduler profiles and details the benefits of each to increase node utilization for AKS clusters: +This blog provides examples of two different scheduler profiles and details the benefits of each to increase node utilization for AKS clusters: -1. [How to increase AKS cluster GPU utilization](#increase-aks-cluster-gpu-utilization) -2. [How to increase AKS cluster CPU utilization](#increase-aks-cluster-cpu-utilization) +1. [How to increase AKS cluster GPU and CPU utilization with MostAllocated](#increase-aks-cluster-gpu-utilization) +2. [How to increase AKS cluster CPU utilization with MostAllocated](#increase-aks-cluster-cpu-utilization) ## Configurable Scheduler Profiles on AKS @@ -132,6 +132,10 @@ spec: - utilization: 100 score: 0 ``` +### FAQ +1. How does this interact with the autoscalers: NAP, CAS, and VPA? +2. What if I don't use a resource in the scoringStrategy? Then that resource will not be considered in the filter or scoring cucles of the defined Configurable Scheduler Profile. +3. Which scoringStrategy does AKS recommend to increase node utilization? AKS recommends using the RequestedToCapacityRatio strategy because it provides a more granual scoring approach allowing users to define an ideal utilization curve for their respeciive nodes. ## Next Steps: Optimize Azure resources and test Configurable Scheduler Profiles on AKS From 43563ac0e82007fe3c003379162decef4fcc7956 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Fri, 20 Mar 2026 14:46:02 -0700 Subject: [PATCH 079/164] Enhance blog on AKS Configurable Scheduler Profiles Expanded the introduction to Configurable Scheduler Profiles on AKS, detailing its benefits and providing examples of two different scheduler profiles to increase node utilization. --- .../index.md | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index c1bd5a63d..756982966 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -6,7 +6,12 @@ authors: [colin-mixon] tags: [ai, performance, scheduler, best-practices, cost] --- -Data shows most Kubernetes clusters only use an average of 10% cpu utilization. With the introduction of Configurable Scheduler Profiles on AKS, customers now have the opportunity to increase their node utilization across CPU and GPU resources and optimize their costs. +Data shows most Kubernetes clusters only use an average of 10% cpu utilization. With the introduction of Configurable Scheduler Profiles on AKS, customers now have the opportunity to increase their node utilization across CPU and GPU resources and optimize their costs. **[Configurable Scheduler Profiles on AKS][concepts-scheduler-configuration] allows customers to benefit from the extensibility of the [scheduling framework][scheduling-framework/#interfaces] while reducing the operational overhead of adopting a second scheduler or defininng a customer scheduler.** Now, customers can define their own scheduling logic by enabling specific policies, changing policy priority, altering parameter weight, and changing policy evaluation point (i.e. PreFilter, Filter, Score). + +This blog provides examples of two different scheduler profiles and details the benefits of each to increase node utilization for AKS clusters: + +1. [How to increase AKS cluster GPU and CPU utilization with MostAllocated](#increase-aks-cluster-gpu-utilization) +2. [How to increase AKS cluster CPU utilization with MostAllocated](#increase-aks-cluster-cpu-utilization) @@ -27,13 +32,6 @@ Out of the available nodes, the scheduler then filters out nodes that don't meet ![Diagram of the kube-scheduler workflow showing pods entering the scheduling cycle and binding cycle to assign a pod on a node](./kube-scheduler-scheduling-phases-diagram.png) -**[Configurable Scheduler Profiles on AKS][concepts-scheduler-configuration] allows customers to benefit from the extensibility of the [scheduling framework][scheduling-framework/#interfaces] while reducing the operational overhead of adopting a second scheduler or defininng a customer scheduler.** Now, customers can define their own scheduling logic by enabling specific policies, changing policy priority, altering parameter weight, and changing policy evaluation point (i.e. PreFilter, Filter, Score). - -This blog provides examples of two different scheduler profiles and details the benefits of each to increase node utilization for AKS clusters: - -1. [How to increase AKS cluster GPU and CPU utilization with MostAllocated](#increase-aks-cluster-gpu-utilization) -2. [How to increase AKS cluster CPU utilization with MostAllocated](#increase-aks-cluster-cpu-utilization) - ## Configurable Scheduler Profiles on AKS Configurable Scheduler Profiles uses a Custom Resource Definition (CRD) that lets users define custom scheduler profiles. A dedicated controller continuously reconciles these user-defined configurations with the underlying kube-scheduler deployment, validating changes and applying them transparently. If a configuration causes the scheduler to become unhealthy, the controller automatically rolls back to the last known good state to ensure cluster stability. From 6fbee96c228ebb8b47827580d44de605b7dd03e4 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Fri, 20 Mar 2026 14:46:13 -0700 Subject: [PATCH 080/164] Refactor introduction for clarity and conciseness Removed redundant sentence and improved clarity in the introduction. --- .../2025-12-16-aks-config-scheduler-profiles-preview/index.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index 756982966..b5a6a8056 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -6,7 +6,9 @@ authors: [colin-mixon] tags: [ai, performance, scheduler, best-practices, cost] --- -Data shows most Kubernetes clusters only use an average of 10% cpu utilization. With the introduction of Configurable Scheduler Profiles on AKS, customers now have the opportunity to increase their node utilization across CPU and GPU resources and optimize their costs. **[Configurable Scheduler Profiles on AKS][concepts-scheduler-configuration] allows customers to benefit from the extensibility of the [scheduling framework][scheduling-framework/#interfaces] while reducing the operational overhead of adopting a second scheduler or defininng a customer scheduler.** Now, customers can define their own scheduling logic by enabling specific policies, changing policy priority, altering parameter weight, and changing policy evaluation point (i.e. PreFilter, Filter, Score). +Data shows most Kubernetes clusters only use an average of 10% cpu utilization. With the introduction of Configurable Scheduler Profiles on AKS, customers now have the opportunity to increase their node utilization across CPU and GPU resources and optimize their costs. + +**[Configurable Scheduler Profiles on AKS][concepts-scheduler-configuration] allows customers to benefit from the extensibility of the [scheduling framework][scheduling-framework/#interfaces] while reducing the operational overhead of adopting a second scheduler or defininng a customer scheduler.** Now, customers can define their own scheduling logic by enabling specific policies, changing policy priority, altering parameter weight, and changing policy evaluation point (i.e. PreFilter, Filter, Score). This blog provides examples of two different scheduler profiles and details the benefits of each to increase node utilization for AKS clusters: From fcd58c033ff74cb19a28a0b5a6482d7dcb871ae3 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Fri, 20 Mar 2026 14:46:57 -0700 Subject: [PATCH 081/164] Refine note on resource weights and scheduling plugins Removed introductory phrase from note about resource weights and parameters. --- .../2025-12-16-aks-config-scheduler-profiles-preview/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index b5a6a8056..e8348cd68 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -47,7 +47,7 @@ A profile is a set of one or more in-tree scheduling plugins and configurations 3. Resource and topology optimization scheduling plugins :::note -Treat these examples as starting points. Adjust resource weights, utilization thresholds, and plugin parameters to match your VM SKUs, workload patterns, and cluster topology. +Adjust resource weights, utilization thresholds, and plugin parameters to match your VM SKUs, workload patterns, and cluster topology. ::: ### Increase AKS Cluster GPU Utilization From 17e134811e89ee14f35a630a4ba58857a2b748d4 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Fri, 20 Mar 2026 15:00:14 -0700 Subject: [PATCH 082/164] Update website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index e8348cd68..1ba6cdc76 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -133,9 +133,9 @@ spec: score: 0 ``` ### FAQ -1. How does this interact with the autoscalers: NAP, CAS, and VPA? -2. What if I don't use a resource in the scoringStrategy? Then that resource will not be considered in the filter or scoring cucles of the defined Configurable Scheduler Profile. -3. Which scoringStrategy does AKS recommend to increase node utilization? AKS recommends using the RequestedToCapacityRatio strategy because it provides a more granual scoring approach allowing users to define an ideal utilization curve for their respeciive nodes. +1. How does this interact with autoscalers such as Node Auto Provisioning (NAP), Cluster Autoscaler (CAS), and Vertical Pod Autoscaler (VPA)? +2. What if I don't use a resource in the scoringStrategy? Then that resource will not be considered in the filter or scoring cycles of the defined Configurable Scheduler Profile. +3. Which scoringStrategy does AKS recommend to increase node utilization? AKS recommends using the RequestedToCapacityRatio strategy because it provides a more granular scoring approach allowing users to define an ideal utilization curve for their respective nodes. ## Next Steps: Optimize Azure resources and test Configurable Scheduler Profiles on AKS From 8409dc954b9e63facc82f19f785d052d2879efa7 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Fri, 20 Mar 2026 15:08:42 -0700 Subject: [PATCH 083/164] Enhance Configurable Scheduler Profiles explanation Updated the description of Configurable Scheduler Profiles to emphasize increased node utilization and clarified the functionality of the scheduling framework. Added information about the accessibility of scheduler configuration starting from Kubernetes version 1.33. --- .../index.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index 1ba6cdc76..c14b1935a 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -8,7 +8,7 @@ tags: [ai, performance, scheduler, best-practices, cost] Data shows most Kubernetes clusters only use an average of 10% cpu utilization. With the introduction of Configurable Scheduler Profiles on AKS, customers now have the opportunity to increase their node utilization across CPU and GPU resources and optimize their costs. -**[Configurable Scheduler Profiles on AKS][concepts-scheduler-configuration] allows customers to benefit from the extensibility of the [scheduling framework][scheduling-framework/#interfaces] while reducing the operational overhead of adopting a second scheduler or defininng a customer scheduler.** Now, customers can define their own scheduling logic by enabling specific policies, changing policy priority, altering parameter weight, and changing policy evaluation point (i.e. PreFilter, Filter, Score). +**[Configurable Scheduler Profiles on AKS][concepts-scheduler-configuration] allows customers to increase node utilization by defining their own scheduling logic by enabling specific policies, changing policy priority, altering parameter weight, and changing policy evaluation point (i.e. PreFilter, Filter, Score). This blog provides examples of two different scheduler profiles and details the benefits of each to increase node utilization for AKS clusters: @@ -30,17 +30,19 @@ Thoughtful scheduling strategies can resolve pervasive challenges like resource 3. Pod affinity/anti-affinity 4. Taints and tolerations -Out of the available nodes, the scheduler then filters out nodes that don't meet the requirements to identify the node that is most optimal for the pod(s). Today, the default scheduler on AKS lacks the flexibility for users to change which criteria should be prioritized, and ignored, in the scheduling cycle on a per workload basis. This means the default scheduling criteria, and their fixed priority order, are not suitable for workloads that demand optimizing GPU utilization for batch jobs or enforcing strict zone-level distribution for microservices. This rigidity often forces users to either accept suboptimal placement or manage a separate custom scheduler, both of which increase operational complexity. +Out of the available nodes, the scheduler then filters out nodes that don't meet the requirements to identify the node that is most optimal for the pod(s). Today, the default scheduler on AKS lacks the flexibility for users to change which criteria should be prioritized, and ignored, in the scheduling cycle on a per workload basis. This means the default scheduling criteria, and their fixed priority order, are not suitable for workloads that demand optimizing GPU utilization for batch jobs or enforcing strict zone-level distribution for microservices. This rigidity often forces users to either accept suboptimal placement or manage a separate custom scheduler, both of which increase operational complexity. ![Diagram of the kube-scheduler workflow showing pods entering the scheduling cycle and binding cycle to assign a pod on a node](./kube-scheduler-scheduling-phases-diagram.png) +Previously, the scheduler configuration wasn't accessible to users. Starting from Kubernetes version 1.33, you can now configure and set a scheduler profile for your AKS cluster using Configurable Scheduler Profiles. + ## Configurable Scheduler Profiles on AKS -Configurable Scheduler Profiles uses a Custom Resource Definition (CRD) that lets users define custom scheduler profiles. A dedicated controller continuously reconciles these user-defined configurations with the underlying kube-scheduler deployment, validating changes and applying them transparently. If a configuration causes the scheduler to become unhealthy, the controller automatically rolls back to the last known good state to ensure cluster stability. +customers to benefit from the extensibility of the [scheduling framework][scheduling-framework/#interfaces] while reducing the operational overhead of adopting a second scheduler or defininng a customer scheduler.** Configurable Scheduler Profiles uses a Custom Resource Definition (CRD) that lets users define custom scheduler profiles with their own scheduling logic. A dedicated controller continuously reconciles these user-defined configurations with the underlying kube-scheduler deployment, validating changes and applying them transparently. If a configuration causes the scheduler to become unhealthy, the controller automatically rolls back to the last known good state to ensure cluster stability. This means incorrect plugins or values will not be applied. ![Architecture diagram showing how Configurable Scheduler Profiles use a CRD and controller to reconcile user-defined profiles with the kube-scheduler deployment](./config-scheduler-profiles.png) -A profile is a set of one or more in-tree scheduling plugins and configurations that dictate how to schedule a pod. Previously, the scheduler configuration wasn't accessible to users. Starting from Kubernetes version 1.33, you can now configure and set a scheduler profile for your AKS cluster. AKS supports 18 in-tree Kubernetes [scheduling plugins][supported-in-tree-scheduling-plugins], which can be generally grouped into three categories: +A profile is a set of one or more in-tree scheduling plugins and configurations that dictate how to schedule a pod. AKS supports 18 in-tree Kubernetes [scheduling plugins][supported-in-tree-scheduling-plugins], which can be generally grouped into three categories: 1. Scheduling constraints and order-based plugins 2. Node selection constraints scheduling plugins From 673b0ebfd756456909b0955086785b215ad9fc77 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Fri, 20 Mar 2026 15:08:54 -0700 Subject: [PATCH 084/164] Fix formatting in AKS Configurable Scheduler Profiles blog --- .../2025-12-16-aks-config-scheduler-profiles-preview/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index c14b1935a..c8dbaa012 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -8,7 +8,7 @@ tags: [ai, performance, scheduler, best-practices, cost] Data shows most Kubernetes clusters only use an average of 10% cpu utilization. With the introduction of Configurable Scheduler Profiles on AKS, customers now have the opportunity to increase their node utilization across CPU and GPU resources and optimize their costs. -**[Configurable Scheduler Profiles on AKS][concepts-scheduler-configuration] allows customers to increase node utilization by defining their own scheduling logic by enabling specific policies, changing policy priority, altering parameter weight, and changing policy evaluation point (i.e. PreFilter, Filter, Score). +[Configurable Scheduler Profiles on AKS][concepts-scheduler-configuration] allows customers to increase node utilization by defining their own scheduling logic by enabling specific policies, changing policy priority, altering parameter weight, and changing policy evaluation point (i.e. PreFilter, Filter, Score). This blog provides examples of two different scheduler profiles and details the benefits of each to increase node utilization for AKS clusters: From f40a7acf331ad85d0fe638cd3fcfc7a739f2f2dd Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Fri, 20 Mar 2026 15:23:47 -0700 Subject: [PATCH 085/164] Improve clarity on AKS Configurable Scheduler Profiles Enhanced the explanation of Kubernetes scheduler operations and the benefits of Configurable Scheduler Profiles on AKS. Clarified the impact of scheduling strategies on resource utilization and operational complexity. --- .../index.md | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index c8dbaa012..60ac27a0d 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -6,7 +6,7 @@ authors: [colin-mixon] tags: [ai, performance, scheduler, best-practices, cost] --- -Data shows most Kubernetes clusters only use an average of 10% cpu utilization. With the introduction of Configurable Scheduler Profiles on AKS, customers now have the opportunity to increase their node utilization across CPU and GPU resources and optimize their costs. +Data shows most Kubernetes clusters only use an average of 10% cpu utilization. While there are many factors that impact node utilization, as a core componenet of the Kuberentes control plane, the kube-scheduler has a big influence on the utilizatoin of nodes. With the introduction of Configurable Scheduler Profiles on AKS, customers now have the opportunity to increase their node utilization across CPU and GPU resources and optimize their costs with access to fine-grain pod scheduling strategies. [Configurable Scheduler Profiles on AKS][concepts-scheduler-configuration] allows customers to increase node utilization by defining their own scheduling logic by enabling specific policies, changing policy priority, altering parameter weight, and changing policy evaluation point (i.e. PreFilter, Filter, Score). @@ -21,24 +21,23 @@ This blog provides examples of two different scheduler profiles and details the ## How does the default Kubernetes scheduler place pods? -The AKS default scheduler scores nodes for workload placement based on a _LeastAllocated_ strategy, to spread across the nodes in a cluster. However, this behavior can result in inefficient resource utilization, as nodes with higher allocation are not favored. You can use `NodeResourcesFit` to control how pods are assigned to nodes based on available resources (CPU, GPU, memory, etc.), including favoring nodes with high resource utilization, within the set configuration. - -Thoughtful scheduling strategies can resolve pervasive challenges like resource utilization. The kube-scheduler is one of the core components of the Kubernetes control plane, alongside kube-apiserver, etcd, and the controller manager. The default scheduler was primarily designed for general-purpose workloads and out-of-the-box pod scheduling that can be restrictive if you want to bin pack nodes since the hard and soft constraints for pod scheduling do not align with scheduling pods with nodes of higher utilization. The scheduler selects the optimal node for queued pod(s) based on several constraints, including (but not limited to): +The Kubernetes scheduler operates across two cycles, a scheduling cycle and the binding cycle. The scheduling cycle has two sub-phases: filtering and scoring. The filter phase removes unsuitable nodes based on hard constratins and the scoring attributes a score to nodes that is most suitable for the incoming pod. The scheduler filters and scores the optimal node for a pending pod based on several hard and soft constraints, including (but not limited to): 1. Resource requirements (CPU, memory) 2. Node affinity/anti-affinity 3. Pod affinity/anti-affinity 4. Taints and tolerations +5. TopologySpreadConstraints -Out of the available nodes, the scheduler then filters out nodes that don't meet the requirements to identify the node that is most optimal for the pod(s). Today, the default scheduler on AKS lacks the flexibility for users to change which criteria should be prioritized, and ignored, in the scheduling cycle on a per workload basis. This means the default scheduling criteria, and their fixed priority order, are not suitable for workloads that demand optimizing GPU utilization for batch jobs or enforcing strict zone-level distribution for microservices. This rigidity often forces users to either accept suboptimal placement or manage a separate custom scheduler, both of which increase operational complexity. +The default scheduler was primarily designed for general-purpose workloads and out-of-the-box pod scheduling that can be restrictive if you want to bin pack nodes since the hard and soft constraints for pod scheduling do not align with scheduling pods with nodes of higher utilization. The Kubernetes default scheduler scores nodes for workload placement based on a _LeastAllocated_ strategy, to spread across the nodes in a cluster. However, this behavior can result in inefficient resource utilization, as nodes with higher allocation are not favored. You can use `NodeResourcesFit` to control how pods are assigned to nodes based on available resources (CPU, GPU, memory, etc.), including favoring nodes with high resource utilization, within the set configuration. ![Diagram of the kube-scheduler workflow showing pods entering the scheduling cycle and binding cycle to assign a pod on a node](./kube-scheduler-scheduling-phases-diagram.png) -Previously, the scheduler configuration wasn't accessible to users. Starting from Kubernetes version 1.33, you can now configure and set a scheduler profile for your AKS cluster using Configurable Scheduler Profiles. +Today, the default scheduler on AKS lacks the flexibility for users to change which criteria should be prioritized, and ignored, in the scheduling cycle on a per cluster basis. This means the default scheduling criteria, and their fixed priority order, are not suitable for workloads that demand optimizing GPU utilization for batch jobs. This rigidity often forces users to either accept suboptimal placement or manage a separate custom scheduler, both of which increase operational complexity. Starting from Kubernetes version 1.33, you can now configure and optimize a scheduler profile for your AKS cluster using Configurable Scheduler Profiles. ## Configurable Scheduler Profiles on AKS -customers to benefit from the extensibility of the [scheduling framework][scheduling-framework/#interfaces] while reducing the operational overhead of adopting a second scheduler or defininng a customer scheduler.** Configurable Scheduler Profiles uses a Custom Resource Definition (CRD) that lets users define custom scheduler profiles with their own scheduling logic. A dedicated controller continuously reconciles these user-defined configurations with the underlying kube-scheduler deployment, validating changes and applying them transparently. If a configuration causes the scheduler to become unhealthy, the controller automatically rolls back to the last known good state to ensure cluster stability. This means incorrect plugins or values will not be applied. +[Configurable Scheduler Profiles on AKS][concepts-scheduler-configuration] allows customers to customers to benefit from the extensibility of the [scheduling framework][scheduling-framework-interfaces] while reducing the operational overhead of adopting a second scheduler or defininng a customer scheduler. Configurable Scheduler Profiles uses a Custom Resource Definition (CRD) that lets users define custom scheduler profiles with their own scheduling logic. A dedicated controller continuously reconciles these user-defined configurations with the underlying kube-scheduler deployment, validating changes and applying them transparently. If a configuration causes the scheduler to become unhealthy, the controller automatically rolls back to the last known good state to ensure cluster stability. This means incorrect plugins or values will not be applied. ![Architecture diagram showing how Configurable Scheduler Profiles use a CRD and controller to reconcile user-defined profiles with the kube-scheduler deployment](./config-scheduler-profiles.png) @@ -150,6 +149,6 @@ With Configurable Scheduler Profiles, teams gain fine-grained control over pod p [concepts-scheduler-configuration]: https://learn.microsoft.com/azure/aks/concepts-scheduler-configuration [kueue-overview]: https://learn.microsoft.com/azure/aks/kueue-overview [best-practices-advanced-scheduler]: https://learn.microsoft.com/azure/aks/operator-best-practices-advanced-scheduler -[scheduling-framework/#interfaces]: https://kubernetes.io/docs/concepts/scheduling-eviction/scheduling-framework/#interfaces +[scheduling-framework-interfaces]: https://kubernetes.io/docs/concepts/scheduling-eviction/scheduling-framework/#interfaces [supported-in-tree-scheduling-plugins]: https://learn.microsoft.com/azure/aks/concepts-scheduler-configuration#supported-in-tree-scheduling-plugins [node-bin-packing-configurations]: https://learn.microsoft.com/azure/aks/configure-node-binpack-scheduler?tabs=new-cluster From 3a0d97e91bcfe36fb480d5ae1805e2d7679db74d Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Fri, 20 Mar 2026 15:44:50 -0700 Subject: [PATCH 086/164] Add files via upload --- .../default-config-scheduler-comparison.png | Bin 0 -> 62972 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 website/blog/2025-12-16-aks-config-scheduler-profiles-preview/default-config-scheduler-comparison.png diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/default-config-scheduler-comparison.png b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/default-config-scheduler-comparison.png new file mode 100644 index 0000000000000000000000000000000000000000..5be78d23f6a7871cb49b0b22220a1ed558d7d3a1 GIT binary patch literal 62972 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 Date: Fri, 20 Mar 2026 15:48:51 -0700 Subject: [PATCH 087/164] Enhance blog post with node utilization insights Added section on increasing node utilization and operator control with configurable scheduler profiles. --- .../index.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md index 60ac27a0d..233e787dc 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md @@ -51,6 +51,11 @@ A profile is a set of one or more in-tree scheduling plugins and configurations Adjust resource weights, utilization thresholds, and plugin parameters to match your VM SKUs, workload patterns, and cluster topology. ::: +## Increase Node Utilization and Operator Control + +Configurable Scheduler Profiles using the `NodeResourcesFit` plugin shows a visible consolidation pattern that differs from the default scheduler's logic. As result, platform engineers gain more control and resources are used more efficiently when using AKS. +![Table showing increased node utilization with the node bin packing scheduler profiles versus the pod distribution using the default scheduler](./default-config-scheduler-comparison.png) + ### Increase AKS Cluster GPU Utilization Additionally, customers running GPU-dependent applications like batch jobs will benefit from improved bin-packing and increased GPU utilization. For example, scheduling jobs on nodes with a higher relative GPU utilization, can reduce costs while maintaining performance. From 1b6399712ef0876553e1e8da05e8bbeae19c95df Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Fri, 20 Mar 2026 15:56:07 -0700 Subject: [PATCH 088/164] Delete website/blog/2025-12-16-aks-config-scheduler-profiles-preview/config-scheduler-profiles.png --- .../config-scheduler-profiles.png | Bin 89802 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 website/blog/2025-12-16-aks-config-scheduler-profiles-preview/config-scheduler-profiles.png diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/config-scheduler-profiles.png b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/config-scheduler-profiles.png deleted file mode 100644 index 9363dbd15404d3477c0da750c7ce76833a5b0cc6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 89802 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 f(f_+WP6IOV- From 76a885d74bd9abc7a2040bff485be9e22c2aa689 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Fri, 20 Mar 2026 15:56:20 -0700 Subject: [PATCH 089/164] Add files via upload --- .../config-scheduler-profiles.png | Bin 0 -> 66553 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 website/blog/2025-12-16-aks-config-scheduler-profiles-preview/config-scheduler-profiles.png diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/config-scheduler-profiles.png b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/config-scheduler-profiles.png new file mode 100644 index 0000000000000000000000000000000000000000..7192c98aba82f59bf2d21a59d5a8643b8ec68708 GIT binary patch literal 66553 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 Tu8>Fz0-B7ZBD6&Ot^fZ5E2T=6 literal 0 HcmV?d00001 From cb23745c89d59eee7f086f929140e50008cafaf6 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Fri, 20 Mar 2026 16:07:29 -0700 Subject: [PATCH 090/164] Delete website/blog/2025-12-16-aks-config-scheduler-profiles-preview/hero-image.png --- .../hero-image.png | Bin 54000 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 website/blog/2025-12-16-aks-config-scheduler-profiles-preview/hero-image.png diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/hero-image.png b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/hero-image.png deleted file mode 100644 index 57788e20d156cd9349f43cc0bf45d84ec4f2b409..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54000 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 Date: Fri, 20 Mar 2026 16:07:40 -0700 Subject: [PATCH 091/164] Add files via upload --- .../hero-image.png | Bin 0 -> 40800 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 website/blog/2025-12-16-aks-config-scheduler-profiles-preview/hero-image.png diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/hero-image.png b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/hero-image.png new file mode 100644 index 0000000000000000000000000000000000000000..59949d32b877cd6ab8394949c12c86d5c182ce95 GIT binary patch literal 40800 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 literal 0 HcmV?d00001 From 852b8f923738afba26d40c8f26c698fbc7afd08a Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Fri, 20 Mar 2026 16:08:28 -0700 Subject: [PATCH 092/164] Delete website/blog/2025-12-16-aks-config-scheduler-profiles-preview/hero-image.png --- .../hero-image.png | Bin 40800 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 website/blog/2025-12-16-aks-config-scheduler-profiles-preview/hero-image.png diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/hero-image.png b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/hero-image.png deleted file mode 100644 index 59949d32b877cd6ab8394949c12c86d5c182ce95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40800 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 From a1266c98e8ace17a37030383e7ec588ec04a835a Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Fri, 20 Mar 2026 16:08:48 -0700 Subject: [PATCH 093/164] Add files via upload --- .../hero-image.png | Bin 0 -> 40800 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 website/blog/2025-12-16-aks-config-scheduler-profiles-preview/hero-image.png diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/hero-image.png b/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/hero-image.png new file mode 100644 index 0000000000000000000000000000000000000000..59949d32b877cd6ab8394949c12c86d5c182ce95 GIT binary patch literal 40800 zcmeFZWl&r}_cu65aCeu%-Q9yb1b2tv5Zv7@5Zpa5I0W}0xI=J<-~@-@yp!kIdjB7` zcB}T=R_%7pt=qS6b@w^vo<4p0{JJMbO+^+Ji3kY*0HDgtNqqtUV6*@Ls7eGlNQo6Y zNdn{s<@QPTBcOJQ? zLety$Y{SP8=k6W;5+4{{7)%ga97>yAh?p+Ru(> zCzy~dt2}V9tND{+J+#KlmkRo5AU(yGwq7yMdm=ntU2$FG>0z&)KY^kJdS3Tj6BB-- z!$K+%z+xg$zHxx=qGKdqykJ~YMYfrm)&Mmv zEs%plJy%Ie@Mm8iK*aYJgAN;)Nt6xmip~7zs8lHx%I!&!SJ>a5qnZgWN?NGbmphVh zno`Z;fq|k<8yz$%w4a!ow^?BrfutF1J|V>IL9yQ|i6Bjft#^8<=1NHkp1i$2d%t9E zv{kr!UGM&smnscQx!Frj36jlKT7V4$5dp=-3M?w3?XvLMjHACrYyMWe=8uf6z#FCa zr&cMp3zg79?bmyYwj+nr(#);~qqt&W9@n2`O#hVERA#RL{wK{rhcOm^8Hp7MXR!~f z-#0~R{F&AKbHA_WXswm)>E0+}e0RdU)C56#W|bn`SPtI?6H}`#74?Q=<`*iA@&<;t zVXlFQrIAQTjazU3Voj^vpU2;^89x%?vYme7x>|G0C7lg+v~O*9QaRL=orGwBmM{nj z38NDe@#u8iG8#Y^bo?}3TxY$|@ab)ZAr-0XbyYJkd%{-THqS97hfGgDRwh&YzOjfsiUB%ic8Lva}I5d_ltw*i>V^6R#ulr)zv~B&%UT3+1!N`rFk=cY_bXhwa`p66|ZbDZdT#1Yx2 znxOii#bE*-xfkNBzCO9DshLtN7|?Y9wwWbf(EiA%c|SW)1g}fESkR z&9A<#(co9A-tDmPJFf0dFErE3VgH`d;NOWSDukZSUoAFT=y;O#=6k|zsBQyY2{}8~ zRIK7sJo>+!V4VW!RcZoO6Ne((FkUXFGZ2;q@VSPVNY84|hrFV$(~vEOE|7Ob%gEQg zoQA+-cJdm-Ai9GyLxlG{8sc=tj!jK=EN(gTaF*Vw* zeywL~+nc8cuMW#Y+0@JmEiS!g#zRvz9#t<1^=4v!1z+{OZ`o@ggFAAksGm$`)3x;fU=h@Vhr#gGFf4p>b$3bcZK+p-)m>1A$xtT%3Lzg1QqW3k21i$<+!^re6Hwiu zFS4}h+S3`*CrU1%T`%Ej#{#N4Y}sGlFM}Fu-P>C+syr`oF)Ifk&C6M!JdVK6vF}5H z(<6Yj!h1oSdoE|EA2KG`VdWnBi!)Amy|h5d%G2!8o0Lp zjq=Ox^0NSd<>0njA$}zK*8m+a=7%Tfx$&kygN@=EK6MGg;`b{NdeK5;v8tjZB@cg} z?*}hOk?Z%*VCcO*YbIwTR)k6Dvir2{@{zHVXyC!_sA>9MosL=>4S{xIgQo54sug!( zq?EAdzDsY1TnqNrrev7hF$MoXUT*9o4YPcIb78AyG%FwM`aO>D>JXc~^~k9`Dk}Nn zjHNz!EJ)VF6^<9SM~vClOERrJ5fIHp%xiA_TzO6S45zO&_}tBB{yrKtNbZN!=qhwZ zJn^G|!o*qgB7xsuE9^q;Yr>jY=gwZKu9sDd8y8FX0e0ei@Im|=g@cJ?}Cp? z5IGEzhkU=x6Xp|!<#gVuUm7N`qD*z>Bo^(-V7l~!4i?BB>zvz%YMh?>*L_dO^qMgN z<8z)8-S+DyvFk%CR^Z_}ij?y!oTzivV&!4Iv&)0O%#{b@H^PWMyvCquR4%@eYzcDn zATP@9XUvLqMd2QGW6?|g;NRoRf(|XaeytA#Av6;|GV#eHE@&roZiHkh)$R#*gT6&W zMgqe)ycg zLG3NWcNNk*1{&F3hsQLrQYn&%<4{|?7glBpoN_yTXB=X*k~aET{zh&wU&mOcHM%4c zdgNW^s*;7s-|hZkGe`($)@m89J=CG}yEVnD3Uuv@H?#r#KAgLpf`)KjkMPKV<`op>$PYQ#6*1fZM1H?*sMMHuhfX@i+DA^hGD zS^vbneZza#C$;>n;CWHSZ7TE`oW`jr@H_*CUm`XBW8N0|fOxFJ5M+F7&by9tH09lT z%-sW|a74;0z35Py#Dw6E=M#wfTyxPs_J{?;zBYYUZ@Pghx#a}VuBHWV*hH%-aY>%`uu}ksOmA!Wn56`8F z9z9yYDjR%Qp(u*W@ zX086c#aY4-qT7$w=xF}r&;|XCs~>h-B6m}-rRem&*W2||`XHzNsrS+STjLJKEHG>7 zBUfMWjVDZ2;cy)~bAFaja%;zLSmXm8B@laXvROD5Y((R-n%BrGOZ8n)K2SPwwVaWl z(ow1@q8lKS&kp)kUtl?OGj=t6iF}@7YY<|EErORRsalXUWbh2u;jNuWsj-Lto>s6E z1&_)9cqtSfxS`yEdPP_7zrb=8Th{4;adXyv85otc!zY0A95fC%;qBjc=A#Cgvfs*gl(o%KTjQ+ml&t zfY4ESU*T0)zIy|YypF@Ekjs|=HgA=S786Gc7HZO3)eP&Rcj4ShF$3vo+3urb1C@V@ zt`E6A46a3Zr-`8b?2&bKm%%>a==c76l(5=*{4H9p$u((Uc>b0#(lB9O3XowdRHxbK z6x;U7Bpx1K%Mq^!sdoHVRfdqv%rC+Kz8gH&g6?2s8@6rmisW*mDN4CRn&>0q=ip@W z#Bldp9T;~5ZvY*T*W$p`kDG@J)-)Qf#&Dafs#i@EuJ^sH?YI1DC)9BG9|v}G(w=uP zHtU~kFc=KoGDXGVmWTe7!QLyiSXaevaBs9a`SV~993ii#=ST6|fE>kk2?uZSo}kg2 z>tOWa%y>v_4*nb9qd3Ej2i{Frmq#K;eGl_CX}4XvHQ?`V?Afl!Gw|Lq z%?MX$;4iv~66pfcqV~aO0T*HDH{IyKLFHyrKiHgmg(XM!0ep!Y!9Fl-a5AF4FLU_2 zyBTo{nR@pnYh7p*zo;W`q+nXponlJ>j3dM`39Ah(811FH#AwhNy8^5aBeq@dSsA`u zak9Qaj98RUzgy**Qvu?p0gs%oXr+Bv!!X$OHmRLJXa)|?8cy5@M)#H|F(NLUg5xh| z@td~)ZC>3+SHtBgxOuUGbC|u^`F2F+>WSILC5nlMN6A}kXiksDMCYHvD_*Yo(WoX& zP73Mr#%q%24F<`w`&v(lYdfswuag-r-$DizJ;kZ zCW|*~M|+Un0(Bq5GtbS`(WuRk2X2GI8I$V`nHBz;0aH4as>{F&rYi<}b1A2-j^vRnE z`0jB{95Kc7#fd=`{2iN3aB%1at{rl#U5(t`DkZGKYLyxPEFZOR@W0k)E+C10J+unR z5`c?x9?JDf9m^)D$i==Uv!M{VCtnYw&hcS`VYp84jb=)Y70hdDlw6sj8~xt!5@6Pd z-IR~OFHFLsMV49Jo~~guBV%Rc<{qGmN3u_)NEQbQJVYeNLoL+zMTz>xpDc$M#^_7q zF#OyvDX4{0yjYu_)UVF8A9DH29WdosBxn_`q_I54HJ4nr-&BvnlDBg|DER30bCTSp zI-Uz}wZ)D>1>_Qm*WyBU81_{XetQoXyN%R@;pHFa4~~%-h&WHkQ9<0GPuu8cS-EdM z3+BC(UZLqom?@L^sv_u&Je{C8qpZAMRmsZ|2Pb=Cdzr^VG!7#N1Ocr#*bnV@JY^0L zVc}ALEj<$b(#0f7YzqkHa&@HKVn2nA1_p1EACJB zCGxkak`XRYiy_dQttxUxpH`JcntaS?c&b9i<(p|KK3Xdo$Z6y|_NK7^HJcikbv|h; zvtI0J3colBF~3*x-`No{-J%BUJ;L3=F>rYG9_LAv1H$aiD(^_59J(cCHO#RJV06Fc z-0%`%7Q?4Vt4?eMsWedka+dCl;*+4&ADOduEnhzIn$#v57ywGmgqfKJ_>&<%xUpgl zDe)S9FoR01s;XyDnQ0fVx$O=C=`4yjL3*FFq`tO6jEi@+C>cIJ|AJrhbAeG zv6J@miVEH=wZ)c>z6w}9|FyW*u8JhN{2zn!u4Fv~EZqdtLd{4fd8`LBwzIn4Z-~Ja z2452>KHUN2uTjk4glqOGt1{~}H_FJjf>{~>rqOS2vMvWB5Wk@nRuox;bF{ z%$@dX?e*6GhqL*Xr>}1?XCM2krF3AiXL?WU5&+f8rYGE>t;Q+)Nys%;TLlREctFr~ zCt1{~$=Q?R4sf;WgvuURRq*yXrFFvR3Y4F1v_!Mt2{-+`D3>23r2QI>(^^-h+FGA1 z!Zb!=LG|%+AYnIyFhH6qLs7JGj3@nMA#@vyZ3?XD7_( z&U#{S__uf-$o`k7Y}fK)IA^mf(s)INLpmmD4bAdfcuw{`Uy~@~)&z;G0$JwiQo}?9 zyIA}JkYuN0-@BO&(cUE{Td>sA>W`x$LO!;3EywZK)P5(>FItn+V^YEa_o}-=1suZO z|G_mT_K@V;@i(2Vtm#^Kozi({5%fG=#0M2!0FZ=(uYW; zG!NW~fy!xGi~FT0j5LZo?;Y^wG`m$luv7Bl&xU##7-D(xj zr%E@h|H48%OYC;Rc13}g^%%!92tNW|&u3)ZKe(bBdAnIFAah4}N<-9`h3Ohw>5Ura zdvVIw{QU5Wf)>*dRozi^2d5d-xP6bT2#r8w4E0JI3duHL zA-JQbJMR%X7>_qGCCm;2;0^3S_bVz|fhykOGhF_L7yee`jD6dSkGh^842Rn_reO>& zEvW5Va2zo&xM>BaS_IhBwipayxpHolM8$cz;@XJF8$~uqPf?|L36{lbW80au-^*-t zWNb=S+m4fUDjU7G`=rxDaFQ&E7kpaX9db$1g#Uftqls9Q3Jv6pn!@2W^l|0(Wn}31 zua0T&YGGF~LE&L){`Jjhnr+h#whLkFg(U^e31<&67kMDqAz5nBOij8j*Q_;5cfB{2 zY=ZRA><|l|QddECq6bx%U0Lu7Y-7NNz;&b7XEkc=Jx1%uh`izk8jA1Fv_-DBJ7u6A zg+_?VTJBQw)M>K*ylTR6YGn8T-G)vcE^kujMv=7i1H{0~A<%-^Ql`JRlQjCWP4g8QHiGS&0-FlD>gva0XtrV9bY73@oOr% z*Faq-ySj8#QiK1o^g6@H@bRE*Ec!$&m7hvlw>xK4A7mXXizn`$6^%+f&fj^$wCHg{ z;p5`wy67KoCkRz?c4*;~iD>=s7Y9GXPJ~243_ZnbLsiTNBjmb6AoPgK50jw!Af#Ub z1wJqum1%$e$=v=uq3u(Q5j`rrA9zc0k%gOh)}(fD0?jyc*^lKucS1ZTZEsff2U;>G zBpQv%9Xu|psHSgdH5>Gy2mKkE%jl0;(fW^tKD?=c1GAeV7~R?4;_PoIX0vmIPH%oL zz_yq9uwKq|$$D1v59_%(W2&2xysVk+SANW{m`NYCKW_`8`=Lej+2nFLu%t4UhI}|P zvN5+tJRMt3G>Kv}j6fO_j8MgsricE8v;^3|3rZ4sb8=}>_uqnJF=BVy!wiqt$!2Oy zeT|D|lwX^@WZNecL+ywkj%;IV=<9^h*JtqH;Nq0c=`YzKCrv~Rbd0;V`z%C4ysK?C z^`QNk0=YIGGB1rqA-vkK`u5N=)=iYtz3lN)nOdp-Xi!I5Jjw0@>pc~&l>{;A8;(r_ z@EnCq&!#5%eL?@>>%!aoFN5l>oA!$gYVLEtm@n?oSPp8O-OM<4C-$#jm01F-@deR@ z1GpBuvGZRxZ4e09UOKbzcm8f-N(bxjD9zlRnx1V6kf_w)Zna9RIc2);3OQtb=N_;W z8B_!kia<~jOuA2Z-;$F?xQ+7YP4hJWu(>w^PdQ&Eq_M?+utx5(VuvP5XxVG38 z9As+u?0GrvBjC{9(7e`M3T zZ^d2Er12g7tHB#9Ra6kHX=ES@9g~=t>0i@GH(zg;I9?jx2@+p%quf_+|3pHZC=x)c z9yUj*a`GeCF5G%DyU1~^W!JJ8_zC%Z_u{Y@0%cV&BVD^5F3t1f`V+ms@<1Io9J=6!ZTb^48d+D5a^fu)rlHsUo9c@jsZ;cTKwg zjXwPshhq7kmtlB`OhjUygGRB0N02`{^Po1bD>9r%cwz)^uEN!@N0|#HPc> zRR8dKz8tmZ@qqaDV#_2~>-5rJQmUgI@B{eSHXm$P24QMn;B!j;oOD)JR-5}V z7AF_izHNVhevgfI#ZYqk zA8stIts^1b^^J_k<+nJl@uqQ7m(5EoOy=k%rsglruhSbAOgqLAL>5u7rpPG zt|gCue6ZRt)#kl;C@G;_-`r?jLmVQ|=~CUe3E$@#ahjy)XvW0K%E~dneTov^?Z?Py z_pEDI7BR8jMbbT^TVk91J0jaM#+D|Cdd)1xj zjL!xd`%iDr7yEUuudfXd6;1OuDsMU@ZXRAB9&vF%7cvt~{OxwL-Nd78)ofQ)Jv`Q! z9`qrSbtMrIZ3qyYyX>N5qIF;5nnnLgyZ`zZ^dh8#tdd#p4gDmz+Nb-lHrnflr*q@C zy|MTa{MwY+N)Kzh;L_{&a7n3>CrA?%bTC19dps{&rsO!B&Ip1wMp$iv_xr^n9sFwgMmb`n^!relUi7M0|H2B&PP)Cx|26c{wq!6K3Zwoj)U54hFn&ifZ76Ct~e% zIS|emvl1&*J5-g*$^E(bI-lDNekrS9@AQwtU8f(Nr_)C8{*5eH-Z1wEulwkI@e&32 zq9@?yFjEY~8RVg;gpiw5q!Js91W2(6`iZ@7{sgyeqA@uLSt7B(zz`TL_cd(c`1icJ zDIGJj78Xf}%q$vu8)Zfw6?js3OS1O}(J|_LSoL%b?Jna$`HfF0C6(Po(n3J2?Pp<$ z@2AU)qde_o3a~)NCJ@$CuEiN7(-~+8{7dt5Ls@2h0l~jjK;{Q9Z35BQKHVZVj&vfe zuKo_ybY=$Y{@#)Dd8HERh`4VVjAk@6DLWHChEy%nKdP<0Bp@eD8nVq&h1tl3x|0KT zJ+|gdaWxZ<G5u%WpmA*Z%y3PTgo!m8A%BX|d|Z%ygYas$4~($ZlUr{BSc^rKrvW;jWQGexJ&^YIk92RphS8Vs_nN zOc_VZd`V5q3sdcDMzo0x6Z- za|o^W=Fs9JzT!wNW4i1AaGlzz(U_ zvq@c#bxh?eiJ2|4i0$_c;jjzsh$`b3_x#|&^MIYtG(SMN2NYBcNKrjnFSLN*#oEjK zoygkB@GtGQ(T_Bk2Ll~Agc@ar_>61SEkWLh&k?j+%KKbwX2b7i+xNAo@ppsI1X{R> zl_`wxk3)zze9SWViaU;hM78I7Nq2Nu()+2nK@M$SI7uiKPGgfGZtrtnP3H`0B|H3R z&`b0JaiX1zp$M|#)s-r5`7aPWt^amp&mZP8Be)y4uiobWaxcRSBq{Gj_2`-9AxHAG(2GI@c&b-RakOM7Y@`)R{1x@ea}FUeE&O<(hJ zzkDTegNyQv-1~$mQMVSGN3bIEL^IDiG0?@L(E6^w*3T-c?%Tkk>K5_$N3x5PS?zL5 zE()~_`Jh)$Qn91_U3Nj(?=7l&U&YcfWf|q(&J7A@@1%3at=8*#bBwIdiA6?I7NB4G zbn0gh7FRtL!sVdb3)-iNf@#2p;m&7UwckytxX;d>`AK#79+>*@R$C3fUzI!RR{K55 z@nw3fNaXJYucrA71FS}aucXiRhFMU+QwhPY(g#BpmRq&vpO z{Il0$1+q8ic=?lboh}f#6cqKjtfbp2j;v9Kpo3cN2v{`2_xUr-cS>X3YIUw|8sC>K zHFw+Z?!^%^>s!U}<^E?;MGB)@&h#(ZN+DH8&xG7RLh_nJgbRsII!QJqb8+yMzk2Ag zOTE40$O8a3wV5JH2o(VFErN73Ne+*el42zrHrPpGBs#r9>QpXgmKWN_#gA1*m(Siv zzCY9$Z7dOo`#*|n5pusejm494%ni!;VrF~`v2+zxS7x`QC$WOU{esctti=G8hFuN| z2NL7uc9SX?RlIz(yc?DeTXf3YE#~f#+#=xJSZCjoeETrgk7z7vOmIR0s|heQMd^f+ z+|gCl)MTP{Az|t6`|#zfYisVX&wmKTRD%k3ZDMsX_(4!+#Hf#UBf0&9EEYLPu61F^ zmcGlsOMwJCEiZ#D$nlt)+?XmC$0BwRN(;iz=uk6*b54VR((O0Q@2Ri=I2IYR&@bIY z1Or1>(AG(xQfF^F4bW}|Qbt8I?^$3JWl{bZ+R6qc^yYBp;Q*C1C*JJN@q zOZA(?q1@amJscX$S@785j`TTYB@nO>z(b!uaIPdE$|sL{f-@fj_(_X@*zx+&6e1x2 z%{Ye=#t4Ed#w4u6(c)?OsRl^jvmQ`x^ZQodiz}4gHV_~WyZeR0vHXG;i3&>U98uP})BqI#sPJOKLH^(VH#sD-fU?a75mqEG&?)=Trs-Y zFuG0hgHk?{kgQJOuRV}2Uy`P_|GCzjnL$-#lRiauw`1ueyulR(nV&`{q- z75@)6cr+trZHKCMY{P}LjD{}*XR{xxl>Qm57o79+0^n}>EjCK_T_1fJh0NJeGwfjR z!VFr#rb+zt-?L;7_RyecDfcrPDJS~XtGU7=D9&FC zRZTg!WkXxt=;dgbV^AZi3ED3zxcV6i+;5P9VdjMP+lHFz(Furk5qrZk(~irWVCj7Q zmF<1Q^5--0jLohZzupL=41sfn{}c~<)cn`VBbe>6{u+eMFItsl?5H}euvFgT+9XdJ z`4v#g(@EGfl8c<_*iq3m=b5dHu*tKoZMQdeo-8#|D4+`c=uwEv-rwBRJww9|->OoZ z!D~NE4o;KWaksRD8KxB9ZB}ecE$Rv+<774bbgR>Y7q2R2oD_{c%6_~EQyV}MlI!4e zOv_S=kEtJ*G*pJ1@ztn8ZfqQ5D5+8x@Bbi9Rb(mkM`z3G^4Z+ig5L= z%x13^ln>__Qorf*m;iEgiUj)!eSHjbc!U{6E~y`WM#S(p&5=`z8G*|RJWcNy2L(Px zeCn>%Ie|7eWhNQtc|B+RmP)-lfnOD|H3}~_q&+rka&tkO67-CLH+c=AssPwFQlcDd z_BoM^wbmu4hd`pq(&!yvNxeJvVWF75vA4ZAs@oyKpF00*J~3Nfbl(Zv6otBW-GSq* z1;$srfBulAVZL#v&lQ zYLG=z*=Vn?lS7K?ziriWMV3UFKWRvBSz2UP{kdT?-$%M&YqdB$N4?BBOkkjTDwHKI zYfrmPd)Cx!pqiCS%^OZ|+~yuZjnnzlf6vyvWA_123z@5NrzEb$h}JE}M%C71o&=OV zI)5%8N;GQFvTu|Ixmk!P%YT>>dBefdFp0t2+^ zdi}#)2)E(Wy@rwrPVgo693o>X470^rkIPLx>?#8(x&}5+cCJ*r@q7vyUZqY#Z)aY6 z@q*^9Gr4kAYDw?Gma?=c)_Wqo+l~X*-Yy(mW-z9)Xd{Qj<4E+s0h}D&X1FNnLL-kl{8S^0`K`Q7 z5~*mx4h+r44=xPtoQ%c+Jt{}+r!kFtjZa&j;w*S4d!-%7^R-GQZH~2DS(sNK0I#oc zS$I1r(N}_)dh0Ux{0*=Nozn|S5b70DO>Q4j3v!ZPUW&WfV&xM0XY;CddOzcps~XmD z`vgN}FMHIiTZsL5IZspGyGTzGcJ#V854dG`jeR>Z}|#S|}XL*({9CS6Z=F;(>BW+kx*qUvrDv{IbXr7VH9-MsKvK zun0$z3ox?#WPA#5EQOk}wWw|A&*QSWHP>w}EXsdj>0u@G5+|bx`Y6tNARM@SF-b(c zh&^XE5CAvu0A?GCV!E$&2Sn@rlrbqROQW4Nv?8U-Ha&+v&*}S^=eEQy0%-Kf*(}Fg za&^ocYPl&RsB#@}hF{OV52|{V_}7l83hLhy@HlePvaJ*~CNk399v@b4dm;gflOJ?{ z)w=5(dw;fyVz3(;N=qBs5)pyFUem$jC15Za$I>|aMe_PS5&ZJ)G>cwevzpngc!!#X zD5w?bD>gBjmzUQur;p$P3;v|90r0p4wKTiWI`>n$7QXJ7Uxp+vHb9|R)v>IBC;QP7U%MLG{APLP z^BFeI8~?;je@~K1!rat7D<+^*;~o0EFo;@v(TQmE_^X}>sdv(3?=MXm)%lj6};C)fP zgtflIovjnX)=dFi;1CtORQ^Q4nY}&Nx&%O$_O}}EIhOPZ30xOPk%JeVV2?)fb&|A> zom8p43z^cePhJ$)9iNcpCH+wHx}nzi;3<#BDPSEp6Z7m}w*U6y=mJs2-f9RoELT>D z$02;6XCz0PQ+r>B;j*f@lRE;dxZ`& z9$)<$-y$~JA3jF;X~Zguq1@@MxVbS=n7|Zjod{`;?1;l02`{Lf)UO4POR=)=OCxbt z`Lo%;BI<+xsQ>Y!%fb@lAvnsb4lrDtOwk#;*cxUZd`57F+N%|}qYXhbNfLUWA7QD- zq5Y}+P@cbtuEVv19j~x%o3)-Ma znV6hDn+ROH*%e&??ph8}Sc%<`OMDC*HI(;PftaIBVm3gQW`&{P$LcS#P8^&XL(2TLQih_i_V? z?=q6ET$IIeiYC)+~;&6)6nkc?Hg)rFA4-v}i`nJeCYJfg6{$T`Rv_PAl?Yi2& zVCPMWd3?p$bJrHUr;LC?%_h<+IUB5%z*HPTYdV?g^AD~J)u&`^KO8d}Bb0a2_>n3? z@OR>Yp+VG5uI`=J9;RG<0vJ?M4tI0cZlp-CqGw5M5zQG%hum~j4eop3+eTCLau(b+ z{YSJx3Q4@`k)(c+?d4U(T5_DcA4QtkfnMst&g;dL)p< z@sk_=RP%RWW)b|?*ArRizA}(eizE*f6!^H0?~0`*`zSEdMw~EGQ((UMWp=>U73WkZ za{IG8=a%($TGF80DY~6WkQe8G zN{kL>w1FdfJUv}2$YDfw>h&|p#%@yZr*f-0waT3b_W_6`(E)S4Yl@xI6+xbcA4u3r z|4j~_?^wX%d7N)jzYi%M!D!W=I@)z|OHN-gzcB0XFGqv@f0xqjo+R~OW{6;wL^JWb zA2FNn&VQvMB4-pE3LpWB;g`RX0Nz<-F#~#!uGn`11CP6Te$Cu=78va%k>aOL^+pKD z#fijDF8v~XoyWi=NmTSo>p5()G+ce8a!T95B*_kJ)nUD(hfasbcMJG5_rUz;vwPsn zU#ux(TypI2i@U6|q6tmHTWZMhr`!r;|A2t2L41>ut&DfXzYr)Q1`-iBep?+LhOg48 z(;i*2^7Zw-UJ~A_Xe4PRv6n$iij?aP4}QcAfG>zb>(a{yLzxUI43wVx6;v9rExzL#DL@+Zv17r0<%96AoVg5>YPo=ak@1FHZLYV4h z8e|#^onFqlA_mHEX*y7el|Z1;5QkRT{7U+Naie0;|I=e}&DIJYkbVT4eg55zh8Y&( z%oTAl|D|L+0?q$qFl~#p-QQ1Fn&=D-4K=T0qASclz`>1~EFGK&2_Hfb6io813>Jf- z^B`a|u;TjeE~2ikPC*ocBQR@dXgt~n1qCr1v?$S-WL)J!pq*-7@-3dh^B}4JBz;pg z>HlO(Kfr1I|3&{KQ2OD&p!Es#Kaj-U#Kh#`=?U~30+kJN^6;ef-v9kO+-NnfdF`R6 zmFL!jCKThAVUe8rB9|*ISlp9Lso(rLv}c2q-8D6iKj$c|Vsh9^nFDg>tr$r?N3}!C zb?R8uxAMg!L&Z_^TF&eD?=Eqrbt8ayU-94B_YJgNV43-4%`-^wq4vKO8HW~n-=dtU zrgpW#FqUFLlvCwMYSS|S&q&bGAFH?QX7&G*Cdl z2)OJ;QZ(i;?-zvmg<7y|G(N=kev9474`Hu$j-KC%?XnIYwXH!ydF{#uw+mY2Km-Xx5TP^P) ziLyI+H;$2DbAKXF)1Y4I0113x_!O!B&MEHvPdz)1huVNKZ2t^dN6{Yp*rxZG-}pE{ z0UA<~&L1}7S|9XVe|&^!#Mc{PblYRq!4;zR_e(^5ZodTleXWU#e5ek=6&Qf|?s-fT z54gjx86q;tC{GqB!26~Oo(;A-DmFwa9qx7m!63XW_D_QOC;Cdo{Ba(|bzBp7N?IPWy`tx=KQ7510|0=`#xkaf8`AO}Nw}atHOVssW~?~- z-v%f|;{Rlm{-=n)tV2#gA5LaUH_q&J3!G7)q&ceCl@YnH^%7kb^olM}_Yl&joWl(+ zG*-FH;`o@WwO76RgM5p;Cwk-5x_`5_lD|{4OqplGx605e?^;LC)YF<<}vz)wPH9%2khtN#8=I0m3GQ`c?Q+)k3`F}4Y)?fwC} z<%V|@&v$Q?Txno6-#4oiCJkDB#rIbn9J()O;<0eZuOi_ zlk0!zfCzdw6!ctqOmNijvFxm>9DaN9-gCL>ipo_R(uD->Y0b5*8#`O&Ily$dfbikP zfoPX(Kc-0zhShWE!OmO5-N~AID#b!gi(|}hYF5)Wh>7OP@P#KZ336b!7Sph!Wtb0& z>*uIoyYflu-2-Sc@FS0o-rsN6|FJI(&ybDT2IQ}~;9v!0d@Q&6gBL1S&IMrW?#0sb zHVlB(us!6RrmUj$c$XJbeG-C#Vj4MCj`?QA6%I$aFrGSF%71~1fyILS5c=VuR#}s`9eA-!kz#d*WU5e2<(D;-?*Gx0^d+g-AIaDjD@WYK1=g zL{*n|D2|OpZDjEL1y>5r%)_kqXrsTgex`zOrl>VY|L-%>yw;@tp6=b_u-fNkUpX*HSf&>*X;LIEw$A2Wm80M=KkZwUC;b2>=A zPk`!EC;(ixhm2g6596b$nilB9&}-(})cDhemX%ubWf)(5d2g8b-o+7*4&nYygLVAcF>Vg1)>$%=X3$BG@KQn z$gU1v@S^(U&(Si*)4)$;&5sYY44&^*G{yPDFg_6@-S-G7KZGe1p}QT-Mw1Iw5@DYN zf&+Qg4%^9Y^Oq#@4n6*5FF&e!?$Mf;{-3bkm2>&qbFlwaQk8?SU?CZ|eFLb@hym=awfBS>5@84SusYQL7s zmE!s5DFJ1#q1*rFf1H*hk5s{9KQl!OL$hXg;g&R#f9QX`36Epzp zu}WB?B4lx-M+jh3xAa;0!D`&X(Ko(yx@&dXLGMtL6sql^R`CO;%NRZdu5bLgeYZ}E z$b3VqXqd3#f}F`{QKYY*4p10%pIB#B)W-bJ#R-;3!z+jV06h4uBb{#l9MG^o&^lw- z6{;WmfAe=`A!yNc)tN0ACqNWU1x3aFo64xGP8K+CURVXn zAVyBEuMh;pIoKO?Gh=`~$pnsLK2)9;nWmQz-6f#2SG9c-O*C z8G0sY)HU)>rHr9n!|~fA9loz#RNw1QTw2voNk-c?(@;m16UvV0FT4gt5(-53R8}bG z?GP_F@3@On?iTR}S?6t^U^S<95fxNcLC?4&t#2EEPkL{};ah*1!6(VPqy~zOIR;|B z7P0(w(Ek~&cY_cT*Wa=8wr-MH=kND2Gy&}5r(^+Dll^znJ?t#aQoai{U)0eMH+@!7 z{1U7|#-GQv0~r`r=dQ3u-dRxF#WtnSRlSnEcA<eo(dwKWvzvI{ zWhXWqhjoJQ*1Qp&X`=BI5<}nc<$P?T1G|-0PNWwy=9E7k5f>I&xuM+M54Aca4AR)6 z8LiWjHU)&Z?8*Bey7YZhHI{wo92B#u^UtQ_oxx1$<6UN*0z&>302J%_4m^La9nH%OfD=4p~_xr{aNp;5*uf~@^ln@o7J zzy){SBmNcxFP>N(q^EpEu*DW9DGVqSWj2VpG2vJ=TCjCUJRB#z^lyiu-c+8Mh86Ee z4kzo5ng^I}k>qTF;Hl(Xs7}cA*?JM97T$~BI&gBQ;M7{lXm6Wf0k_1Ti*&`9@e;JR zWajr>b#YAS-*jR?2{u9G-?pgT4SnJG8XVq@8{U%Rxm=g8*(Oa+)A>MtdN)fLZ!qw45ix@bCj0Ox%+wI7}9ocQnbEP_HYkl zp!7;6ty}Qm5P}B_4grEog1cKFxVr>*cY*|WcL{oMcXyZI zF2UU$dh@&YefNE@t6#tVuTN2xD%ja)?X~BcYpyZJ9CK#UFFMsykybWPvdySh)Sw zKNElp+pMN>pnC3EqJfY&aoooV(D zA8&0G#ZPJn5NZ0^vucweqOL!j7mc4oUZ1Nk)mIp{GAOr@f3TRvUbDgv&33w$L%DZJ zNC^=O2%j81mOfT*ReW%g=${ZL7AO$gvH9vvaJu#Y`I``Sr&fh;ztr8;cvnJT48JD}U(+i&chm(O~8O9L)s;(b=L z7_nQVdT^G>F}*`xDN5HXBK9&6I-pb$L7@Xdt7!yhcv$83Ac94!y{eq3YV&}|y_9Ly zJD#iv0j=p$_4 zGJO1qm8{>InT?vaBXtH+6GtO05dDFqG}O5O3RhGJ0_W{`QtF2Zd4f7Zo9oYb{PDaq zBYP+6@=XdEmhXm#uqjMZg3f%}LQwX23B?j_MA(WS_&4min;vn-4>a`lZ1yX!m1LWx zZ8}1fwwUsYulnYzYZRA)$>z>J#tO#k=RjK0-9F+K=N=Ox&^ z>iQ(JbM~+b0ex|k5A>@p#)-xq>#kAI8#-CK zBTw`N-h>OOp0@e}_BOhnGDqIbcIZbp$E&OY9XL1YQkt3AlCgt*sPUlu)gb)orWNg}X*RG{UpmJuPp_ZkBGsRg z*AuZ63Bs^X&tO6V)bT!(WD3ta*>;{?#c69C?#uVwO&FiKrkftK?A_k5Tg*c^=}VDQ zQyNURe6XzP()95kCY(QApaH4g$#IpOW_M!P@ayO`oMPi!tQ|LTzTzee1j0R^tIz=kX3cQjBw--5;vJ4DvAyw?4WC*k;?125cgq_*C!T64ikvG(N12F z`+pKiB)(pXSf5%~DiNYWyjC*Dx4B&4aD5mA`3#Q-aIHP?^IQqrZ(up?{BBnq+VJA7 zG2@GpE~jhHPiQMQ(D%vw*xz|PZlwCOOOb><-7n?_^%r;pAO1{bm(>cX!hxh*0;nKKYnbC#9Y-X^O4u2PaUiHV&xkDx zLHA>d6Tv?v&}A@GiXHhnxm0zib5e;ovCiVVLV{G?&#A0FfEd4abtNOaRAeC$(s~mV zr_AWx@`2mptkHLP#5}GcE`2yOw9m!?`q5NNr%30uRON|~#Dhhf_6*YfrZ0OEyMEG5iB_FxToe{WMq^)sow8miE(8sbel+rcS54uTk)O)Ey zWwYY#^QQ||rD>*Uwj~k*P65;koT2fxMm$Nz#s{A}-W|c@>8#f`*jOSu6*aavPG96Wl~i=|Dk3`A5hpZ34B6 z6zO@~YO(?(Ry_p&>bC~sP7-Iz+R~X{fE(>ZOsD=l93#l0k!S9SuB$`iH zD!OsDfyX)w#ZAw39w1zKK@>a3sYJ;$DEL_Cj>vnV29aveH=*nzUHKzn zx!Sp>Hc7v7f{L7aqyq?kebP2Kn^UJIRG$UCdAN|6V;;?QTAn)d07sSkS*u4CPL5tq z+v;3S*LnM|2*}0yn6c`#&)CRZ@)cqZ>G5ZeJPt2{a%C?E!n94cM96JS6PK;w`{3SS zaHC=_!k_4+8nkgAvoNkN-eFPPwxNKc5)fGg@I`Js@?}aA z!E+BF&fPHdMq8__-&%_eJm!02(;hQ4Y;`#H>_QZ-;VZDhZYrWGFR?@3R0pcwhx>qQ#s`mx1s zp!Hr2@o>!8+Jk%?#e`=%aW!S)A_&Y@jkxna*KXdbUr{X1!O6OyOa?-%Gc3p6_=}hq zpy5!{EFIC6cohub|16)D%bqFC7IH4xD-*Xq*$J^y2AzGV#C|Q2TgpwHiY9h=Z@MUs zKb@KtZSyeXDF?EtB6foTrYE?6{(KOYmKQbjZp35yi+R{A-M7h#Gmg#jv`+oJwv{_i zh96#+lvcSCnNKh3h%{e4J_ZtGz6Kjk79<4N(9wG$i3|rqqjMjc{KEMD((yZua^BRH zzzsl60oTWZz0L45v3y2EkBq0K!Xp^F^h)-u4((I8gRye@r8y)M$=&y5ad&#psA?^P zuhZTUV)ZXQ;Co4oXkx5Px_bmMYo6Xv!K{otOm#MwkYTj7ja@NtrW#=h7b%#&?&YlD zsxLE{$D<9Yr_tKeR^J=7Zos&K=aeo7XHVQ)zUQw zM!{a;pe)dwJ~IU1!^%N^)O1H@=kYg_8FeaYd3^@>&lJ$z{SSpV$2X4%Vj?^dCj<-O zl_w!~={&w@SC887iSE$w;b1qv%xr#?GdqmZiIQSy$~zrTA=foowj(W{@FUo65&5Bv6AlT4*bu(C#b7 zP-{Kk?ZD?3 zeIgrqQBY3+c3Gt@BPmOgXz|Qz>eihE;Q9R%PX^79jQ&Gb%cF45 zk8jKxvGc4_a+`NP{FKZ;RpYmB=tz)8^iYlT?W=H<4sjETlE>Vb0Tk0EUS59|y!JNh zj9Vnp@7Gy(RrgC6X6=K{7CD|8wm)K4H;DMnE-2~sJj&k$I|1(-0vy)J0ZGKGkGPQI z?=Xk|2=4KCQhAr()}XqLzmwZtklN#M59U;3$iDps`4^mdlr?6LaA0U!!3}kwYLjwu z0UmY4W-LU&FFgp3l@NN?X6qa|!DQ5UhbBj!(k8>nA@bXD6XEl;OIol9m(}k{c|AeI zHJoW3M?7Hb!9qx2S3^}IhgGWW8SZzDN;>$Rp&vR&=hwh6ZJWxO>#Z3eHPs+;p%>^}D=(u_lkRIGdxKzCfjTdA z2BIC3-NR3RkKBBW;RrVuetzZVx`S8a6gw(1KFEu}v>GX_U=vWpipVk4#fxqMPc!q6|kYXZeVt-z}? zdZ%z1<$Vfs5sN7$aDn*Y)2>9~qX@PiHou!_E2-3T0nBHYs6gMiC-lTF2VS!_(u$L} zx*9MgFvY@JP;@`!iZz%}{I|!Hc>y;Aq;3wv=OjNeGZrR={t5X6p)0FWZT$Y)_JCSu zN;5sgbz)RQxjZzMT1&c|ZF&=U-kgxRf?9;tsv-uNd^6o4jh)R;V1cVoF)DY&DU!Jb z1r148|4!3+*~(8bGurj3zdwA%YI`!wkz8#C;MPASX)5=78Kiy4ClT9-eW9^4>J^?y zFW>I4^LKW9t_H;}UO&IkG{Mh7sqYzge^GHs$)HvHjzW3R9~nDmw<+v)oA!eP%K zi=^_y>fm1 zlAFheNjV2Uo3O)PTd?Pq8@iPHhQ%%(Q7YR1H-tXMmm1`9c7|}mGqJwmptSC&VXm6Q zhDtfd9#5e7^IEy6h9k*b-dV8`*c8Lw;N85@HAy#7ESa=OQ8&>9_F{GOsre7Db4$2L zcpr|z`Tvh!H04VTc2Po8l-r)%(H#TQD*xk#z3uUfMJ4?zCzQ1c|ApS$=DY)p4EX%- zOA#r-s2jqVN|6{!(-w>Gql{Ks-O>tk^y6;ReivQ5l%A;x&qyKKL$z3C-&Y3#iIN!y zz6~$A);Py@RGR;Spkb9r--E$~e&7`8R6h;?68*1?gX@d(gO$|ZUVE0mGqq@S5oQ!J z%0MZWiu4V}3HFSF+6`i5)d}UcTx#TLivBGhFkAwAR^C+Xu^GjIc*@OO>h9;92e&#i)Gr;JBFi!WF0a#8ur&Te&spRF`vNEG5=et z6=LDbF-a|bZ_rV+PC3EW|BnqN zfSDimc0XvRnQsW{BhRLJf08LvEctTW62ke9|B=8^j2Dm>hD-P}5A0fhRm zWH;v@ZKXL}wEdhPK}Zh%!Yw5pP$(^_-OY^+ElyZoXRv^Kbh!{Pu*Fhh<2gPPZqb2% z6g~Q2-k@TGX}6X&)RhHJS#0AUg`ntw_|EG}uyG1L{iS481(niHfE98nPFCet93;m(hF?p|a>*Km!)?VX|%yyGPn z(Y?Pva7gLJ6_Eg!cB1_bE{PjKRt#n5ho}vaRiHxa&?`3-SXlBp{t=y#xhRl?$I`~Z z0?Jl`G)KJg4{@#(SX+EpUNp%IZ-xAzyV~ zK{KK70g!(kHTskSKcTkQiLEh9ylz1X@Xg1Dom+>Z+BbBi_2t9ZJchxMo;TVIPx!vj&-X zAcB+)8IxAZas!i$wCTIs9Y;NFG2bvshNu`Cv?c|%{&Iy6l%*sFOY8g$7&Xk0Q5rsY z-{0vOn!=vWK3p&>V&Hb3LMd$gFeJ=*Nyx7|Fbe$BJ-Tj@kMcV)KwO-LzfX!MNrSaR zuwI!RJS`msJOvBzBVH^sy0IYd#yB87EXoMVf~fmm*V*NCt*ebaFyQgi-vU8b5qoS* z`utFAl-T>?+vATQN9!=J@T;G|T_uKvL|ff#POTvAd-;Sg^BT!zTIIe!JlN9Tzz+)b z)d`!7!0UDhR-56Pf`vA!6(N|Txg))aaGIOEeH#`baK zLiAsP@*z)fh%3$XogKFB(z|XiB)WlSdnfz~6yjYo>NQqaL$^dIm0ss{-ejUMk|2X< z(N=ZbT4T^&QPUG<3-Hawexf`R7aca5^&Oy4!E01OgMp1FJNX)|eiD1*%?#INutb zXe+bHS;&M1?Xk5{anoJ<_+rmjvmuAKHH6O=>rXzourh;i)RGP2QI+nmnG?&~O;*}X zn&@S08FNA==QXu;&`&9*5dD0y;d$Ip3LrY#I9S`2P(-8FMW=ase|l-XlQD)W)Ih;_ zKtPN2#Mp>Pfo6O8CitvmYjd}$;_Hix{BCjh8Y_ezy>0qQ^Sg&xj@FhF_!qEbijoqcTro#_9$~&Mt^PS(MM8d&2J= zMpk2jY9sR&PG+ZgdvKjIbh{jTp{(9egBpt%Xs%FFO6r9Neysf0=uic#_;{A$vS>9GE?u9Wqf~8Lu%x!NFp*~ZPq{02ra!vMwFN!gx%Avq?VVUAhQ_3 zG~SO;JUaXG-ZPe0uT)yLwEk!*DdNNA%h-H1t*GNh2IdE#iZYsGqv+H~b8dOb)if2@~ z^`qSUEy|iPkkW8{t@vG$DhDHe3M4xvzlb5?dH)=m-|37-j93VANu2{AxrD&l5JOPM zK6iGnED@tTeX5p^A2s>q2W%`rzIq#m5Waf3&Ws|%g`em;pg3W97et6DZVmr&M#Oz` zem(!1!%B3QJ8q^Pf-|(=cW%xPEjN;75Oj;=#sY+?Ci~(8(QRgn;vW7?0%RL0+_xe> zhl0VT7?Z(6-!curVDU2rk||3QRl|^LuU}IM!hZpnxucRcJJeS~Yw}y<4-@syac>Gz zFd^ZVL&z1ZLUG-wA|X7tVF^_l5=6^LZ+SaZ&|o(d2!ImtN|G=ulnQomEb~+&9eR2# zmQkC$k#Sd4O|jZx=T|G+z7|T3Mn|yiwg~_yPVh&o$O)dV79%nXm6YmcB?hT0b7&Au z16C};Ixc#K#N}drop1Az@XY-CjbqmUZKJYX$>v5J+-`;YpB>?N-Q~4k=cOB8Ke&TF zEstZL)ZiL)>533=+*Wrqd!!+v?HBr7;!X`hfBRPPqZ989MBGedUoZ6FHlzN*2YYsh zCb*TymZ{FcD)xl#-b3#N^|l;qd<+5{zkgJIrb{pBX{lw|d|o2CA#>+eGo>NYAauL< zd4)gh>8A|=__^i%*nRfrZ=9V!3j(1sXs!I_zpwH?=`OtIh-7^H4jK^ZAnJmK3;%}J zwvN=}Z5T<3n9|*vUC6+!l+h3fA3+lp;pje$HJ&(6<|M$yt)@$td2BWsO*vJCO|-$E z0_{VX=H42yn^_}pM2XzMTEQFEBZL$bCGTJ z4+%z$3ani^(K{Z+9&kbE=s`Um^}&-vsrXCyD1Mk@@MyiYLY5pfL>uRHT+Qt7nhvDH zhI@`mCAShAttV)JN8|N{i;HW9D+EIVn*1lwjsmg zC-AJPVuqe#W_naa_5)ML2G*`o=yvteE)OJh3;^Fsci8o0L}In<5r!Zc8wFBJYWo87 zHsD)wT|;G*37e{SVkrb0snl8|&JL66TftiZ6qFjSv4O zbO-}T{>#M!vYY=f4*whVPzl!Y-W-4}xLJ!sD#ob!F@e|&xLCSdYK*z!A2a~UmO1_> zH2-%l16#X1y>!!Z@L?Emcq_~YLKsm9zm$$ia0Yww*XdJ7jFBTNlK&|TJiaou^sToz zc#|(rx=3hbFB-CGF9i7PUILgx-$|qQ{whpdU43|t2WYJuhlj;6I%xo(E-bAQtNWon zfPpXh^H{!Qh1nl35AQotr}9)7_vZY~BYDUFnfIj#^WS)1dHO(a*|F z^_=5Ib?8N+Jo}u>{cm2IFz}{;y^$rA70!NkrMN!}{Le{%>ZNpA24KeJx=GE+k0n#-$pc;ES@gMgR4+l3EFsMJt@Tr;jbHa#Mu6upT9j3ZPCEc-p{H2h${N$*C!Zv z4zuDdZ0mHk(ejli+NFppR_l-5*fuA2w4|)w{t2TWLqp>vEC~lnMmfYV(tNU`ZZ`; zEP0a_4Eelv?BgSH8X5~Q@rntl^>_HDFJjB;cGITL^c#V1=w-f*1*3UePbUzn>d21hw@l69cUiY zxW%zqY^@c$Qfui|K})dI9i`C8v=jC_w;?r%YFb{P0b zUgDesK#LxD{VcaTcy%D3*No7v_`~|%gu0<1{ImnNwKR%+K=F6PXgb>%M4|B3C|`>>hX&Hlj^vzh`KU_jpN4Lu7N zXf=A_H6y3>Ca=8+%s(uc7?_jO%j^By@Bw2L1SpqQ|F7iRX2thy=5Ut2r~l%}{fC3g zy({b3wXSh%iszB2^ba5N?E!%idrWO}1O_<(bW?z%iJ^r0X7*^NKLwQHL;MShsJJ6T z{}j3Dd+z(+N$=?|!lZ8Y;=WBZrk{WkLJX_J&!Qr#rjpj87{Yx3fhre|uaS)R#0cDV z`e}MAEsnlxDqcsonHM~cX*($y?S9Dkqunxu9&e}_CNK1gIiScC!-a5AQBt}q|0MqL z6g(i^wb4j#qDS)7cg$09n9vZFpSz}|X`G)gU9rbzyD$_LI(?bSINN3hHGCi!$%e+9 zO_nm?Wj{*>3_2d5R>4})-}1{gG8ERtHW{#gOLh9$k37>+R$@``>f6x3eqZGsf(yui z>Pa<)geq4k9(~jcp|Cc$ms7`ToZoE(1;&^67f*$z28EsauZP+Og*N--Nh2HF4Z{L5bXpGDB5Z(x%6I}7$O$P@v`4X%0~VO zWODDMk2@_W9K99?U^*_wLhA5nY>ywgy4$(L%e1J*k}J!H2#FM3E4vi*NuI*C*D-E} zb=>1#Cn&Owq9fdJ?HSV3Wt0XiW=Ql;=cpMliq4GrR2J)-loE zseCbY+PRO%S=FA0MRa$uXdv}a*`R++5(znds3RI1WX+wntmq2rKx}wer-sBAR*TP0 zMDb`k>At!TRPr__k5|)SwC~-?WZU9_qfu3J^j+F>;`fl}VCaMR-8aQqUB%pWy`3?y zv>pJZ(=1q6w^>i_h0&ChqJIR*=jw&MW`A)!$XzaOJ!Q{|Oga1_lDwMaeg(Nnc+$^q ztE}|7ln~KMKQl43g(3y8nFEYfU}sgOu2{U0@5C&VPaixV#jXm=h@iAL|AfELBqxlEG{lZ zWzqvF_enAY{gR%C@$e8>b+PxOIY-7I7Y+Rk-5O8S_`XLi`bhYNX>oS(PSEP{UvQkN9uup$hd;_ak&c{yFLO@2_2q@nGkdy4$*KEZi)q>b}oi^!-|Nqjl9VG_&AAM?;%I ze-HjDS5GsGe*-b=rfU>uHhWL@7(`BqcV;yJbaQUZx>RMYE2O-$;U9~Gu#2LQXRrtnN<1OR+9L`xQ&$BABr%J#-&SFOY z;jaAdz@x2n9q;Oh@yi(}^zvEoTr7({H%7*Xr0k1=!uLF4nZZ(N99BJ|MVMcDG8!Uw z5=*3CJcd5iR96WW$XS^L9tK4~#2{OCb0lqTNbrqluLlnFD|aN@e|8&Q$E2wv9N#)y z)vVF@K)ga(x~Ml5x6zT_9TcYWM4uU66%Zd!xB6(v^w-^8?V$1+U(@s9!*?Rh-XF2V z4e!yNw@QNkHIoki%p@c*liMvH^bmh$1=H9zCRzCmg&jbCmNnb|x#tNHg_yO{TxN58 z_-?L^h*;McXQ!>GMR4C@SF0CLDGQ}l*m&A9HN^o@6scL(i3ECVYa2z>b?k_MT&WxMI@w-!y_V(+htJvTZQ2=^BEi ziS9Ob<{6)kO65u=>hnIqH1e-F?aipnCs0AaFL7X}_iTfIR?Ym5cF4qh^-QQH-2S$x z7t?P;%&MMuU1)bGH=htQo#plkkTP?84<5>jUGt)~MD@>l4yn=Z?(h8U#PZZ-Masg0 zIX73$wuw1$deU8FpS86z z)oTg1zwaC=9$RAS@;=o;t@&AY8flJO1+MyOO*RumP0p7sZv{{%Hn|-I-1gyZ?0n=q z3Xv8uJ8*>dtVFS~>2|04Dbwl(RY@}Mz>QE;#8zp3FDk;AYs!PQ+_P~U-H@CTGR?JH zVK>T~m6!g5jV$DI5uwy7FmWaSOq?Y!aXD68cSq{rJxS;e6B|Z)==9F>tYLk8)dj@Yho+9UXOKm;=XcWz7cN>Jv|nfvp%Zx`7+*~{e6ubk#7C4L z&fdlPTNXQ!VDRUj@fZ#J982&Ya@=iq;OjoxIMmdO_2bsBf3$2a*dUEPRy|jauB>%cyvMC=w%UuxjyPX)QC5b9SF!Y9`LjMu|v^s_Re>UyG=q z5`}kdCp+Sj=^xdOjeGgQQqn*DNt3q*mA)$pjQUM*9$}{4Gdx~3lH6J<*i8Lx$?P-! zpVl4Wj&lg-4*wGlSpY?7Z=bhjTEIWlPOAX=dPFP)%HL{8KHkD^phuam7SqBSdv29Cx3#a!`hIH9*hO65yz$a z4EauilC4G0-L zsad_me8O0*Qi3z6|2%)X9^z7h>?JUUzusu7=pM+)$Ypz4ljEQYyMXb&(fN{=Z?%GE zU`B%<(SemJl|#!;;i{c=~};qB=THQ!iNO;hW9SEf7ZE+8&Q34L@Sz;!QFYY%t>i-vhNxrea~_(t$mD8X%< z6O@KKOmy2@z({Azr-yAtU7w&hXQ?ubudQP(YW<1CWK&X;p>jsdZw;Q`>Pc_pgetDG zBC!9Ly$I2)c2o$kE9x;k{mQ3%8_wV;gQ(~bitu1htQcqlc{ct-SpLbG&#rBUg$K?o z5}Sfy+=Fw@9;Yii&`L|D%X+d0#%ou}yLhCSK%+{d+wUUYihx z>|$jtvZUnr8~mP-sNexL1JoD<2lYk*`$cLyD=VC!h*;+h&efhYM?KZcN}7@1H+pif zdh-ra_g{Qchv7ON)fs4?IYFnju=0^3ee(?dRzubT~5Ec3hYUpq+Rery%gvv z6G9I82t~y^EW$jO2t&)%H(IUd^wWYHG+`QQ5e#-Spho&gz7Al9L`inHV}Lq%U9J{> zxheQn_BGRt*p(anVYEJq<$+@|BZs}x@%L0KgNH{Dn&)I&4LlmMR;uqiUQueT4-+W!+mlY!{2L!)2LIh&)x< zBKJw7bTD}PgCjH^Ey-IVLCTlN>xujfEo^4^2`6fBDu$$gn`82O8zRDEc`EjXwSrn; zvMd>{s*3!5YSt-OJ=X&d8M||>{WieU;&}^e!C`1EH##DFEw*Rxo?x=KAl4aQ+zF@J z^YR255L7I9v43%Ft#!NqVI#B1#*lw=!`y$ud(0phasZVnL6Nl4ic9Ym`p6F#Wy z32|F$+es+S>-X$&)?S!W@RIg^2_q0`U-e0sqKtiIg%Wcf1E=Jt zMqKBh`nnk2RcPIPVMS3yTKxLR6^$FAeM&u4W3NbvNdBn785zHV`8YJct_Wg7dk)#5 z%?<$+EP;|5?AGdc*@Qm^R`>`IBR=46%QMHiMd@gN#O>7NDCf^35Yr8C@`Tfy;Mcvrn2)7#k5OV;6_g-OjqgL&7IXx3pH|npsn)BTM3F z2^^*AhZyMj9xc*LtB$0t;P5J|KKmKYQ_}AHSYJi0gip8p(e2@nj6=VGwqe+ zxyP`AG?^>H@Nu%S14X$*QpWuV8RmY$h!|K~$XQ7RMIjWNZ!S!;b{l6sgsO!n)d-!+ zoo=*lCbS(e3|L#8`RK%@Aix=N-ilg-*uB*pbADY$PaPjDBczPhD+BLa#G=QrVUorc2uSTMeY`lRJ^2h++28G$9u;o38*z zxIG_z6ABczcthXh{h6+H3A~`dOt!&eiOn4PO+P0KSQZri?Rk)2t{xip+L(jw<@TWe zW${BjnC5Ni(A6W~X6SuRM>^$=_uo6ytrCXDF9}s#JkwX)HbN#z3wAhYfa+`>E7*KK zL0_NxRzjp!n4W-IT8YtzkTA+ZAtw+T;c;it44?#U?)p(nJl0^Ok9wi*i#tk*U1(d8 zJK&udkh`rooHm-`@pfF2Ae?>Ir@TNvtl>NJ8=-XhXrUYT{C&QE^^Q@hUA(cY z>`glbZks%yh^+thDO|I_t@Azq-Z6Qr9eC$1Z>^dvj1YDgAY9*gVFM*R82r{Aj8&u=MDfAhmpr+V1SX~t zsj0n>gBH-~-)7EEg)!=q{_-LJXz&$Tfz!SD<;mXSjPV1dS}b-oHN>es_haxshJyU% zV*_k9;U*TI#s~*yAmiz3MJq;d7ECCr12ar|UwJ3PtHrNk#_p7vIL4={3!eGe*5Cn# z=ZcFKmIOj1<@BJeWBjxy&o6x(#>5xHB4 zwdQMuTGE85!`2_J`R>R~@Hw}&JInGy*Xy?!aIRDQD)6uw3u^Baq-4YET9?(w1yr*d zdPTa|_R?AI$UM+Flk+x*kooRBW8cj^!&Ru>vz06%+skP7?wqGb*;2rVQn>3*E)I8y z6OHUquQI?Kul7$>&feV`XRk(3cGk_|`>(LeGmS@vtOdkB27JC4<6wClq!;elF?({( zL8$J`zT5RdabtTyY))|N>K;ZxyIt*oBWi`yU@0|JynO359Lz3Bh!!Bch-n8;R^ppR)M#6vUk^j%CmjC~9RZ*q)tCz=F zC!CF~Er1^u4cP%=#kRJ!K%-tILoI16JUqN}F--I0#afZsIm7dt8!T_d%IRm=A*sXJ z(#eAFM0bymTPG{cn=@}Pz5^i;29u9x@c0D=!sSb+{vz_agP1GV!N&gC*4EZ1_B4(Nlw9VSeH_yL-Og98{-=SFv6uNpPb z+8EBjU`rmGjEw9Y{IN)(Kqh*e+6n;6Gh7_Qae$JW`;tv8X-Jynt}elmBqk^z1m2_t z8W;z*VtoLHTb1W}x#RM9T+d{?DXiJ*rqn_$SDHl`E&gd!SSzcbfYST;@DLHuS^(s= zE7huh0R2wCy{s-Ser$ES?m8@QM-~zias?#wV<(y%&F>#K-^QNGW{pLe2-a?O`*>Q8 zO|RJjj0z~XwR3Xn3qm9788ow8X~IMy~gU?Tw<3Ly9a`wg`je4ujg$1=VP4F)y zJW_IUk+hQ86c+RK(^Cc+`Waw=6-L8YwpHptTV{R-hZ=UZQYM4G_2$zy3`zy0e;Kc= z2=sbSFa{2rRoYYQk+6Y!FCf zQSnc{w2+BOAux{mRX0T7bz@Ls4|jJ%>3BcavL~Ar{!>H`7!7EvFT6V#gAxRiPGx-) z4Kwgvp(uHi%m0Q286yOc--=BHB|@gRQMoP>%BVRtNDNKnvM@*$G% zB?xF7U7Ra7s`$?;l@<9^Q?lIThzMeIyE4INx8c|HA0lRB!@j@2-!z=Et-a43wvVvV zEr&S{(ink7#viyWiuk9V{f!ZqJ>LASSh-a3qVVWodLug^$SeaG7NDqZxflnbgnR$+ zpg&)s=fhYx+tC5sSlsx0C{SFu(H$;6@QxAmI8H z7WV#VrCB9SI=A{?E&w4`a$tU8q3Cb)4}1awCYLka8`UiJKzDAyf}`Qx=}_g={#%0p z5Rdzfe`qM8+wDo|OII5U<1lhe^W)6;GHYwtp}F_Y(mgKgc9h;LDFywp-; za927us0iD^{#6lrZv9N~&tyUwUk!EnaEd;Vx?RWh=YaSDy?@2k!zRF04C=gIj`LBw zD%t~W#XkW3$fLwR-2q11yHL&#>xKByZ}vLiGFZU4MCn<94D6s%rYYxo`uA_{MMf?l zpRGrT)Y-_O0ykWWD(m zqD%_b9by{|3kx$_0i-!N@f2I{cTz9rUY{;eWHNb6W4}L+@_TbBDJh4&2?27QIVx*w zCnwgO(bR&N@1LAcL4xC-Tlp|Tpl;(*b~rXA#d2?GZj96i*QHcjY^8Ojxr* zw(*6-!E9a!QOg(_eu9L8+CJrSK6y_@wz{k&2E4Cx1kb@3a_ZAyuy1rN7e!cXt2wm& z_Li&_B(j^MC>fL*TjyBP*$R?giz4K#)3o2JyZhhX+m-@2K&!7Leg!lx-O&m2yfGne z+g~l0hydSKxJUi@6`zM^Pnt6bZ>cY<=qKS71wm}$KtltT!OrroAOD`Z-y9Xi=-`FnbD%#zT*tPz+iXBSJwGcAp+fKvMQ+?7 zfl5kA2$C=Gy1Z%2N+r+K6;v-d6TqtC;_!VD1jR8o+le~h7D^aEnG0BWLAG0eRjTiR zH@v>J^;`Z|Vb%63vd9_lzWHS^B9ka|78^76m~`S z1^(Lbu$(U(Pm)QokI0>IDG!qZUk#r6AO{RCoCMCput#5KojpHpc&BQNNr>mTB=bGZqaG?;-UDS5eB%Q zt=>>z{85Zh)p0smwH{ znwpx)d_}gTI6=Aq zEcGZSd9gRnT4$p*JExz`2OX>Qlg$>yTVQ;>02T%K8~Wua+giuUidNqH8IRYOM}{)Z zM&FfY=Pkg7s9k{`7`;&>LW)ynv4E%7J6UerG{nKd>FDf)$j{FQ65KylJuam!R$G8Q zj_F0sca{Ju%18O^k&963h0yQe1P)^3nOco9b#sgoqrEq!&@@C>s*Gp0r&m9F1*ycd zA0qSxBs+&cJIg=BvroXhJ5$-P^G6#V?0+d3cw_Q9jCDP>#0sVxM==v)FS!IvL~Qlv!7G1`QBAO^cK1n+~z;@_F? z^o8Sz)Tc_7s)>f-kgSrMlVJG+pld`+{Pi;X~{kmBU&iG>qyW+12|+1%Wm0HQxzEV;aB zX+;v(7f^wRe?saSw%(1iV7sdtUl`x4zV8xFm@S?kll|=nE+|E`s%sr{=^8?s7%%qkjS3#CC6j#MZ8Ky3yYF69t9- zY>66RA2VJ;dv5!3ZO^pdYv6ofPtMXlk4n!IAR}>lClW(!H0Np|o;$g({}sSrc1A6z z9to(_kZT~xpdEB0K|WCn@**hFd;SP#8BNW_#pQ9k;yhnv6v`etJ+Xh{tq<&IT|nOz zc9)E4J0SMFzuX0u8clvNp;dW+-!tj{pxvgNxKpi)L+f5M?zwwkR@=pH2mDTXa(ChU zi8q4kQeJJ1dtfb58ILNAT41<8FvJ7qO<%p`mwx^XV?g^a5YtAj&s*KC3R2bZy#TFRjOX=TUuHwi3@I9thbJ=U-QC?h=|ym$c6%%=k$ma z;?zj z#17ozmlsSgf-oOn&E-2=gs$)e-5HzgXNeVKa99y@|DJU@iH8}@43mI;0>!a5R}%4iNfN8x`)D zueI@TIv)75t-1)Mi3sJ(ISGo#N z;memKjppW}KCe-}v<9JfsBgNe-atrt?#_fohiK8^`H^ddg?%V5^^6lUHx=d1Hv@v) zx4uX-3GMCe9{0dL*R!x)@YM;tS9$l-&|QaQd_coalJ}<8pGoQByjm1}++dtMW_Rjb zwtXx*T`G;d_ywy^e48(^N0c`1&eTPFV)k-(Txkr7My2cnHp!F(CtrSuI0g{*#xk6r zpKn?mg|Rv?X&E!g&W^~9lL~^L*?BiFs%T}v($%rJ5P;Bl=#9< zG#sE6iran%41TghYdWoAZ!ScZvT@ilQ5}x>BZ?p{UgCr2B&=xl50V`OP(}1bRR^hD zh6o|ckB*gGh?^^~YfH$b_VbgbT&StYYBKFXD28m?8JWKI=}}4tNX=7Lb!c*~|1ETX zOO*XnV}m~V=MM&D^eQPo{+iyM6(TO&l^iluYBZd{?tW9^Ve9CK z`LAO!2QU~A4ldOX1GkI6!Edda09q7KSb_#oQCS(?&g*=V_RlX(^Sz!Q&TelL8CuF(X?}VJVk6+Bh7!+w zaCd*dF_kB^`B$D!y#^k*AqHjf%-dEGBkJ|APnndQ92^_U?)mUlxkQyjhCV(v7UTaa z@4BLz3c584N>>o1Nk{3u_ee+SMY6@YS6icy-&A#nsiXd=)wo zyRfJ9?Cjpa2#H5WNB4*1_WlIpFf70VGA0mn8WmF_Vb@8-s2E@dgu@>`P+Y?p%l2RT z5SZGp_P$thvM)xY?2n zU>j=(LjPZtmQo%*|Go!!XbvD6|Naht35DX)H33SPN5bLvxl*0~_9X+T1|=8m!Px;A zSOTg8T?Z8V2jGVSc<(F#qBPvc}j4)FS}UZL4<6Z_RH+h6y;>|yo9m-j}2w7~sy!i+|0cp(EF-DD*| z)yT5xkD=7^{F*cX6axHbcz98Mxa(_JfmTU6Th3yB2s%sOenx=jYna9f-2V!kyX4)+ zI?&|YSEK}LbmT?vR|vx(8rK!9^NWRmc*vftjObQ^ya%v-4kYm9-+b~;I?9>iA7%~Y z<^7NJN8Wq3lR`YV4k( zbf_HT4_&~$113;l!H(a}Rq@@{Tua;1sj=FU2$xMNf?5e$-*mZ&w=Pr1!f!mu0kF*Y zaJ<=4@!$o(-z1NcCUhmNv%`~iMIk2JyT%Q4ucIau5ap_? zyoEQu@S2u7MSc-N@Km_-5X8jj1M{+1UJpb?!}b=cIdCdEvIp``IXP1MPA=MiEu&LVkJCST z*e4{Sg9!bc>rg<8N0Wmg#N^b~Lv$Spi;N7|qApXl_e{IDX}*17imDveqh~Hy(PWyX zU8`juHJrBF-7?PEWfBqUA1r?PeV@WLxv(O5T3#}-LYvSPf47AY8^Vm2L4k*DrGaAvx|-SD4H!x1h(!(U-lepn#Df`Yk^V z$2!G^_OUyQ?`K{6+v6XU2KanLTc|nKIotA_paOSc)zDXhHP%NcGg*woR~pIDgK+O| zOK~Ashdg@UcqrM>Y7d9~>5wy)<>G!Lwq|J2**7wd<9v;LzNE~@V zUoTH|=WBx@4y#@(iTvrux>M}&L;bKpc4I#*;=!@Ba}Um(Ng&R!mgd>WdM))J-TJDP zqu}hNy!73ia#p_5w7zED{-(J+Q~@mTNUHWEn>Cgk)0}ysmTq5Jkw4Nv-YoZO&Omz- zd|$d7x_;TA<}q5%_&Eo?Pr>B#8N)GL*YL=FXNx#MV^vE5Gv4We$j>5bsiI=9BC-Yqtgc@FU6J+y0p_EDHl_+_kBC z;K-&4Q9-W5QB?_rN}Xucnz!X6;$AP5rNIQb2x(kbz7uksGWU8_z*2_!?@JKMzM4Cb zEnhPkvAevZ+;a8&f*0b!QQ z;vdHO)AqMWSDEdC!*EXYXE{p-Xw|r9Yjw(4DoJmDT2zaCgrB<6@waDvK%Ps-=hQva z+dYq=tJYZ9-+oPBc6di>!9ZQ3f~}fyXdR1Vz;8T7DmHmjVhM6GBW!vf?Bi_ z=VThBVCxOGA#1}f{aGfg&wmBkRphbnd1E669GS(eR4-2f+&~Yt&mT7N=abAS>A>>!e^I+lAi0Qw23Di_Kjg*P>J|lu&O3972*fwra z)m^&s_eHV=@P_Heu)FEdJR+y>JkRWh#3<7``H_^8G4m8|W6jXnrl#iPaCLW=x9x7u zcZ9&!$^?k9kHFm&?KviU-s{{IA7{2J89Y4;M!#`Ok_gczwAgWu3WLFM3ajEDFgMVpz-{Rr+|q6*_b6C1BTHf_EuiD1ZOZW5_xPt~2Y> zY0g3hl2yC%%w5Fs^Twk|e_=PJsU}W6 z%K^;ar=YuEZ9i3nu-3e6-)*r~_>=9l5gu+cu5t$a&9Cy$-W5Z=Z}J+O6*^b*3x6chHfxn&g( zE^s}VsUA3<*=@bk)*~GJvY>Z6-5JZI3l^zmg(VqG38mY}@3k2^4*MOo5_A0BC_(H% zD|6R1m_<&p0KI@EXX6eh`@Mi`>*NXl$yFNwWg~>XE|tl$Gd9Jy^3D?0ss^XKfTk4M zgExLORXm;hd0IJ?+4fL6=yuJ=&`8r`GOg<5c7{Ll{0fh(D%fB92$rh{M9YAOUR_}O zGjpc|HqXbm6(W~LSTMmMYl!qthL|ZrEJUiS3&YZUA5C?nba5L7o?1&YgN&vax!9+2 zF{o%@UO|iB7lb$Q!w2jy*NP~^WeaSq^qNJ)lYD438oucc{YdA}sY|`Md)YATnw~OH zZAdJs<`CAtXp#fPJ1j|0{&Tb=~(aK+w0h+%C^-K)naoJ=mh zx(k|HTEcfOkLgMk)~}Udf31YxaEcZ?COOi95HA=_>OmW3viEdHMOYwo`j(I3R8h^V z_{%jR;+%V-4Qqc0((kF;Yj;ZL660c&#HMiqApS*lOZ93$I9Om;#&{{`4-^&$IZZf8 zgACoXJy?BSwf5p%G{Mn4^d*EUS*v!&|Ka{IT~2F`0O?%60#r-pH}fhpQ?L?_CR`Wo zYLpv4V-!I9TSxU_8ZgtVhD>W{;M@Zi5xn5qKq8)qav2;(#rV=k%<`$2+0}R~60KXl zan~O@N`un(`b*LM^CHV?c^*x3{@~|r3VQJEK{vqQVhPcDavP#FEtvRm$lxNr2gsFn z@I+)lQX}k^C7vt2Y`;RpX1&3u4$G1sN;~fSJ7SMw8zs!QUzPsFvfTCfJU2`A+wi!m zp?Et^?Sn;A+(W$P(ko1&)d`fGBT|wyv_AMLKvz9ETSu)_?@^FH#(eCu_wop&SG@wl zR-+dPDL=8G$Es5F7K~ExVGF=d+Wt}h5qqMl(4c$#fo|av+k)KEA@=1R)2*}bj73QU zi79;ncnYWmbXZg#sn)}D5Ab;wOzf&y&|`iPf=qwMxqz!Y|DkO+SQGGgZmc&a=j)n{ zjC$Mb>&8?u_jECL<I;#YYNuD?!@s&k zP!r*56b+6{nFD@WQ~q3zzK+@?x4P7!4KfFyY*)_S;Mb=YjU|=)RH4lb(gsfadODml zbmnyDiN1PzE>oa3IsaV~B<#0;uJ`-K;sH!it{CC-D;pE+3H$(cb*p?{RW(%gdh!i# zh44W))|?S+=pDe{vs3_Awn54k;+9-}ErG5CoEt{TAzqkBYM^Tl5J= zW1FA~6HCfsIS+ef$G4)AUBus~kCyv z9TF0^@|p(u8-Kx%av5S@Fe#79gM$#|aal7Q!A`?nMp_nFg@HL86NK{`w#y|Jcux`sbcf6$r zqT%P5JyU~ucU1&0jJiF~mezXOd%k3GD$D=e2~u;d;w9)}0D$zj@;P{(dp4#9<8nz` z%hj%8-x|3Gr}t$(OUq2rUMjq4IKV$K-!mz5KPN)BTG((wGanoQ6J$Mwi>ZSxPF-EO_t83UApVYVaZ8^;ooR1w_ZYWKvQp@YSwC9aEJZu@hwpG= ze2+x9aq{dp6&_H9-A2OgDysHP(ukhcCokW48DJlaz+1}$eP=PJzYj0YNlYqS80(xK z$$$Kip(5F_Q5dwO&fAimqv)6b@srw6d~|ua!Q+?C&(T=SD7P!{e6ReHTE=VZTT4;U zZc}^w=5*`o`1%58Oqi>C?Q1Buhplqw&LPTjEyi4@F0tWjVqb#DP|fU<5$x!JjUi*= z&vrigPMsIXsJVW}_niA5_duISi(Sgi(tC&}tnc4C33Llme`t_IOw+wyCt?#-M2t(3 zlr}jN8#hLn?KBxaz6j+W7H<4y-n%N1WY9Q(!{+}X=CDP%>B>zZT3LU}wX+aqGpmeh zZAtrn@xea6Wwo~%;oGk`HrH)(PHK!dw%qF`OhVMDVMgK}M)9hy=Hd;#)8Y}av0}j# zwf@+L@Oi@!R(VCl@ehY_GyMC%j*vbO-x@NtOy7p7l>8X464`XM%}_cm1j&kA(w@}K z`;VzNihb%FGU1IIDR!hr9FhG!cEic61h6x4pWXU}`j6qD9Hrigc^5w(gxTWJQys9A zmcXOdcO7+oPs1PHQO+T2iD{8Ux7mE*Su zy_(o|%>5Eo)zyW3z#XzLlFtX{q4J5?!6~16xM_f}-&5$!E~Ir2d?P3(E_g#f6n_c--PB*-*dd~4)J#wTI1mR+i7N!wU!Eb3hPy+{V}VN@OI#%G literal 0 HcmV?d00001 From a9fe8142ad9c76a0377f4899ebbcce9705ed0f44 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Mon, 23 Mar 2026 09:42:53 -0700 Subject: [PATCH 094/164] updated publishing dates --- .../config-scheduler-profiles.png | Bin .../default-config-scheduler-comparison.png | Bin .../hero-image.png | Bin .../index.md | 2 +- .../kube-scheduler-scheduling-phases-diagram.png | Bin 5 files changed, 1 insertion(+), 1 deletion(-) rename website/blog/{2025-12-16-aks-config-scheduler-profiles-preview => 2026-3-31-aks-config-scheduler-profiles-preview}/config-scheduler-profiles.png (100%) rename website/blog/{2025-12-16-aks-config-scheduler-profiles-preview => 2026-3-31-aks-config-scheduler-profiles-preview}/default-config-scheduler-comparison.png (100%) rename website/blog/{2025-12-16-aks-config-scheduler-profiles-preview => 2026-3-31-aks-config-scheduler-profiles-preview}/hero-image.png (100%) rename website/blog/{2025-12-16-aks-config-scheduler-profiles-preview => 2026-3-31-aks-config-scheduler-profiles-preview}/index.md (99%) rename website/blog/{2025-12-16-aks-config-scheduler-profiles-preview => 2026-3-31-aks-config-scheduler-profiles-preview}/kube-scheduler-scheduling-phases-diagram.png (100%) diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/config-scheduler-profiles.png b/website/blog/2026-3-31-aks-config-scheduler-profiles-preview/config-scheduler-profiles.png similarity index 100% rename from website/blog/2025-12-16-aks-config-scheduler-profiles-preview/config-scheduler-profiles.png rename to website/blog/2026-3-31-aks-config-scheduler-profiles-preview/config-scheduler-profiles.png diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/default-config-scheduler-comparison.png b/website/blog/2026-3-31-aks-config-scheduler-profiles-preview/default-config-scheduler-comparison.png similarity index 100% rename from website/blog/2025-12-16-aks-config-scheduler-profiles-preview/default-config-scheduler-comparison.png rename to website/blog/2026-3-31-aks-config-scheduler-profiles-preview/default-config-scheduler-comparison.png diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/hero-image.png b/website/blog/2026-3-31-aks-config-scheduler-profiles-preview/hero-image.png similarity index 100% rename from website/blog/2025-12-16-aks-config-scheduler-profiles-preview/hero-image.png rename to website/blog/2026-3-31-aks-config-scheduler-profiles-preview/hero-image.png diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-3-31-aks-config-scheduler-profiles-preview/index.md similarity index 99% rename from website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md rename to website/blog/2026-3-31-aks-config-scheduler-profiles-preview/index.md index 233e787dc..68f5110df 100644 --- a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-3-31-aks-config-scheduler-profiles-preview/index.md @@ -1,7 +1,7 @@ --- title: "AKS Configurable Scheduler Profiles (preview)" description: "Optimize GPU and CPU utilization and align pod placement to your critical workloads at scale with Configurable Scheduler Profiles on AKS." -date: 2026-04-23 +date: 2026-03-31 authors: [colin-mixon] tags: [ai, performance, scheduler, best-practices, cost] --- diff --git a/website/blog/2025-12-16-aks-config-scheduler-profiles-preview/kube-scheduler-scheduling-phases-diagram.png b/website/blog/2026-3-31-aks-config-scheduler-profiles-preview/kube-scheduler-scheduling-phases-diagram.png similarity index 100% rename from website/blog/2025-12-16-aks-config-scheduler-profiles-preview/kube-scheduler-scheduling-phases-diagram.png rename to website/blog/2026-3-31-aks-config-scheduler-profiles-preview/kube-scheduler-scheduling-phases-diagram.png From 381c3ecd71ee34aa457d9391af79072de1fae02c Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Mon, 23 Mar 2026 09:47:56 -0700 Subject: [PATCH 095/164] Enhance FAQ section in AKS Config Scheduler Profiles Added FAQ section addressing interactions with autoscalers and recommended scoring strategy for AKS. --- .../2026-3-31-aks-config-scheduler-profiles-preview/index.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/website/blog/2026-3-31-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-3-31-aks-config-scheduler-profiles-preview/index.md index 68f5110df..2e756102d 100644 --- a/website/blog/2026-3-31-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-3-31-aks-config-scheduler-profiles-preview/index.md @@ -138,8 +138,10 @@ spec: - utilization: 100 score: 0 ``` + ### FAQ -1. How does this interact with autoscalers such as Node Auto Provisioning (NAP), Cluster Autoscaler (CAS), and Vertical Pod Autoscaler (VPA)? + +1. How does this interact with autoscalers such as Node Auto Provisioning (NAP), Cluster Autoscaler (CAS), and Vertical Pod Autoscaler (VPA)? 2. What if I don't use a resource in the scoringStrategy? Then that resource will not be considered in the filter or scoring cycles of the defined Configurable Scheduler Profile. 3. Which scoringStrategy does AKS recommend to increase node utilization? AKS recommends using the RequestedToCapacityRatio strategy because it provides a more granular scoring approach allowing users to define an ideal utilization curve for their respective nodes. From 91ae3684da0bbdc535d65ff57b8404dcddd5c6e6 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Mon, 23 Mar 2026 10:00:54 -0700 Subject: [PATCH 096/164] Fix typos and enhance clarity in AKS blog post Corrected typos and improved clarity in the blog post about AKS Configurable Scheduler Profiles. --- .../2026-3-31-aks-config-scheduler-profiles-preview/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/website/blog/2026-3-31-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-3-31-aks-config-scheduler-profiles-preview/index.md index 2e756102d..7bcc435c3 100644 --- a/website/blog/2026-3-31-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-3-31-aks-config-scheduler-profiles-preview/index.md @@ -6,7 +6,7 @@ authors: [colin-mixon] tags: [ai, performance, scheduler, best-practices, cost] --- -Data shows most Kubernetes clusters only use an average of 10% cpu utilization. While there are many factors that impact node utilization, as a core componenet of the Kuberentes control plane, the kube-scheduler has a big influence on the utilizatoin of nodes. With the introduction of Configurable Scheduler Profiles on AKS, customers now have the opportunity to increase their node utilization across CPU and GPU resources and optimize their costs with access to fine-grain pod scheduling strategies. +Data shows most Kubernetes clusters only use an average of 10% cpu utilization. While there are many factors that impact node utilization, as a core componenet of the Kuberenetes control plane, the kube-scheduler has a big influence on the utilization of nodes. With the introduction of Configurable Scheduler Profiles on AKS, customers now have the opportunity to increase their node utilization across CPU and GPU resources and optimize their costs with access to fine-grain pod scheduling strategies. [Configurable Scheduler Profiles on AKS][concepts-scheduler-configuration] allows customers to increase node utilization by defining their own scheduling logic by enabling specific policies, changing policy priority, altering parameter weight, and changing policy evaluation point (i.e. PreFilter, Filter, Score). @@ -21,7 +21,7 @@ This blog provides examples of two different scheduler profiles and details the ## How does the default Kubernetes scheduler place pods? -The Kubernetes scheduler operates across two cycles, a scheduling cycle and the binding cycle. The scheduling cycle has two sub-phases: filtering and scoring. The filter phase removes unsuitable nodes based on hard constratins and the scoring attributes a score to nodes that is most suitable for the incoming pod. The scheduler filters and scores the optimal node for a pending pod based on several hard and soft constraints, including (but not limited to): +The Kubernetes scheduler operates across two cycles, a synchronous scheduling cycle and an asynchronous binding cycle. The scheduling cycle has two sub-phases: filtering and scoring, and only manages one pod at a time. The filter phase removes unsuitable nodes based on hard constratins and the scoring phase calculates a score to the remianing nodes based on the soft contstraints, utlimaely scoring the the node most suitable for the incoming pod the highest. The binding cycle can manage multiple pods in parallel. If a pod binding to a node fails, the node with the next highest score is tried. The scheduler filters and scores the optimal node for a pending pod based on several hard and soft constraints, including (but not limited to): 1. Resource requirements (CPU, memory) 2. Node affinity/anti-affinity From df220d2d2ab0a8ef7b2918612cd829dd4124be8e Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Mon, 23 Mar 2026 10:02:34 -0700 Subject: [PATCH 097/164] Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../2026-3-31-aks-config-scheduler-profiles-preview/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/blog/2026-3-31-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-3-31-aks-config-scheduler-profiles-preview/index.md index 7bcc435c3..9906f6b98 100644 --- a/website/blog/2026-3-31-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-3-31-aks-config-scheduler-profiles-preview/index.md @@ -8,7 +8,7 @@ tags: [ai, performance, scheduler, best-practices, cost] Data shows most Kubernetes clusters only use an average of 10% cpu utilization. While there are many factors that impact node utilization, as a core componenet of the Kuberenetes control plane, the kube-scheduler has a big influence on the utilization of nodes. With the introduction of Configurable Scheduler Profiles on AKS, customers now have the opportunity to increase their node utilization across CPU and GPU resources and optimize their costs with access to fine-grain pod scheduling strategies. -[Configurable Scheduler Profiles on AKS][concepts-scheduler-configuration] allows customers to increase node utilization by defining their own scheduling logic by enabling specific policies, changing policy priority, altering parameter weight, and changing policy evaluation point (i.e. PreFilter, Filter, Score). +[Configurable Scheduler Profiles on AKS][concepts-scheduler-configuration] allows customers to increase node utilization by configuring their own scheduling logic: enabling specific policies, adjusting policy priorities, tuning parameter weights, and choosing when each policy runs (for example, during PreFilter, Filter, or Score). This blog provides examples of two different scheduler profiles and details the benefits of each to increase node utilization for AKS clusters: From d3915cc58c2942ab74b9dc90bee900c9c6d92f96 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Mon, 23 Mar 2026 10:05:17 -0700 Subject: [PATCH 098/164] Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../2026-3-31-aks-config-scheduler-profiles-preview/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/website/blog/2026-3-31-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-3-31-aks-config-scheduler-profiles-preview/index.md index 9906f6b98..5828dc266 100644 --- a/website/blog/2026-3-31-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-3-31-aks-config-scheduler-profiles-preview/index.md @@ -13,7 +13,7 @@ Data shows most Kubernetes clusters only use an average of 10% cpu utilization. This blog provides examples of two different scheduler profiles and details the benefits of each to increase node utilization for AKS clusters: 1. [How to increase AKS cluster GPU and CPU utilization with MostAllocated](#increase-aks-cluster-gpu-utilization) -2. [How to increase AKS cluster CPU utilization with MostAllocated](#increase-aks-cluster-cpu-utilization) +2. [How to increase AKS cluster CPU utilization with RequestedToCapacityRatio](#increase-aks-cluster-cpu-utilization) @@ -37,7 +37,7 @@ Today, the default scheduler on AKS lacks the flexibility for users to change wh ## Configurable Scheduler Profiles on AKS -[Configurable Scheduler Profiles on AKS][concepts-scheduler-configuration] allows customers to customers to benefit from the extensibility of the [scheduling framework][scheduling-framework-interfaces] while reducing the operational overhead of adopting a second scheduler or defininng a customer scheduler. Configurable Scheduler Profiles uses a Custom Resource Definition (CRD) that lets users define custom scheduler profiles with their own scheduling logic. A dedicated controller continuously reconciles these user-defined configurations with the underlying kube-scheduler deployment, validating changes and applying them transparently. If a configuration causes the scheduler to become unhealthy, the controller automatically rolls back to the last known good state to ensure cluster stability. This means incorrect plugins or values will not be applied. +[Configurable Scheduler Profiles on AKS][concepts-scheduler-configuration] allows customers to benefit from the extensibility of the [scheduling framework][scheduling-framework-interfaces] while reducing the operational overhead of adopting a second scheduler or defining a custom scheduler. Configurable Scheduler Profiles uses a Custom Resource Definition (CRD) that lets users define custom scheduler profiles with their own scheduling logic. A dedicated controller continuously reconciles these user-defined configurations with the underlying kube-scheduler deployment, validating changes and applying them transparently. If a configuration causes the scheduler to become unhealthy, the controller automatically rolls back to the last known good state to ensure cluster stability. This means incorrect plugins or values will not be applied. ![Architecture diagram showing how Configurable Scheduler Profiles use a CRD and controller to reconcile user-defined profiles with the kube-scheduler deployment](./config-scheduler-profiles.png) From 004b930740910a3aa032756bc71d3504ed3d02c2 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Mon, 23 Mar 2026 10:07:31 -0700 Subject: [PATCH 099/164] updated date format in folder and extended description for SEO --- .../config-scheduler-profiles.png | Bin .../default-config-scheduler-comparison.png | Bin .../hero-image.png | Bin .../index.md | 2 +- .../kube-scheduler-scheduling-phases-diagram.png | Bin 5 files changed, 1 insertion(+), 1 deletion(-) rename website/blog/{2026-3-31-aks-config-scheduler-profiles-preview => 2026-03-31-aks-config-scheduler-profiles-preview}/config-scheduler-profiles.png (100%) rename website/blog/{2026-3-31-aks-config-scheduler-profiles-preview => 2026-03-31-aks-config-scheduler-profiles-preview}/default-config-scheduler-comparison.png (100%) rename website/blog/{2026-3-31-aks-config-scheduler-profiles-preview => 2026-03-31-aks-config-scheduler-profiles-preview}/hero-image.png (100%) rename website/blog/{2026-3-31-aks-config-scheduler-profiles-preview => 2026-03-31-aks-config-scheduler-profiles-preview}/index.md (99%) rename website/blog/{2026-3-31-aks-config-scheduler-profiles-preview => 2026-03-31-aks-config-scheduler-profiles-preview}/kube-scheduler-scheduling-phases-diagram.png (100%) diff --git a/website/blog/2026-3-31-aks-config-scheduler-profiles-preview/config-scheduler-profiles.png b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/config-scheduler-profiles.png similarity index 100% rename from website/blog/2026-3-31-aks-config-scheduler-profiles-preview/config-scheduler-profiles.png rename to website/blog/2026-03-31-aks-config-scheduler-profiles-preview/config-scheduler-profiles.png diff --git a/website/blog/2026-3-31-aks-config-scheduler-profiles-preview/default-config-scheduler-comparison.png b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/default-config-scheduler-comparison.png similarity index 100% rename from website/blog/2026-3-31-aks-config-scheduler-profiles-preview/default-config-scheduler-comparison.png rename to website/blog/2026-03-31-aks-config-scheduler-profiles-preview/default-config-scheduler-comparison.png diff --git a/website/blog/2026-3-31-aks-config-scheduler-profiles-preview/hero-image.png b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/hero-image.png similarity index 100% rename from website/blog/2026-3-31-aks-config-scheduler-profiles-preview/hero-image.png rename to website/blog/2026-03-31-aks-config-scheduler-profiles-preview/hero-image.png diff --git a/website/blog/2026-3-31-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md similarity index 99% rename from website/blog/2026-3-31-aks-config-scheduler-profiles-preview/index.md rename to website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md index 5828dc266..076b53663 100644 --- a/website/blog/2026-3-31-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md @@ -1,6 +1,6 @@ --- title: "AKS Configurable Scheduler Profiles (preview)" -description: "Optimize GPU and CPU utilization and align pod placement to your critical workloads at scale with Configurable Scheduler Profiles on AKS." +description: "Optimize GPU and CPU utilization and align pod placement to your critical workloads at scale with Configurable Scheduler Profiles on AKS to optimize node cost." date: 2026-03-31 authors: [colin-mixon] tags: [ai, performance, scheduler, best-practices, cost] diff --git a/website/blog/2026-3-31-aks-config-scheduler-profiles-preview/kube-scheduler-scheduling-phases-diagram.png b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/kube-scheduler-scheduling-phases-diagram.png similarity index 100% rename from website/blog/2026-3-31-aks-config-scheduler-profiles-preview/kube-scheduler-scheduling-phases-diagram.png rename to website/blog/2026-03-31-aks-config-scheduler-profiles-preview/kube-scheduler-scheduling-phases-diagram.png From 3833ed02cf6f3289961391f35eba1260853a71ec Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Mon, 23 Mar 2026 10:09:02 -0700 Subject: [PATCH 100/164] updated config for GPU utilization --- .../2026-03-31-aks-config-scheduler-profiles-preview/index.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md index 076b53663..7aa6647cf 100644 --- a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md @@ -82,6 +82,8 @@ spec: pluginConfig: - name: NodeResourcesFit args: + apiVersion: kubescheduler.config.k8s.io/v1 + kind: NodeResourcesFitArgs scoringStrategy: type: MostAllocated resources: From b5735cef07ec556c1d239d1dca66d8a5b57aff49 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Mon, 23 Mar 2026 10:15:20 -0700 Subject: [PATCH 101/164] Fix typos and enhance Kubernetes scheduler description Corrected typos and improved clarity in the explanation of the Kubernetes scheduler's operation. --- .../2026-03-31-aks-config-scheduler-profiles-preview/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md index 7aa6647cf..5516396ac 100644 --- a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md @@ -21,7 +21,7 @@ This blog provides examples of two different scheduler profiles and details the ## How does the default Kubernetes scheduler place pods? -The Kubernetes scheduler operates across two cycles, a synchronous scheduling cycle and an asynchronous binding cycle. The scheduling cycle has two sub-phases: filtering and scoring, and only manages one pod at a time. The filter phase removes unsuitable nodes based on hard constratins and the scoring phase calculates a score to the remianing nodes based on the soft contstraints, utlimaely scoring the the node most suitable for the incoming pod the highest. The binding cycle can manage multiple pods in parallel. If a pod binding to a node fails, the node with the next highest score is tried. The scheduler filters and scores the optimal node for a pending pod based on several hard and soft constraints, including (but not limited to): +The Kubernetes scheduler operates across two cycles, a synchronous scheduling cycle and an asynchronous binding cycle. The scheduling cycle has two sub-phases: filtering and scoring, and only manages one pod at a time. The filter phase removes unsuitable nodes based on hard constraints and the scoring phase calculates a score to the remaining nodes based on the soft contstraints, utlimately the most suitable node has the highest score. The binding cycle can manage multiple pods in parallel. If a pod binding to a node fails, the node with the next highest score is tried. The scheduler filters and scores the optimal node for a pending pod based on several hard and soft constraints, including (but not limited to): 1. Resource requirements (CPU, memory) 2. Node affinity/anti-affinity From 2594b65e94f3e0ba26a4c9135abec64bde984c12 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Mon, 23 Mar 2026 10:59:05 -0700 Subject: [PATCH 102/164] Fix typos in AKS Configurable Scheduler Profiles blog Corrected spelling and capitalization errors in the introduction. --- .../2026-03-31-aks-config-scheduler-profiles-preview/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md index 5516396ac..c67850872 100644 --- a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md @@ -6,7 +6,7 @@ authors: [colin-mixon] tags: [ai, performance, scheduler, best-practices, cost] --- -Data shows most Kubernetes clusters only use an average of 10% cpu utilization. While there are many factors that impact node utilization, as a core componenet of the Kuberenetes control plane, the kube-scheduler has a big influence on the utilization of nodes. With the introduction of Configurable Scheduler Profiles on AKS, customers now have the opportunity to increase their node utilization across CPU and GPU resources and optimize their costs with access to fine-grain pod scheduling strategies. +Data shows most Kubernetes clusters only use an average of 10% CPU utilization. While there are many factors that impact node utilization, as a core component of the Kubernetes control plane, the kube-scheduler has a big influence on the utilization of nodes. With the introduction of Configurable Scheduler Profiles on AKS, customers now have the opportunity to increase their node utilization across CPU and GPU resources and optimize their costs with access to fine-grained pod scheduling strategies. [Configurable Scheduler Profiles on AKS][concepts-scheduler-configuration] allows customers to increase node utilization by configuring their own scheduling logic: enabling specific policies, adjusting policy priorities, tuning parameter weights, and choosing when each policy runs (for example, during PreFilter, Filter, or Score). From 4faa6bd859663985b7c0d1803d269d17afbba750 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Mon, 23 Mar 2026 11:01:10 -0700 Subject: [PATCH 103/164] Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md index c67850872..b72680ec4 100644 --- a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md @@ -53,12 +53,12 @@ Adjust resource weights, utilization thresholds, and plugin parameters to match ## Increase Node Utilization and Operator Control -Configurable Scheduler Profiles using the `NodeResourcesFit` plugin shows a visible consolidation pattern that differs from the default scheduler's logic. As result, platform engineers gain more control and resources are used more efficiently when using AKS. +Configurable Scheduler Profiles using the `NodeResourcesFit` plugin shows a visible consolidation pattern that differs from the default scheduler's logic. As a result, platform engineers gain more control and resources are used more efficiently when using AKS. ![Table showing increased node utilization with the node bin packing scheduler profiles versus the pod distribution using the default scheduler](./default-config-scheduler-comparison.png) ### Increase AKS Cluster GPU Utilization -Additionally, customers running GPU-dependent applications like batch jobs will benefit from improved bin-packing and increased GPU utilization. For example, scheduling jobs on nodes with a higher relative GPU utilization, can reduce costs while maintaining performance. +Additionally, customers running GPU-dependent applications like batch jobs will benefit from improved bin-packing and increased GPU utilization. For example, scheduling jobs on nodes with a higher relative GPU utilization can reduce costs while maintaining performance. **This scheduler configuration maximizes provisioned GPU resource by consolidating smaller jobs onto fewer nodes, lowering the operational cost of underutilized resources without sacrificing performance.** @@ -143,7 +143,7 @@ spec: ### FAQ -1. How does this interact with autoscalers such as Node Auto Provisioning (NAP), Cluster Autoscaler (CAS), and Vertical Pod Autoscaler (VPA)? +1. How does this interact with autoscalers such as Node Auto Provisioning (NAP), Cluster Autoscaler (CAS), and Vertical Pod Autoscaler (VPA)? Configurable Scheduler Profiles change how pods are placed on nodes, while autoscalers still make scaling decisions based on their existing metrics and pending pods, so they work together without disabling one another. 2. What if I don't use a resource in the scoringStrategy? Then that resource will not be considered in the filter or scoring cycles of the defined Configurable Scheduler Profile. 3. Which scoringStrategy does AKS recommend to increase node utilization? AKS recommends using the RequestedToCapacityRatio strategy because it provides a more granular scoring approach allowing users to define an ideal utilization curve for their respective nodes. From 1fc238efc9486f0fef2f3577b842acc6d359d954 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Mon, 23 Mar 2026 11:05:26 -0700 Subject: [PATCH 104/164] Fix typos and enhance clarity in scheduler documentation Corrected typos and improved clarity in the explanation of the Kubernetes scheduler's operation and plugin configuration. --- .../index.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md index b72680ec4..9dfa8923b 100644 --- a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md @@ -21,7 +21,7 @@ This blog provides examples of two different scheduler profiles and details the ## How does the default Kubernetes scheduler place pods? -The Kubernetes scheduler operates across two cycles, a synchronous scheduling cycle and an asynchronous binding cycle. The scheduling cycle has two sub-phases: filtering and scoring, and only manages one pod at a time. The filter phase removes unsuitable nodes based on hard constraints and the scoring phase calculates a score to the remaining nodes based on the soft contstraints, utlimately the most suitable node has the highest score. The binding cycle can manage multiple pods in parallel. If a pod binding to a node fails, the node with the next highest score is tried. The scheduler filters and scores the optimal node for a pending pod based on several hard and soft constraints, including (but not limited to): +The Kubernetes scheduler operates across two cycles, a synchronous scheduling cycle and an asynchronous binding cycle. The scheduling cycle has two sub-phases: filtering and scoring, and only manages one pod at a time. The filter phase removes unsuitable nodes based on hard constraints and the scoring phase calculates a score to the remaining nodes based on the soft constraints, ultimately the most suitable node has the highest score. The binding cycle can manage multiple pods in parallel. If a pod binding to a node fails, the node with the next highest score is tried. The scheduler filters and scores the optimal node for a pending pod based on several hard and soft constraints, including (but not limited to): 1. Resource requirements (CPU, memory) 2. Node affinity/anti-affinity @@ -79,6 +79,8 @@ spec: - name: ImageLocality - name: NodeResourcesFit - name: NodeResourcesBalancedAllocation + disabled: + - name: PodTopologySpread pluginConfig: - name: NodeResourcesFit args: @@ -113,6 +115,8 @@ spec: multiPoint: enabled: - name: NodeResourcesFit + disabled: + - name: PodTopologySpread pluginConfig: - name: NodeResourcesFit args: From c7fc1053a8da0f0037db6d1efc0904dcb7ea2e09 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Mon, 23 Mar 2026 11:10:10 -0700 Subject: [PATCH 105/164] Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../2026-03-31-aks-config-scheduler-profiles-preview/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md index 9dfa8923b..ab17b3541 100644 --- a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md @@ -21,7 +21,7 @@ This blog provides examples of two different scheduler profiles and details the ## How does the default Kubernetes scheduler place pods? -The Kubernetes scheduler operates across two cycles, a synchronous scheduling cycle and an asynchronous binding cycle. The scheduling cycle has two sub-phases: filtering and scoring, and only manages one pod at a time. The filter phase removes unsuitable nodes based on hard constraints and the scoring phase calculates a score to the remaining nodes based on the soft constraints, ultimately the most suitable node has the highest score. The binding cycle can manage multiple pods in parallel. If a pod binding to a node fails, the node with the next highest score is tried. The scheduler filters and scores the optimal node for a pending pod based on several hard and soft constraints, including (but not limited to): +The Kubernetes scheduler operates in two cycles: a synchronous scheduling cycle and an asynchronous binding cycle. The scheduling cycle has two sub-phases, filtering and scoring, and only manages one pod at a time. During the filter phase, the scheduler removes unsuitable nodes based on hard constraints. During the scoring phase, it calculates a score for the remaining nodes based on soft constraints; ultimately, the most suitable node has the highest score. The binding cycle can manage multiple pods in parallel. If binding a pod to a node fails, the scheduler tries the node with the next highest score. The scheduler filters and scores the optimal node for a pending pod based on several hard and soft constraints, including (but not limited to): 1. Resource requirements (CPU, memory) 2. Node affinity/anti-affinity From ecd97de6fce913f12e081493fa8fed0aef23cbc5 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Mon, 23 Mar 2026 13:11:42 -0700 Subject: [PATCH 106/164] Delete website/blog/2026-03-31-aks-config-scheduler-profiles-preview/default-config-scheduler-comparison.png --- .../default-config-scheduler-comparison.png | Bin 62972 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 website/blog/2026-03-31-aks-config-scheduler-profiles-preview/default-config-scheduler-comparison.png diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/default-config-scheduler-comparison.png b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/default-config-scheduler-comparison.png deleted file mode 100644 index 5be78d23f6a7871cb49b0b22220a1ed558d7d3a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62972 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 Date: Mon, 23 Mar 2026 13:11:53 -0700 Subject: [PATCH 107/164] Add files via upload --- .../default-config-scheduler-comparison.png | Bin 0 -> 47648 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 website/blog/2026-03-31-aks-config-scheduler-profiles-preview/default-config-scheduler-comparison.png diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/default-config-scheduler-comparison.png b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/default-config-scheduler-comparison.png new file mode 100644 index 0000000000000000000000000000000000000000..89452abd7bc0174316433111e3fad092e0d8107a GIT binary patch literal 47648 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 aJK8mT*%?)%D|!s{OZJ`8+e%5Jp#KGDIJk5G literal 0 HcmV?d00001 From 025f06d44de2a21cdcab31f8228b22eb74c813d2 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Mon, 23 Mar 2026 14:29:58 -0700 Subject: [PATCH 108/164] Enhance blog on AKS Configurable Scheduler Profiles Revise blog content to improve clarity on AKS Configurable Scheduler Profiles, including updated examples and recommendations for increasing node utilization. Adjust sections on scheduler operations and limitations to reflect new insights and best practices. --- .../index.md | 114 ++++++++++-------- 1 file changed, 65 insertions(+), 49 deletions(-) diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md index ab17b3541..bdd94052c 100644 --- a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md @@ -6,14 +6,15 @@ authors: [colin-mixon] tags: [ai, performance, scheduler, best-practices, cost] --- -Data shows most Kubernetes clusters only use an average of 10% CPU utilization. While there are many factors that impact node utilization, as a core component of the Kubernetes control plane, the kube-scheduler has a big influence on the utilization of nodes. With the introduction of Configurable Scheduler Profiles on AKS, customers now have the opportunity to increase their node utilization across CPU and GPU resources and optimize their costs with access to fine-grained pod scheduling strategies. +On average, Kubernetes clusters reach [10% CPU utilization][cast-ai-k8s-cost-report] and most Kubernetes containers use less than [25% of their requested CPU][datadog-state-of-containers]. This data signals that underutilized resources are materially contributing to increased infrastructure cost. While there are many factors that impact node utilization, as a core component of the Kubernetes control plane, the kube-scheduler has a big influence on node utilization. With the introduction of Configurable Scheduler Profiles on AKS, customers now have the opportunity to increase their node utilization across CPU and GPU resources and optimize their costs with access to fine-grained pod scheduling strategies. [Configurable Scheduler Profiles on AKS][concepts-scheduler-configuration] allows customers to increase node utilization by configuring their own scheduling logic: enabling specific policies, adjusting policy priorities, tuning parameter weights, and choosing when each policy runs (for example, during PreFilter, Filter, or Score). -This blog provides examples of two different scheduler profiles and details the benefits of each to increase node utilization for AKS clusters: +This blog details how the default Kubernetes scheduler places pods, limitations, and provides best-practice recommendations to increase node utilization for your workloads using Configurable Scheduler Profiles on AKS. -1. [How to increase AKS cluster GPU and CPU utilization with MostAllocated](#increase-aks-cluster-gpu-utilization) +1. [How does kube-scheduler work?](how-does-the-default-kubernetes-scheduler-place-pods) 2. [How to increase AKS cluster CPU utilization with RequestedToCapacityRatio](#increase-aks-cluster-cpu-utilization) +3. [How to increase AKS cluster GPU and CPU utilization with MostAllocated](#increase-aks-cluster-gpu-utilization) @@ -21,7 +22,15 @@ This blog provides examples of two different scheduler profiles and details the ## How does the default Kubernetes scheduler place pods? -The Kubernetes scheduler operates in two cycles: a synchronous scheduling cycle and an asynchronous binding cycle. The scheduling cycle has two sub-phases, filtering and scoring, and only manages one pod at a time. During the filter phase, the scheduler removes unsuitable nodes based on hard constraints. During the scoring phase, it calculates a score for the remaining nodes based on soft constraints; ultimately, the most suitable node has the highest score. The binding cycle can manage multiple pods in parallel. If binding a pod to a node fails, the scheduler tries the node with the next highest score. The scheduler filters and scores the optimal node for a pending pod based on several hard and soft constraints, including (but not limited to): +The Kubernetes scheduler operates in two cycles: a synchronous scheduling cycle and an asynchronous binding cycle. The scheduling cycle has two sub-phases, filtering and scoring, and only manages one pod at a time. +1. **Filtering** phase removes unsuitable nodes based on hard and soft constraints. +2. **Scoring** phase calculates a score for the remaining nodes; ultimately, the most suitable node has the highest score. + +Once a node is selected, the binding cycle can process multiple pods in parallel. During this phase, the scheduler attempts to bind the pod to the chosen node. If binding a pod to a node fails, the scheduler tries the node with the next highest score. + +![Diagram of the kube-scheduler workflow showing pods entering the scheduling cycle and binding cycle to assign a pod on a node](./kube-scheduler-scheduling-phases-diagram.png) + +When filtering and scoring nodes, for the pending pod, the default scheduler considers several hard and soft constraints with predefined weights, including (but not limited to): 1. Resource requirements (CPU, memory) 2. Node affinity/anti-affinity @@ -29,11 +38,11 @@ The Kubernetes scheduler operates in two cycles: a synchronous scheduling cycle 4. Taints and tolerations 5. TopologySpreadConstraints -The default scheduler was primarily designed for general-purpose workloads and out-of-the-box pod scheduling that can be restrictive if you want to bin pack nodes since the hard and soft constraints for pod scheduling do not align with scheduling pods with nodes of higher utilization. The Kubernetes default scheduler scores nodes for workload placement based on a _LeastAllocated_ strategy, to spread across the nodes in a cluster. However, this behavior can result in inefficient resource utilization, as nodes with higher allocation are not favored. You can use `NodeResourcesFit` to control how pods are assigned to nodes based on available resources (CPU, GPU, memory, etc.), including favoring nodes with high resource utilization, within the set configuration. +### Limitations of the default Kubernetes scheduler -![Diagram of the kube-scheduler workflow showing pods entering the scheduling cycle and binding cycle to assign a pod on a node](./kube-scheduler-scheduling-phases-diagram.png) +The default scheduler is primarily designed for general-purpose workloads that prioritizes nodes with the most avaialable resources using the _LeastAllocated_ scoring strategy. This spreads pods across nodes, even when they could safely be packed more densely. While this works well for many services, the default scheduling criteria, and their fixed priority order, are not suitable for workloads that demand optimizing GPU and CPU utilization. In these scenarios, spreading pods across nodes can lead to fragmented resources, underutilized GPUs, and increased infrastructure cost. -Today, the default scheduler on AKS lacks the flexibility for users to change which criteria should be prioritized, and ignored, in the scheduling cycle on a per cluster basis. This means the default scheduling criteria, and their fixed priority order, are not suitable for workloads that demand optimizing GPU utilization for batch jobs. This rigidity often forces users to either accept suboptimal placement or manage a separate custom scheduler, both of which increase operational complexity. Starting from Kubernetes version 1.33, you can now configure and optimize a scheduler profile for your AKS cluster using Configurable Scheduler Profiles. +Today, the default scheduler on AKS lacks the flexibility for users to change which criteria should be prioritized, or ignored, in the scheduling cycle on a per cluster basis. This rigidity often forces users to either accept suboptimal placement or manage a separate custom scheduler, both of which increase operational complexity. Starting with Kubernetes v1.33, AKS introduces Configurable Scheduler Profiles, enabling customized scheduler behavior without maintaining a separate scheduler. Now, users can adjust the `NodeResourcesFit` plugin from the default configuration to favor nodes with higher utilization to achieve more efficient bin‑packing and reduce infrastructure cost. ## Configurable Scheduler Profiles on AKS @@ -41,26 +50,25 @@ Today, the default scheduler on AKS lacks the flexibility for users to change wh ![Architecture diagram showing how Configurable Scheduler Profiles use a CRD and controller to reconcile user-defined profiles with the kube-scheduler deployment](./config-scheduler-profiles.png) -A profile is a set of one or more in-tree scheduling plugins and configurations that dictate how to schedule a pod. AKS supports 18 in-tree Kubernetes [scheduling plugins][supported-in-tree-scheduling-plugins], which can be generally grouped into three categories: - -1. Scheduling constraints and order-based plugins -2. Node selection constraints scheduling plugins -3. Resource and topology optimization scheduling plugins - -:::note -Adjust resource weights, utilization thresholds, and plugin parameters to match your VM SKUs, workload patterns, and cluster topology. -::: +A profile is a set of one or more in-tree scheduling plugins and configurations that dictate how to schedule a pod. AKS supports 18 in-tree Kubernetes [scheduling plugins][supported-in-tree-scheduling-plugins]. ## Increase Node Utilization and Operator Control Configurable Scheduler Profiles using the `NodeResourcesFit` plugin shows a visible consolidation pattern that differs from the default scheduler's logic. As a result, platform engineers gain more control and resources are used more efficiently when using AKS. ![Table showing increased node utilization with the node bin packing scheduler profiles versus the pod distribution using the default scheduler](./default-config-scheduler-comparison.png) -### Increase AKS Cluster GPU Utilization +### Increase AKS Cluster CPU Utilization -Additionally, customers running GPU-dependent applications like batch jobs will benefit from improved bin-packing and increased GPU utilization. For example, scheduling jobs on nodes with a higher relative GPU utilization can reduce costs while maintaining performance. +Scoring Strategy - RequestedToCapacityRatio -**This scheduler configuration maximizes provisioned GPU resource by consolidating smaller jobs onto fewer nodes, lowering the operational cost of underutilized resources without sacrificing performance.** +For example, this bin packing strategy allows users to configure a target utilization of 85%. + +AKS recommends using the scoring strategy `RequestedToCapacityRatio` because it provides a more granular scoring approach allowing users to define an ideal utilization curve for their respective nodes. +**This scheduler configuration ensures nodes are not oversaturated.** + +:::note +Adjust resource weights, utilization thresholds, and plugin parameters to match your VM SKUs, workload patterns, and cluster topology. +::: ```yaml apiVersion: aks.azure.com/v1alpha1 @@ -72,13 +80,11 @@ spec: apiVersion: kubescheduler.config.k8s.io/v1 kind: KubeSchedulerConfiguration profiles: - - schedulerName: gpu-node-binpacking-scheduler + - schedulerName: cpu-binpacking-scheduler plugins: multiPoint: enabled: - - name: ImageLocality - name: NodeResourcesFit - - name: NodeResourcesBalancedAllocation disabled: - name: PodTopologySpread pluginConfig: @@ -87,18 +93,37 @@ spec: apiVersion: kubescheduler.config.k8s.io/v1 kind: NodeResourcesFitArgs scoringStrategy: - type: MostAllocated + type: RequestedToCapacityRatio resources: - name: cpu + weight: 8 + - name: memory weight: 1 - - name: nvidia.com/gpu - weight: 5 + requestedToCapacityRatio: + shape: + - utilization: 0 + score: 0 + - utilization: 30 + score: 8 + - utilization: 50 + score: 10 + - utilization: 85 + score: 10 + - utilization: 90 + score: 3 + - utilization: 100 + score: 0 ``` -### Increase AKS Cluster CPU Utilization +### Increase AKS Cluster GPU Utilization -Scoring Strategy - RequestedToCapacityRatio -**This scheduler configuration ensures nodes are not oversaturated.** +Additionally, customers running GPU-dependent applications like batch jobs will benefit from improved bin-packing and increased GPU utilization. For example, scheduling jobs on nodes with a higher relative GPU utilization can reduce costs while maintaining performance. + +**This scheduler configuration maximizes provisioned GPU resource by consolidating smaller jobs onto fewer nodes, lowering the operational cost of underutilized resources without sacrificing performance.** + +:::note +Adjust resource weights, utilization thresholds, and plugin parameters to match your VM SKUs, workload patterns, and cluster topology. +::: ```yaml apiVersion: aks.azure.com/v1alpha1 @@ -110,11 +135,13 @@ spec: apiVersion: kubescheduler.config.k8s.io/v1 kind: KubeSchedulerConfiguration profiles: - - schedulerName: cpu-binpacking-scheduler + - schedulerName: gpu-node-binpacking-scheduler plugins: multiPoint: enabled: + - name: ImageLocality - name: NodeResourcesFit + - name: NodeResourcesBalancedAllocation disabled: - name: PodTopologySpread pluginConfig: @@ -123,33 +150,20 @@ spec: apiVersion: kubescheduler.config.k8s.io/v1 kind: NodeResourcesFitArgs scoringStrategy: - type: RequestedToCapacityRatio + type: MostAllocated resources: - name: cpu - weight: 8 - - name: memory weight: 1 - requestedToCapacityRatio: - shape: - - utilization: 0 - score: 0 - - utilization: 30 - score: 8 - - utilization: 50 - score: 10 - - utilization: 85 - score: 10 - - utilization: 90 - score: 3 - - utilization: 100 - score: 0 + - name: nvidia.com/gpu + weight: 5 ``` ### FAQ -1. How does this interact with autoscalers such as Node Auto Provisioning (NAP), Cluster Autoscaler (CAS), and Vertical Pod Autoscaler (VPA)? Configurable Scheduler Profiles change how pods are placed on nodes, while autoscalers still make scaling decisions based on their existing metrics and pending pods, so they work together without disabling one another. -2. What if I don't use a resource in the scoringStrategy? Then that resource will not be considered in the filter or scoring cycles of the defined Configurable Scheduler Profile. -3. Which scoringStrategy does AKS recommend to increase node utilization? AKS recommends using the RequestedToCapacityRatio strategy because it provides a more granular scoring approach allowing users to define an ideal utilization curve for their respective nodes. +1. Which Bin packing strategy does AKS recommend to increase node utilization? AKS recommends using the scoring strategy `RequestedToCapacityRatio` because it provides a more granular scoring approach allowing users to define an ideal utilization curve for their respective nodes. For example, this bin packing strategy allows users to configure a target utilization of 85%. +2. How does this interact with autoscalers such as Node Auto Provisioning (NAP), Cluster Autoscaler (CAS), and Vertical Pod Autoscaler (VPA)? Configurable Scheduler Profiles change how pods are placed on nodes, while autoscalers make scaling decisions based on their existing metrics and pending pods, so they work together without disabling one another. **NAP**, is triggered when pods are unscheduable, so if a suitable node is found that Pod will be scheduled with the defined Configurable Scheduler Profile. For the **Cluster Autoscaler**, the cluster autoscaler scales nodes and is triggered when there aren't any suitable nodes available. Lastly, **VPA** optimizes resource utilization patterns in pods, so as pods are recreated they will be scheduled using the scheudler profile with the updated resource requests provided by VPA. +3. What if a resource is omitted in the `scoringStrategy` like `memory`? If a resource is omitted in the `scoringStrategy`, then that resource will not be considered in the filter or scoring cycles of the defined Configurable Scheduler Profile. If that resource should be considered, but with a reduced influence on the final score, it can be included with reduced weight. + ## Next Steps: Optimize Azure resources and test Configurable Scheduler Profiles on AKS @@ -165,3 +179,5 @@ With Configurable Scheduler Profiles, teams gain fine-grained control over pod p [scheduling-framework-interfaces]: https://kubernetes.io/docs/concepts/scheduling-eviction/scheduling-framework/#interfaces [supported-in-tree-scheduling-plugins]: https://learn.microsoft.com/azure/aks/concepts-scheduler-configuration#supported-in-tree-scheduling-plugins [node-bin-packing-configurations]: https://learn.microsoft.com/azure/aks/configure-node-binpack-scheduler?tabs=new-cluster +[datadog-state-of-containers]: https://www.datadoghq.com/state-of-containers-and-serverless/ +[cast-ai-k8s-cost-report]: https://cast.ai/reports/kubernetes-cost-benchmark/ From 323c6a203b7a6dc4766bb577d522bffc74c6dcb0 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Mon, 23 Mar 2026 14:46:13 -0700 Subject: [PATCH 109/164] Revise FAQ on Configurable Scheduler Profiles and autoscalers Updated FAQ section to clarify interactions between Configurable Scheduler Profiles and autoscalers, including Node Auto Provisioning, Cluster Autoscaler, and Vertical Pod Autoscaler. Enhanced explanations for resource omission in scoring strategy. --- .../index.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md index bdd94052c..d0aec91c4 100644 --- a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md @@ -161,8 +161,11 @@ spec: ### FAQ 1. Which Bin packing strategy does AKS recommend to increase node utilization? AKS recommends using the scoring strategy `RequestedToCapacityRatio` because it provides a more granular scoring approach allowing users to define an ideal utilization curve for their respective nodes. For example, this bin packing strategy allows users to configure a target utilization of 85%. -2. How does this interact with autoscalers such as Node Auto Provisioning (NAP), Cluster Autoscaler (CAS), and Vertical Pod Autoscaler (VPA)? Configurable Scheduler Profiles change how pods are placed on nodes, while autoscalers make scaling decisions based on their existing metrics and pending pods, so they work together without disabling one another. **NAP**, is triggered when pods are unscheduable, so if a suitable node is found that Pod will be scheduled with the defined Configurable Scheduler Profile. For the **Cluster Autoscaler**, the cluster autoscaler scales nodes and is triggered when there aren't any suitable nodes available. Lastly, **VPA** optimizes resource utilization patterns in pods, so as pods are recreated they will be scheduled using the scheudler profile with the updated resource requests provided by VPA. -3. What if a resource is omitted in the `scoringStrategy` like `memory`? If a resource is omitted in the `scoringStrategy`, then that resource will not be considered in the filter or scoring cycles of the defined Configurable Scheduler Profile. If that resource should be considered, but with a reduced influence on the final score, it can be included with reduced weight. +2. How does Configurable Scheduler Profiles interact with autoscalers such as Node Auto Provisioning (NAP), Cluster Autoscaler (CAS), and Vertical Pod Autoscaler (VPA)? These componenents are complimentary to each other. Configurable Scheduler Profiles influences how pods are placed on nodes, while autoscalers make scaling decisions based on resource utilization and pending pods. + - **Node Auto Provisioning (NAP)** is triggered when pods are unscheduable. If a suitable node already exists, that pod will be scheduled with the defined Configurable Scheduler Profile. If no suitable node exists, NAP provisions new capacity, after which the pod is scheduled according to the selected profile. + - **Cluster Autoscaler (CA)** maanages node scale-up and scale-down. On scale-up, CA is triggered when there aren't any suitable nodes available for the pending pod. Using the Configurable Scheduler Profiles ensure nodes are only scaled when provisioned resources are no longer suitable. On scale-down, CA is triggered when nodes fall below utilization thresholds, the default is 50%. As active nodes are packed more efficiently, underutilized nodes become easier candidates for removal. + - **VPA** optimizes resource utilization patterns in pods. As pods are recreated with updated CPU and memory requests, they are scheduled using the configured scheduler profile, allowing placement decisions to reflect the new resource requirements. +4. What if a resource is omitted in the `scoringStrategy` like `memory`? If a resource is omitted in the `scoringStrategy`, then that resource will not be considered in the filter or scoring cycles of the defined Configurable Scheduler Profile. If that resource should be considered, but with a reduced influence on the final score, it can be included with reduced weight. ## Next Steps: Optimize Azure resources and test Configurable Scheduler Profiles on AKS From 6f31bb6cc1b720c071019f82df37807e661f6e62 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Mon, 23 Mar 2026 14:54:22 -0700 Subject: [PATCH 110/164] Update website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../2026-03-31-aks-config-scheduler-profiles-preview/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md index d0aec91c4..16814328a 100644 --- a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md @@ -12,7 +12,7 @@ On average, Kubernetes clusters reach [10% CPU utilization][cast-ai-k8s-cost-rep This blog details how the default Kubernetes scheduler places pods, limitations, and provides best-practice recommendations to increase node utilization for your workloads using Configurable Scheduler Profiles on AKS. -1. [How does kube-scheduler work?](how-does-the-default-kubernetes-scheduler-place-pods) +1. [How does kube-scheduler work?](#how-does-the-default-kubernetes-scheduler-place-pods) 2. [How to increase AKS cluster CPU utilization with RequestedToCapacityRatio](#increase-aks-cluster-cpu-utilization) 3. [How to increase AKS cluster GPU and CPU utilization with MostAllocated](#increase-aks-cluster-gpu-utilization) From 21490f950e401ea0d0a37e0bc468647521c29f68 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Mon, 23 Mar 2026 14:55:46 -0700 Subject: [PATCH 111/164] Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../index.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md index 16814328a..3c2533a6a 100644 --- a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md @@ -40,7 +40,7 @@ When filtering and scoring nodes, for the pending pod, the default scheduler con ### Limitations of the default Kubernetes scheduler -The default scheduler is primarily designed for general-purpose workloads that prioritizes nodes with the most avaialable resources using the _LeastAllocated_ scoring strategy. This spreads pods across nodes, even when they could safely be packed more densely. While this works well for many services, the default scheduling criteria, and their fixed priority order, are not suitable for workloads that demand optimizing GPU and CPU utilization. In these scenarios, spreading pods across nodes can lead to fragmented resources, underutilized GPUs, and increased infrastructure cost. +The default scheduler is primarily designed for general-purpose workloads that prioritizes nodes with the most available resources using the _LeastAllocated_ scoring strategy. This spreads pods across nodes, even when they could safely be packed more densely. While this works well for many services, the default scheduling criteria, and their fixed priority order, are not suitable for workloads that demand optimizing GPU and CPU utilization. In these scenarios, spreading pods across nodes can lead to fragmented resources, underutilized GPUs, and increased infrastructure cost. Today, the default scheduler on AKS lacks the flexibility for users to change which criteria should be prioritized, or ignored, in the scheduling cycle on a per cluster basis. This rigidity often forces users to either accept suboptimal placement or manage a separate custom scheduler, both of which increase operational complexity. Starting with Kubernetes v1.33, AKS introduces Configurable Scheduler Profiles, enabling customized scheduler behavior without maintaining a separate scheduler. Now, users can adjust the `NodeResourcesFit` plugin from the default configuration to favor nodes with higher utilization to achieve more efficient bin‑packing and reduce infrastructure cost. @@ -161,11 +161,11 @@ spec: ### FAQ 1. Which Bin packing strategy does AKS recommend to increase node utilization? AKS recommends using the scoring strategy `RequestedToCapacityRatio` because it provides a more granular scoring approach allowing users to define an ideal utilization curve for their respective nodes. For example, this bin packing strategy allows users to configure a target utilization of 85%. -2. How does Configurable Scheduler Profiles interact with autoscalers such as Node Auto Provisioning (NAP), Cluster Autoscaler (CAS), and Vertical Pod Autoscaler (VPA)? These componenents are complimentary to each other. Configurable Scheduler Profiles influences how pods are placed on nodes, while autoscalers make scaling decisions based on resource utilization and pending pods. - - **Node Auto Provisioning (NAP)** is triggered when pods are unscheduable. If a suitable node already exists, that pod will be scheduled with the defined Configurable Scheduler Profile. If no suitable node exists, NAP provisions new capacity, after which the pod is scheduled according to the selected profile. - - **Cluster Autoscaler (CA)** maanages node scale-up and scale-down. On scale-up, CA is triggered when there aren't any suitable nodes available for the pending pod. Using the Configurable Scheduler Profiles ensure nodes are only scaled when provisioned resources are no longer suitable. On scale-down, CA is triggered when nodes fall below utilization thresholds, the default is 50%. As active nodes are packed more efficiently, underutilized nodes become easier candidates for removal. +2. How does Configurable Scheduler Profiles interact with autoscalers such as Node Auto Provisioning (NAP), Cluster Autoscaler (CAS), and Vertical Pod Autoscaler (VPA)? These components are complimentary to each other. Configurable Scheduler Profiles influences how pods are placed on nodes, while autoscalers make scaling decisions based on resource utilization and pending pods. + - **Node Auto Provisioning (NAP)** is triggered when pods are unschedulable. If a suitable node already exists, that pod will be scheduled with the defined Configurable Scheduler Profile. If no suitable node exists, NAP provisions new capacity, after which the pod is scheduled according to the selected profile. + - **Cluster Autoscaler (CA)** manages node scale-up and scale-down. On scale-up, CA is triggered when there aren't any suitable nodes available for the pending pod. Using the Configurable Scheduler Profiles ensure nodes are only scaled when provisioned resources are no longer suitable. On scale-down, CA is triggered when nodes fall below utilization thresholds, the default is 50%. As active nodes are packed more efficiently, underutilized nodes become easier candidates for removal. - **VPA** optimizes resource utilization patterns in pods. As pods are recreated with updated CPU and memory requests, they are scheduled using the configured scheduler profile, allowing placement decisions to reflect the new resource requirements. -4. What if a resource is omitted in the `scoringStrategy` like `memory`? If a resource is omitted in the `scoringStrategy`, then that resource will not be considered in the filter or scoring cycles of the defined Configurable Scheduler Profile. If that resource should be considered, but with a reduced influence on the final score, it can be included with reduced weight. +3. What if a resource is omitted in the `scoringStrategy` like `memory`? If a resource is omitted in the `scoringStrategy`, then that resource will not be considered in the filter or scoring cycles of the defined Configurable Scheduler Profile. If that resource should be considered, but with a reduced influence on the final score, it can be included with reduced weight. ## Next Steps: Optimize Azure resources and test Configurable Scheduler Profiles on AKS From 274c45c7167d5e42679cb0930a98f8a156115e67 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Mon, 23 Mar 2026 15:35:48 -0700 Subject: [PATCH 112/164] Revise scheduler profiles and scoring strategy details Updated the explanation of the Kubernetes scheduler's filtering and scoring phases, added a diagram, and clarified the benefits of the RequestedToCapacityRatio scoring strategy for CPU utilization. --- .../index.md | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md index 3c2533a6a..48b3b4697 100644 --- a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md @@ -26,11 +26,7 @@ The Kubernetes scheduler operates in two cycles: a synchronous scheduling cycle 1. **Filtering** phase removes unsuitable nodes based on hard and soft constraints. 2. **Scoring** phase calculates a score for the remaining nodes; ultimately, the most suitable node has the highest score. -Once a node is selected, the binding cycle can process multiple pods in parallel. During this phase, the scheduler attempts to bind the pod to the chosen node. If binding a pod to a node fails, the scheduler tries the node with the next highest score. - -![Diagram of the kube-scheduler workflow showing pods entering the scheduling cycle and binding cycle to assign a pod on a node](./kube-scheduler-scheduling-phases-diagram.png) - -When filtering and scoring nodes, for the pending pod, the default scheduler considers several hard and soft constraints with predefined weights, including (but not limited to): +Once a node is selected, the binding cycle can process multiple pods in parallel. During this phase, the scheduler attempts to bind the pod to the chosen node. If binding a pod to a node fails, the scheduler tries the node with the next highest score. When filtering and scoring nodes, the default scheduler considers several hard and soft constraints with predefined weights, including (but not limited to): 1. Resource requirements (CPU, memory) 2. Node affinity/anti-affinity @@ -38,6 +34,8 @@ When filtering and scoring nodes, for the pending pod, the default scheduler con 4. Taints and tolerations 5. TopologySpreadConstraints +![Diagram of the kube-scheduler workflow showing pods entering the scheduling cycle and binding cycle to assign a pod on a node](./kube-scheduler-scheduling-phases-diagram.png) + ### Limitations of the default Kubernetes scheduler The default scheduler is primarily designed for general-purpose workloads that prioritizes nodes with the most available resources using the _LeastAllocated_ scoring strategy. This spreads pods across nodes, even when they could safely be packed more densely. While this works well for many services, the default scheduling criteria, and their fixed priority order, are not suitable for workloads that demand optimizing GPU and CPU utilization. In these scenarios, spreading pods across nodes can lead to fragmented resources, underutilized GPUs, and increased infrastructure cost. @@ -55,16 +53,15 @@ A profile is a set of one or more in-tree scheduling plugins and configurations ## Increase Node Utilization and Operator Control Configurable Scheduler Profiles using the `NodeResourcesFit` plugin shows a visible consolidation pattern that differs from the default scheduler's logic. As a result, platform engineers gain more control and resources are used more efficiently when using AKS. + ![Table showing increased node utilization with the node bin packing scheduler profiles versus the pod distribution using the default scheduler](./default-config-scheduler-comparison.png) ### Increase AKS Cluster CPU Utilization +`RequestedToCapacityRatio` scores nodes based on the ratio of requested resources to total node capacity after the pod is hypothetically placed. The `RequestedToCapacityRatio` scoring strategy enables more fine-grained CPU bin‑packing by allowing operators to define an ideal utilization curve for their nodes rather than simply preferring the most or least utilized nodes. Instead of aggressively packing pods onto the fullest node, this approach scores nodes based on how closely their post‑placement utilization aligns with a target range ensuring high efficiency without oversaturation. -Scoring Strategy - RequestedToCapacityRatio - -For example, this bin packing strategy allows users to configure a target utilization of 85%. +For CPU‑based workloads, this results in denser placement on active nodes while preserving headroom for bursts, background processes, and system components. By shaping the scoring curve to target a range of 50-85% CPU utilization, operators can explicitly maximize privisioned nodes while preserving headroom. Visit official bin packing [documentation][bin-packing-scoring] for more details on how a nodes score is calculated for a given set of values using `RequestedToCapacityRatio`. -AKS recommends using the scoring strategy `RequestedToCapacityRatio` because it provides a more granular scoring approach allowing users to define an ideal utilization curve for their respective nodes. -**This scheduler configuration ensures nodes are not oversaturated.** +**This bin packing profile favor nodes within a utilization band of 50-85%, avoids empty nodes, and severely deprioritize nearly full nodes at 90% utilization or more, ensuring nodes are not oversaturated. Given this level of configuration detail, `RequestedtoCapacityRatio` is the recommended scoring strategy for node bin‑packing on AKS for production clusters.** :::note Adjust resource weights, utilization thresholds, and plugin parameters to match your VM SKUs, workload patterns, and cluster topology. @@ -184,3 +181,4 @@ With Configurable Scheduler Profiles, teams gain fine-grained control over pod p [node-bin-packing-configurations]: https://learn.microsoft.com/azure/aks/configure-node-binpack-scheduler?tabs=new-cluster [datadog-state-of-containers]: https://www.datadoghq.com/state-of-containers-and-serverless/ [cast-ai-k8s-cost-report]: https://cast.ai/reports/kubernetes-cost-benchmark/ +[bin-packing-scoring]: https://kubernetes.io/docs/concepts/scheduling-eviction/resource-bin-packing/ From af2fb7870a238d2974e6a4f28b44ca9180756b41 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Mon, 23 Mar 2026 15:53:17 -0700 Subject: [PATCH 113/164] Refine blog content on AKS Configurable Scheduler Profiles Revised text for clarity and consistency regarding Kubernetes cluster CPU utilization and Configurable Scheduler Profiles. Updated YAML examples and added notes for resource adjustments. --- .../index.md | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md index 48b3b4697..964d52eed 100644 --- a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md @@ -6,7 +6,7 @@ authors: [colin-mixon] tags: [ai, performance, scheduler, best-practices, cost] --- -On average, Kubernetes clusters reach [10% CPU utilization][cast-ai-k8s-cost-report] and most Kubernetes containers use less than [25% of their requested CPU][datadog-state-of-containers]. This data signals that underutilized resources are materially contributing to increased infrastructure cost. While there are many factors that impact node utilization, as a core component of the Kubernetes control plane, the kube-scheduler has a big influence on node utilization. With the introduction of Configurable Scheduler Profiles on AKS, customers now have the opportunity to increase their node utilization across CPU and GPU resources and optimize their costs with access to fine-grained pod scheduling strategies. +As reported by CastAI, the average Kubernetes clusters only reaches [10% CPU utilization][cast-ai-k8s-cost-report] and Datadog finds most Kubernetes containers use less than [25% of their requested CPU][datadog-state-of-containers]. This data signals that underutilized resources are materially contributing to increased infrastructure cost. While there are many factors that impact node utilization, as a core component of the Kubernetes control plane, the kube-scheduler has a big influence on node utilization. With the introduction of Configurable Scheduler Profiles on AKS, customers now have the opportunity to increase their node utilization across CPU and GPU resources and optimize their costs with access to fine-grained pod scheduling strategies. [Configurable Scheduler Profiles on AKS][concepts-scheduler-configuration] allows customers to increase node utilization by configuring their own scheduling logic: enabling specific policies, adjusting policy priorities, tuning parameter weights, and choosing when each policy runs (for example, during PreFilter, Filter, or Score). @@ -22,7 +22,8 @@ This blog details how the default Kubernetes scheduler places pods, limitations, ## How does the default Kubernetes scheduler place pods? -The Kubernetes scheduler operates in two cycles: a synchronous scheduling cycle and an asynchronous binding cycle. The scheduling cycle has two sub-phases, filtering and scoring, and only manages one pod at a time. +The Kubernetes scheduler operates in two cycles: a synchronous scheduling cycle and an asynchronous binding cycle. The scheduling cycle has two sub-phases, filtering and scoring, and only manages one pod at a time. + 1. **Filtering** phase removes unsuitable nodes based on hard and soft constraints. 2. **Scoring** phase calculates a score for the remaining nodes; ultimately, the most suitable node has the highest score. @@ -48,7 +49,7 @@ Today, the default scheduler on AKS lacks the flexibility for users to change wh ![Architecture diagram showing how Configurable Scheduler Profiles use a CRD and controller to reconcile user-defined profiles with the kube-scheduler deployment](./config-scheduler-profiles.png) -A profile is a set of one or more in-tree scheduling plugins and configurations that dictate how to schedule a pod. AKS supports 18 in-tree Kubernetes [scheduling plugins][supported-in-tree-scheduling-plugins]. +A profile is a set of one or more in-tree scheduling plugins and configurations that dictate how to schedule a pod. AKS supports 18 in-tree Kubernetes [scheduling plugins][supported-in-tree-scheduling-plugins]. ## Increase Node Utilization and Operator Control @@ -57,14 +58,15 @@ Configurable Scheduler Profiles using the `NodeResourcesFit` plugin shows a visi ![Table showing increased node utilization with the node bin packing scheduler profiles versus the pod distribution using the default scheduler](./default-config-scheduler-comparison.png) ### Increase AKS Cluster CPU Utilization -`RequestedToCapacityRatio` scores nodes based on the ratio of requested resources to total node capacity after the pod is hypothetically placed. The `RequestedToCapacityRatio` scoring strategy enables more fine-grained CPU bin‑packing by allowing operators to define an ideal utilization curve for their nodes rather than simply preferring the most or least utilized nodes. Instead of aggressively packing pods onto the fullest node, this approach scores nodes based on how closely their post‑placement utilization aligns with a target range ensuring high efficiency without oversaturation. -For CPU‑based workloads, this results in denser placement on active nodes while preserving headroom for bursts, background processes, and system components. By shaping the scoring curve to target a range of 50-85% CPU utilization, operators can explicitly maximize privisioned nodes while preserving headroom. Visit official bin packing [documentation][bin-packing-scoring] for more details on how a nodes score is calculated for a given set of values using `RequestedToCapacityRatio`. +`RequestedToCapacityRatio` scores nodes based on the ratio of requested resources to total node capacity after the pod is _hypothetically_ placed. This strategy enables more fine-grained bin‑packing by allowing operators to define an ideal utilization curve for their nodes rather than simply preferring the most or least utilized nodes. + +By shaping the scoring curve to target a range of 50-85% CPU utilization, operators can increase pod density on privisioned nodes while preserving headroom for bursts, background processes, and system components in CPU-based workloads. [Configure node bin-packing][configure-requested-to-capacity] using the RequestedtoCapacity strategy to improve utilization and reduce infrastructure costs. -**This bin packing profile favor nodes within a utilization band of 50-85%, avoids empty nodes, and severely deprioritize nearly full nodes at 90% utilization or more, ensuring nodes are not oversaturated. Given this level of configuration detail, `RequestedtoCapacityRatio` is the recommended scoring strategy for node bin‑packing on AKS for production clusters.** +**This bin packing profile is configured to favor nodes within a utilization band of 50-85%, avoiding empty nodes, and severely deprioritizing nearly full nodes at 90% utilization or more, to limit versaturated nodes. Given this level of configuration detail, `RequestedtoCapacityRatio` is the recommended scoring strategy for node bin‑packing on AKS for production clusters.** :::note -Adjust resource weights, utilization thresholds, and plugin parameters to match your VM SKUs, workload patterns, and cluster topology. +Scoring strategy can be used for GPU alos. Adjust resources, resource weights, utilization thresholds, and plugin parameters to match your VM SKUs, workload patterns, and cluster topology. ::: ```yaml @@ -92,7 +94,7 @@ spec: scoringStrategy: type: RequestedToCapacityRatio resources: - - name: cpu + - name: cpu // weight: 8 - name: memory weight: 1 @@ -114,12 +116,12 @@ spec: ### Increase AKS Cluster GPU Utilization -Additionally, customers running GPU-dependent applications like batch jobs will benefit from improved bin-packing and increased GPU utilization. For example, scheduling jobs on nodes with a higher relative GPU utilization can reduce costs while maintaining performance. +Additionally, customers running GPU-dependent applications like batch jobs will benefit from improved bin-packing and increased GPU utilization. For example, scheduling jobs on nodes with a higher relative GPU utilization can reduce costs while maintaining performance. [Configure node bin-packing][configure-most-allocated] using the MostAllocated strategy to improve utilization reduce infrastructure costs. **This scheduler configuration maximizes provisioned GPU resource by consolidating smaller jobs onto fewer nodes, lowering the operational cost of underutilized resources without sacrificing performance.** :::note -Adjust resource weights, utilization thresholds, and plugin parameters to match your VM SKUs, workload patterns, and cluster topology. +Adjust resources, resource weights, utilization thresholds, and plugin parameters to match your VM SKUs, workload patterns, and cluster topology. ::: ```yaml @@ -164,7 +166,6 @@ spec: - **VPA** optimizes resource utilization patterns in pods. As pods are recreated with updated CPU and memory requests, they are scheduled using the configured scheduler profile, allowing placement decisions to reflect the new resource requirements. 3. What if a resource is omitted in the `scoringStrategy` like `memory`? If a resource is omitted in the `scoringStrategy`, then that resource will not be considered in the filter or scoring cycles of the defined Configurable Scheduler Profile. If that resource should be considered, but with a reduced influence on the final score, it can be included with reduced weight. - ## Next Steps: Optimize Azure resources and test Configurable Scheduler Profiles on AKS With Configurable Scheduler Profiles, teams gain fine-grained control over pod placement strategies like bin-packing, topology distribution, and resource-based scoring that directly addresses challenges related to application resilience and resource utilization for their AKS clusters. By leveraging these scheduling plugins, AKS users can ensure their workloads make full use of available GPU capacity, reduce idle costs, and avoid costly overprovisioning. This not only improves ROI but also accelerates development by allowing more jobs to run concurrently and reliably. @@ -181,4 +182,5 @@ With Configurable Scheduler Profiles, teams gain fine-grained control over pod p [node-bin-packing-configurations]: https://learn.microsoft.com/azure/aks/configure-node-binpack-scheduler?tabs=new-cluster [datadog-state-of-containers]: https://www.datadoghq.com/state-of-containers-and-serverless/ [cast-ai-k8s-cost-report]: https://cast.ai/reports/kubernetes-cost-benchmark/ -[bin-packing-scoring]: https://kubernetes.io/docs/concepts/scheduling-eviction/resource-bin-packing/ +[configure-requested-to-capacity]: https://learn.microsoft.com/azure/aks/configure-node-binpack-scheduler?tabs=new-cluster#configure-node-bin-packing-with-requestedtocapacity-plugin +[configure-most-allocated]: https://learn.microsoft.com/azure/aks/configure-node-binpack-scheduler?tabs=new-cluster#configure-node-bin-packing-with-mostallocated-plugin From e747ad8ea87b0f7b33bfa88bbd3cba7b0c920d40 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Mon, 23 Mar 2026 16:23:13 -0700 Subject: [PATCH 114/164] Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../index.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md index 964d52eed..7455ba8f9 100644 --- a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md @@ -6,7 +6,7 @@ authors: [colin-mixon] tags: [ai, performance, scheduler, best-practices, cost] --- -As reported by CastAI, the average Kubernetes clusters only reaches [10% CPU utilization][cast-ai-k8s-cost-report] and Datadog finds most Kubernetes containers use less than [25% of their requested CPU][datadog-state-of-containers]. This data signals that underutilized resources are materially contributing to increased infrastructure cost. While there are many factors that impact node utilization, as a core component of the Kubernetes control plane, the kube-scheduler has a big influence on node utilization. With the introduction of Configurable Scheduler Profiles on AKS, customers now have the opportunity to increase their node utilization across CPU and GPU resources and optimize their costs with access to fine-grained pod scheduling strategies. +As reported by CastAI, on average Kubernetes clusters only reach [10% CPU utilization][cast-ai-k8s-cost-report] and Datadog finds most Kubernetes containers use less than [25% of their requested CPU][datadog-state-of-containers]. This data signals that underutilized resources are materially contributing to increased infrastructure cost. While there are many factors that impact node utilization, as a core component of the Kubernetes control plane, the kube-scheduler has a big influence on node utilization. With the introduction of Configurable Scheduler Profiles on AKS, customers now have the opportunity to increase their node utilization across CPU and GPU resources and optimize their costs with access to fine-grained pod scheduling strategies. [Configurable Scheduler Profiles on AKS][concepts-scheduler-configuration] allows customers to increase node utilization by configuring their own scheduling logic: enabling specific policies, adjusting policy priorities, tuning parameter weights, and choosing when each policy runs (for example, during PreFilter, Filter, or Score). @@ -61,12 +61,12 @@ Configurable Scheduler Profiles using the `NodeResourcesFit` plugin shows a visi `RequestedToCapacityRatio` scores nodes based on the ratio of requested resources to total node capacity after the pod is _hypothetically_ placed. This strategy enables more fine-grained bin‑packing by allowing operators to define an ideal utilization curve for their nodes rather than simply preferring the most or least utilized nodes. -By shaping the scoring curve to target a range of 50-85% CPU utilization, operators can increase pod density on privisioned nodes while preserving headroom for bursts, background processes, and system components in CPU-based workloads. [Configure node bin-packing][configure-requested-to-capacity] using the RequestedtoCapacity strategy to improve utilization and reduce infrastructure costs. +By shaping the scoring curve to target a range of 50-85% CPU utilization, operators can increase pod density on provisioned nodes while preserving headroom for bursts, background processes, and system components in CPU-based workloads. [Configure node bin-packing][configure-requested-to-capacity] using the `RequestedToCapacityRatio` strategy to improve utilization and reduce infrastructure costs. -**This bin packing profile is configured to favor nodes within a utilization band of 50-85%, avoiding empty nodes, and severely deprioritizing nearly full nodes at 90% utilization or more, to limit versaturated nodes. Given this level of configuration detail, `RequestedtoCapacityRatio` is the recommended scoring strategy for node bin‑packing on AKS for production clusters.** +**This bin packing profile is configured to favor nodes within a utilization band of 50-85%, avoiding empty nodes, and severely deprioritizing nearly full nodes at 90% utilization or more, to limit oversaturated nodes. Given this level of configuration detail, `RequestedToCapacityRatio` is the recommended scoring strategy for node bin‑packing on AKS for production clusters.** :::note -Scoring strategy can be used for GPU alos. Adjust resources, resource weights, utilization thresholds, and plugin parameters to match your VM SKUs, workload patterns, and cluster topology. +Scoring strategy can be used for GPU also. Adjust resources, resource weights, utilization thresholds, and plugin parameters to match your VM SKUs, workload patterns, and cluster topology. ::: ```yaml @@ -94,7 +94,7 @@ spec: scoringStrategy: type: RequestedToCapacityRatio resources: - - name: cpu // + - name: cpu weight: 8 - name: memory weight: 1 @@ -116,7 +116,7 @@ spec: ### Increase AKS Cluster GPU Utilization -Additionally, customers running GPU-dependent applications like batch jobs will benefit from improved bin-packing and increased GPU utilization. For example, scheduling jobs on nodes with a higher relative GPU utilization can reduce costs while maintaining performance. [Configure node bin-packing][configure-most-allocated] using the MostAllocated strategy to improve utilization reduce infrastructure costs. +Additionally, customers running GPU-dependent applications like batch jobs will benefit from improved bin-packing and increased GPU utilization. For example, scheduling jobs on nodes with a higher relative GPU utilization can reduce costs while maintaining performance. [Configure node bin-packing][configure-most-allocated] using the MostAllocated strategy to improve utilization and reduce infrastructure costs. **This scheduler configuration maximizes provisioned GPU resource by consolidating smaller jobs onto fewer nodes, lowering the operational cost of underutilized resources without sacrificing performance.** From e15dfee3c5bd17a09ff5a82c24a7daafae8f343c Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Mon, 23 Mar 2026 17:02:09 -0700 Subject: [PATCH 115/164] Revise blog on AKS Configurable Scheduler Profiles Updated the blog post to clarify the benefits of Configurable Scheduler Profiles on AKS, including improvements in CPU and GPU utilization. Enhanced explanations of scheduling strategies and their impact on resource efficiency and cost optimization. --- .../index.md | 38 +++++++++++++------ 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md index 7455ba8f9..50ebe59a4 100644 --- a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md @@ -6,15 +6,15 @@ authors: [colin-mixon] tags: [ai, performance, scheduler, best-practices, cost] --- -As reported by CastAI, on average Kubernetes clusters only reach [10% CPU utilization][cast-ai-k8s-cost-report] and Datadog finds most Kubernetes containers use less than [25% of their requested CPU][datadog-state-of-containers]. This data signals that underutilized resources are materially contributing to increased infrastructure cost. While there are many factors that impact node utilization, as a core component of the Kubernetes control plane, the kube-scheduler has a big influence on node utilization. With the introduction of Configurable Scheduler Profiles on AKS, customers now have the opportunity to increase their node utilization across CPU and GPU resources and optimize their costs with access to fine-grained pod scheduling strategies. +As reported by CastAI, on average Kubernetes clusters only reach [10% CPU utilization][cast-ai-k8s-cost-report] and Datadog finds most Kubernetes containers use less than [25% of their requested CPU][datadog-state-of-containers]. This data signals that underutilized resources are materially contributing to increased infrastructure cost. While there are many factors that impact node utilization, as a core component of the Kubernetes control plane, the kube-scheduler has a big influence on node utilization. -[Configurable Scheduler Profiles on AKS][concepts-scheduler-configuration] allows customers to increase node utilization by configuring their own scheduling logic: enabling specific policies, adjusting policy priorities, tuning parameter weights, and choosing when each policy runs (for example, during PreFilter, Filter, or Score). +With the introduction of[Configurable Scheduler Profiles][concepts-scheduler-configuration] on AKS, customers now have the opportunity to increase their node utilization across CPU and GPU resources and optimize their costs with access to fine-grained pod scheduling strategies by configuring their own scheduling logic: enabling specific policies, adjusting policy priorities, tuning parameter weights, and choosing when each policy runs (for example, during PreFilter, Filter, or Score). This blog details how the default Kubernetes scheduler places pods, limitations, and provides best-practice recommendations to increase node utilization for your workloads using Configurable Scheduler Profiles on AKS. 1. [How does kube-scheduler work?](#how-does-the-default-kubernetes-scheduler-place-pods) -2. [How to increase AKS cluster CPU utilization with RequestedToCapacityRatio](#increase-aks-cluster-cpu-utilization) -3. [How to increase AKS cluster GPU and CPU utilization with MostAllocated](#increase-aks-cluster-gpu-utilization) +2. [How to increase AKS cluster CPU utilization with Configurable Scheduler](#increase-aks-cpu-utilization) +3. [How to increase AKS cluster GPU and CPU utilization with Configurable Scheduler](#increase-aks-gpu-utilization) @@ -53,11 +53,15 @@ A profile is a set of one or more in-tree scheduling plugins and configurations ## Increase Node Utilization and Operator Control -Configurable Scheduler Profiles using the `NodeResourcesFit` plugin shows a visible consolidation pattern that differs from the default scheduler's logic. As a result, platform engineers gain more control and resources are used more efficiently when using AKS. +In this simple scale-out scenario, manually increasing replicas from 8 to 30 with identical pod specs, the default scheduler distributes pods evenly across nodes. The Configurable Scheduler Profiles using the `NodeResourcesFit` plugin are introduced shows a visible consolidation pattern that differs from the default scheduler's logic. Instead of spreading pods evenly, the scheduler begins to intentionally concentrate workloads onto fewer nodes. This shift occurs without changing the workload, node size, or autoscaling behavior - only the scheduler’s scoring logic. + +While this experiment uses intentionally simple, CPU-bound containers to isolate scheduling behavior, the placement patterns observed here generalize to more complex workloads where consolidation and utilization efficiency matter. This change in distribution shape enables downstream efficiencies: improved control for platform engineers, efficient resource usage, and cost optimization that are difficult to achieve when pods are evenly spread. ![Table showing increased node utilization with the node bin packing scheduler profiles versus the pod distribution using the default scheduler](./default-config-scheduler-comparison.png) -### Increase AKS Cluster CPU Utilization +The key takeaway is not that each profile expresses a distinct scheduling intent. The next two sections detail how MostAllocated and RequestedToCapacityRatio achieve these outcomes. + +### Increase AKS CPU Utilization `RequestedToCapacityRatio` scores nodes based on the ratio of requested resources to total node capacity after the pod is _hypothetically_ placed. This strategy enables more fine-grained bin‑packing by allowing operators to define an ideal utilization curve for their nodes rather than simply preferring the most or least utilized nodes. @@ -114,11 +118,13 @@ spec: score: 0 ``` -### Increase AKS Cluster GPU Utilization +### Increase AKS GPU Utilization -Additionally, customers running GPU-dependent applications like batch jobs will benefit from improved bin-packing and increased GPU utilization. For example, scheduling jobs on nodes with a higher relative GPU utilization can reduce costs while maintaining performance. [Configure node bin-packing][configure-most-allocated] using the MostAllocated strategy to improve utilization and reduce infrastructure costs. +`MostAllocated` scores nodes based on their current resource utilization, favoring nodes that are already more heavily utilized. Unlike `RequestedToCapacityRatio`, it does not consider node capacity in node scoring, making it more suitable for an agressive cost-optimization scheduling strategy. When paired with MostAllocated, `NodeResourcesBalancedAllocation` complements the behoavior because it encourages pod placement on nodes with user-defined proportional utilization, helping reduce bottlenecks caused by asymmetric resource pressure. -**This scheduler configuration maximizes provisioned GPU resource by consolidating smaller jobs onto fewer nodes, lowering the operational cost of underutilized resources without sacrificing performance.** +When combined, these plugins favor GPU‑bound nodes with balanced CPU and memory usage over nodes with large amounts of unused memory or fragmented resources. This results in more efficient GPU placement and fewer partially utilized nodes.[Configure node bin-packing][configure-most-allocated] using the MostAllocated strategy to improve utilization and reduce infrastructure costs. + +**This scheduler configuration maximizes GPU utilization by consolidating smaller jobs onto fewer nodes, reducing idle accelerator capacity while maintaining reasonable CPU and memory balance.** :::note Adjust resources, resource weights, utilization thresholds, and plugin parameters to match your VM SKUs, workload patterns, and cluster topology. @@ -138,7 +144,6 @@ spec: plugins: multiPoint: enabled: - - name: ImageLocality - name: NodeResourcesFit - name: NodeResourcesBalancedAllocation disabled: @@ -151,10 +156,19 @@ spec: scoringStrategy: type: MostAllocated resources: + - name: nvidia.com/gpu + weight: 8 - name: cpu weight: 1 - - name: nvidia.com/gpu - weight: 5 + - name: NodeResourcesBalancedAllocation + args: + apiVersion: kubescheduler.config.k8s.io/v1 + kind: NodeResourcesBalancedAllocationArgs + resources: + - name: cpu + weight: 1 + - name: memory + weight: 1 ``` ### FAQ From 06f870b3b204a4bf2292ad10da323e013cbc0083 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Mon, 23 Mar 2026 17:46:52 -0700 Subject: [PATCH 116/164] Enhance clarity on AKS scheduling strategies Clarify the explanation of the 'RequestedToCapacityRatio' and 'MostAllocated' scheduling strategies for AKS, emphasizing their impact on CPU and GPU utilization. --- .../2026-03-31-aks-config-scheduler-profiles-preview/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md index 50ebe59a4..d0e49b365 100644 --- a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md @@ -61,7 +61,7 @@ While this experiment uses intentionally simple, CPU-bound containers to isolate The key takeaway is not that each profile expresses a distinct scheduling intent. The next two sections detail how MostAllocated and RequestedToCapacityRatio achieve these outcomes. -### Increase AKS CPU Utilization +### Increase AKS CPU Utilization `RequestedToCapacityRatio` scores nodes based on the ratio of requested resources to total node capacity after the pod is _hypothetically_ placed. This strategy enables more fine-grained bin‑packing by allowing operators to define an ideal utilization curve for their nodes rather than simply preferring the most or least utilized nodes. @@ -120,7 +120,7 @@ spec: ### Increase AKS GPU Utilization -`MostAllocated` scores nodes based on their current resource utilization, favoring nodes that are already more heavily utilized. Unlike `RequestedToCapacityRatio`, it does not consider node capacity in node scoring, making it more suitable for an agressive cost-optimization scheduling strategy. When paired with MostAllocated, `NodeResourcesBalancedAllocation` complements the behoavior because it encourages pod placement on nodes with user-defined proportional utilization, helping reduce bottlenecks caused by asymmetric resource pressure. +`MostAllocated` scores nodes based on their current resource utilization, favoring nodes that are already more heavily utilized. Unlike `RequestedToCapacityRatio`, it does not consider node capacity in node scoring, making it more suitable for an agressive cost-optimization scheduling strategy. When paired with MostAllocated, `NodeResourcesBalancedAllocation` complements the behoavior because it encourages pod placement on nodes with user-defined proportional utilization, helping reduce bottlenecks caused by asymmetric resource pressure. When combined, these plugins favor GPU‑bound nodes with balanced CPU and memory usage over nodes with large amounts of unused memory or fragmented resources. This results in more efficient GPU placement and fewer partially utilized nodes.[Configure node bin-packing][configure-most-allocated] using the MostAllocated strategy to improve utilization and reduce infrastructure costs. From 3ff5fdadd4f95b5561690751f4c0558211104662 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Mon, 23 Mar 2026 17:47:23 -0700 Subject: [PATCH 117/164] Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../index.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md index d0e49b365..c0fa0e4be 100644 --- a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md @@ -1,6 +1,6 @@ --- title: "AKS Configurable Scheduler Profiles (preview)" -description: "Optimize GPU and CPU utilization and align pod placement to your critical workloads at scale with Configurable Scheduler Profiles on AKS to optimize node cost." +description: "Improve GPU and CPU utilization, align pod placement to critical workloads, and reduce node costs at scale with Configurable Scheduler Profiles on AKS." date: 2026-03-31 authors: [colin-mixon] tags: [ai, performance, scheduler, best-practices, cost] @@ -8,7 +8,7 @@ tags: [ai, performance, scheduler, best-practices, cost] As reported by CastAI, on average Kubernetes clusters only reach [10% CPU utilization][cast-ai-k8s-cost-report] and Datadog finds most Kubernetes containers use less than [25% of their requested CPU][datadog-state-of-containers]. This data signals that underutilized resources are materially contributing to increased infrastructure cost. While there are many factors that impact node utilization, as a core component of the Kubernetes control plane, the kube-scheduler has a big influence on node utilization. -With the introduction of[Configurable Scheduler Profiles][concepts-scheduler-configuration] on AKS, customers now have the opportunity to increase their node utilization across CPU and GPU resources and optimize their costs with access to fine-grained pod scheduling strategies by configuring their own scheduling logic: enabling specific policies, adjusting policy priorities, tuning parameter weights, and choosing when each policy runs (for example, during PreFilter, Filter, or Score). +With the introduction of [Configurable Scheduler Profiles][concepts-scheduler-configuration] on AKS, customers now have the opportunity to increase their node utilization across CPU and GPU resources and optimize their costs with access to fine-grained pod scheduling strategies by configuring their own scheduling logic: enabling specific policies, adjusting policy priorities, tuning parameter weights, and choosing when each policy runs (for example, during PreFilter, Filter, or Score). This blog details how the default Kubernetes scheduler places pods, limitations, and provides best-practice recommendations to increase node utilization for your workloads using Configurable Scheduler Profiles on AKS. @@ -45,7 +45,7 @@ Today, the default scheduler on AKS lacks the flexibility for users to change wh ## Configurable Scheduler Profiles on AKS -[Configurable Scheduler Profiles on AKS][concepts-scheduler-configuration] allows customers to benefit from the extensibility of the [scheduling framework][scheduling-framework-interfaces] while reducing the operational overhead of adopting a second scheduler or defining a custom scheduler. Configurable Scheduler Profiles uses a Custom Resource Definition (CRD) that lets users define custom scheduler profiles with their own scheduling logic. A dedicated controller continuously reconciles these user-defined configurations with the underlying kube-scheduler deployment, validating changes and applying them transparently. If a configuration causes the scheduler to become unhealthy, the controller automatically rolls back to the last known good state to ensure cluster stability. This means incorrect plugins or values will not be applied. +[Configurable Scheduler Profiles on AKS][concepts-scheduler-configuration] allows customers to benefit from the extensibility of the [scheduling framework][scheduling-framework-interfaces] while reducing the operational overhead of adopting a second scheduler or defining a custom scheduler. Configurable Scheduler Profiles use a Custom Resource Definition (CRD) that lets users define custom scheduler profiles with their own scheduling logic. A dedicated controller continuously reconciles these user-defined configurations with the underlying kube-scheduler deployment, validating changes and applying them transparently. If a configuration causes the scheduler to become unhealthy, the controller automatically rolls back to the last known good state to ensure cluster stability. This means incorrect plugins or values will not be applied. ![Architecture diagram showing how Configurable Scheduler Profiles use a CRD and controller to reconcile user-defined profiles with the kube-scheduler deployment](./config-scheduler-profiles.png) @@ -53,13 +53,13 @@ A profile is a set of one or more in-tree scheduling plugins and configurations ## Increase Node Utilization and Operator Control -In this simple scale-out scenario, manually increasing replicas from 8 to 30 with identical pod specs, the default scheduler distributes pods evenly across nodes. The Configurable Scheduler Profiles using the `NodeResourcesFit` plugin are introduced shows a visible consolidation pattern that differs from the default scheduler's logic. Instead of spreading pods evenly, the scheduler begins to intentionally concentrate workloads onto fewer nodes. This shift occurs without changing the workload, node size, or autoscaling behavior - only the scheduler’s scoring logic. +In this simple scale-out scenario, when you manually increase replicas from 8 to 30 with identical pod specs, the default scheduler distributes pods evenly across nodes. Configurable Scheduler Profiles that use the `NodeResourcesFit` plugin show a visible consolidation pattern that differs from the default scheduler's logic. Instead of spreading pods evenly, the scheduler begins to intentionally concentrate workloads onto fewer nodes. This shift occurs without changing the workload, node size, or autoscaling behavior - only the scheduler’s scoring logic. While this experiment uses intentionally simple, CPU-bound containers to isolate scheduling behavior, the placement patterns observed here generalize to more complex workloads where consolidation and utilization efficiency matter. This change in distribution shape enables downstream efficiencies: improved control for platform engineers, efficient resource usage, and cost optimization that are difficult to achieve when pods are evenly spread. ![Table showing increased node utilization with the node bin packing scheduler profiles versus the pod distribution using the default scheduler](./default-config-scheduler-comparison.png) -The key takeaway is not that each profile expresses a distinct scheduling intent. The next two sections detail how MostAllocated and RequestedToCapacityRatio achieve these outcomes. +The key takeaway is that each profile expresses a distinct scheduling intent. The next two sections detail how MostAllocated and RequestedToCapacityRatio achieve these outcomes. ### Increase AKS CPU Utilization @@ -174,7 +174,7 @@ spec: ### FAQ 1. Which Bin packing strategy does AKS recommend to increase node utilization? AKS recommends using the scoring strategy `RequestedToCapacityRatio` because it provides a more granular scoring approach allowing users to define an ideal utilization curve for their respective nodes. For example, this bin packing strategy allows users to configure a target utilization of 85%. -2. How does Configurable Scheduler Profiles interact with autoscalers such as Node Auto Provisioning (NAP), Cluster Autoscaler (CAS), and Vertical Pod Autoscaler (VPA)? These components are complimentary to each other. Configurable Scheduler Profiles influences how pods are placed on nodes, while autoscalers make scaling decisions based on resource utilization and pending pods. +2. How does Configurable Scheduler Profiles interact with autoscalers such as Node Auto Provisioning (NAP), Cluster Autoscaler (CAS), and Vertical Pod Autoscaler (VPA)? These components are complementary to each other. Configurable Scheduler Profiles influences how pods are placed on nodes, while autoscalers make scaling decisions based on resource utilization and pending pods. - **Node Auto Provisioning (NAP)** is triggered when pods are unschedulable. If a suitable node already exists, that pod will be scheduled with the defined Configurable Scheduler Profile. If no suitable node exists, NAP provisions new capacity, after which the pod is scheduled according to the selected profile. - **Cluster Autoscaler (CA)** manages node scale-up and scale-down. On scale-up, CA is triggered when there aren't any suitable nodes available for the pending pod. Using the Configurable Scheduler Profiles ensure nodes are only scaled when provisioned resources are no longer suitable. On scale-down, CA is triggered when nodes fall below utilization thresholds, the default is 50%. As active nodes are packed more efficiently, underutilized nodes become easier candidates for removal. - **VPA** optimizes resource utilization patterns in pods. As pods are recreated with updated CPU and memory requests, they are scheduled using the configured scheduler profile, allowing placement decisions to reflect the new resource requirements. From d4863acfc12ff13d42855a8b9c531c62626843b9 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Tue, 24 Mar 2026 09:37:36 -0700 Subject: [PATCH 118/164] Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md index c0fa0e4be..093f07890 100644 --- a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md @@ -51,7 +51,7 @@ Today, the default scheduler on AKS lacks the flexibility for users to change wh A profile is a set of one or more in-tree scheduling plugins and configurations that dictate how to schedule a pod. AKS supports 18 in-tree Kubernetes [scheduling plugins][supported-in-tree-scheduling-plugins]. -## Increase Node Utilization and Operator Control +## Increase node utilization and operator control In this simple scale-out scenario, when you manually increase replicas from 8 to 30 with identical pod specs, the default scheduler distributes pods evenly across nodes. Configurable Scheduler Profiles that use the `NodeResourcesFit` plugin show a visible consolidation pattern that differs from the default scheduler's logic. Instead of spreading pods evenly, the scheduler begins to intentionally concentrate workloads onto fewer nodes. This shift occurs without changing the workload, node size, or autoscaling behavior - only the scheduler’s scoring logic. @@ -174,9 +174,9 @@ spec: ### FAQ 1. Which Bin packing strategy does AKS recommend to increase node utilization? AKS recommends using the scoring strategy `RequestedToCapacityRatio` because it provides a more granular scoring approach allowing users to define an ideal utilization curve for their respective nodes. For example, this bin packing strategy allows users to configure a target utilization of 85%. -2. How does Configurable Scheduler Profiles interact with autoscalers such as Node Auto Provisioning (NAP), Cluster Autoscaler (CAS), and Vertical Pod Autoscaler (VPA)? These components are complementary to each other. Configurable Scheduler Profiles influences how pods are placed on nodes, while autoscalers make scaling decisions based on resource utilization and pending pods. +2. How does Configurable Scheduler Profiles interact with autoscalers such as Node Auto Provisioning (NAP), Cluster Autoscaler (CAS), and Vertical Pod Autoscaler (VPA)? These components are complementary to each other. Configurable Scheduler Profiles influence how pods are placed on nodes, while autoscalers make scaling decisions based on resource utilization and pending pods. - **Node Auto Provisioning (NAP)** is triggered when pods are unschedulable. If a suitable node already exists, that pod will be scheduled with the defined Configurable Scheduler Profile. If no suitable node exists, NAP provisions new capacity, after which the pod is scheduled according to the selected profile. - - **Cluster Autoscaler (CA)** manages node scale-up and scale-down. On scale-up, CA is triggered when there aren't any suitable nodes available for the pending pod. Using the Configurable Scheduler Profiles ensure nodes are only scaled when provisioned resources are no longer suitable. On scale-down, CA is triggered when nodes fall below utilization thresholds, the default is 50%. As active nodes are packed more efficiently, underutilized nodes become easier candidates for removal. + - **Cluster Autoscaler (CA)** manages node scale-up and scale-down. On scale-up, CA is triggered when there aren't any suitable nodes available for the pending pod. Using Configurable Scheduler Profiles ensures nodes are only scaled when provisioned resources are no longer suitable. On scale-down, CA is triggered when nodes fall below utilization thresholds, the default is 50%. As active nodes are packed more efficiently, underutilized nodes become easier candidates for removal. - **VPA** optimizes resource utilization patterns in pods. As pods are recreated with updated CPU and memory requests, they are scheduled using the configured scheduler profile, allowing placement decisions to reflect the new resource requirements. 3. What if a resource is omitted in the `scoringStrategy` like `memory`? If a resource is omitted in the `scoringStrategy`, then that resource will not be considered in the filter or scoring cycles of the defined Configurable Scheduler Profile. If that resource should be considered, but with a reduced influence on the final score, it can be included with reduced weight. From 440a7ea6625b1ebb8a69e538195ba4729d05d96c Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Wed, 25 Mar 2026 11:33:40 -0700 Subject: [PATCH 119/164] Apply suggestions from code review Co-authored-by: Ahmed Sabbour <103856+sabbour@users.noreply.github.com> --- .../2026-03-31-aks-config-scheduler-profiles-preview/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md index 093f07890..ae87fa26d 100644 --- a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md @@ -70,7 +70,7 @@ By shaping the scoring curve to target a range of 50-85% CPU utilization, operat **This bin packing profile is configured to favor nodes within a utilization band of 50-85%, avoiding empty nodes, and severely deprioritizing nearly full nodes at 90% utilization or more, to limit oversaturated nodes. Given this level of configuration detail, `RequestedToCapacityRatio` is the recommended scoring strategy for node bin‑packing on AKS for production clusters.** :::note -Scoring strategy can be used for GPU also. Adjust resources, resource weights, utilization thresholds, and plugin parameters to match your VM SKUs, workload patterns, and cluster topology. +Scoring strategy can also be used for GPU. Adjust resources, resource weights, utilization thresholds, and plugin parameters to match your VM SKUs, workload patterns, and cluster topology. ::: ```yaml @@ -120,7 +120,7 @@ spec: ### Increase AKS GPU Utilization -`MostAllocated` scores nodes based on their current resource utilization, favoring nodes that are already more heavily utilized. Unlike `RequestedToCapacityRatio`, it does not consider node capacity in node scoring, making it more suitable for an agressive cost-optimization scheduling strategy. When paired with MostAllocated, `NodeResourcesBalancedAllocation` complements the behoavior because it encourages pod placement on nodes with user-defined proportional utilization, helping reduce bottlenecks caused by asymmetric resource pressure. +`MostAllocated` scores nodes based on their current resource utilization, favoring nodes that are already more heavily utilized. Unlike `RequestedToCapacityRatio`, it does not consider node capacity in node scoring, making it more suitable for an aggressive cost-optimization scheduling strategy. When paired with MostAllocated, `NodeResourcesBalancedAllocation` complements the behavior because it encourages pod placement on nodes with user-defined proportional utilization, helping reduce bottlenecks caused by asymmetric resource pressure. When combined, these plugins favor GPU‑bound nodes with balanced CPU and memory usage over nodes with large amounts of unused memory or fragmented resources. This results in more efficient GPU placement and fewer partially utilized nodes.[Configure node bin-packing][configure-most-allocated] using the MostAllocated strategy to improve utilization and reduce infrastructure costs. From d3674ee1cc247adbb9957859c43c2e3582053486 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Fri, 27 Mar 2026 12:10:03 -0700 Subject: [PATCH 120/164] Update blog on Configurable Scheduler Profiles for AKS Revise blog content for clarity and conciseness regarding Configurable Scheduler Profiles on AKS, emphasizing benefits and operational details. --- .../index.md | 27 +++++++++++++------ 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md index ae87fa26d..570283632 100644 --- a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md @@ -8,13 +8,15 @@ tags: [ai, performance, scheduler, best-practices, cost] As reported by CastAI, on average Kubernetes clusters only reach [10% CPU utilization][cast-ai-k8s-cost-report] and Datadog finds most Kubernetes containers use less than [25% of their requested CPU][datadog-state-of-containers]. This data signals that underutilized resources are materially contributing to increased infrastructure cost. While there are many factors that impact node utilization, as a core component of the Kubernetes control plane, the kube-scheduler has a big influence on node utilization. -With the introduction of [Configurable Scheduler Profiles][concepts-scheduler-configuration] on AKS, customers now have the opportunity to increase their node utilization across CPU and GPU resources and optimize their costs with access to fine-grained pod scheduling strategies by configuring their own scheduling logic: enabling specific policies, adjusting policy priorities, tuning parameter weights, and choosing when each policy runs (for example, during PreFilter, Filter, or Score). +[Configurable Scheduler Profiles][concepts-scheduler-configuration] on AKS lets customers configure their own scheduling logic: enable specific plugins, adjust plugin priorities, and tune parameter weights. The result: higher node density, better GPU utilization, and lower infrastructure costs. -This blog details how the default Kubernetes scheduler places pods, limitations, and provides best-practice recommendations to increase node utilization for your workloads using Configurable Scheduler Profiles on AKS. +This blog explains how the default Kubernetes scheduler places pods, where the defaults fall short, and how to increase node utilization using Configurable Scheduler Profiles on AKS. 1. [How does kube-scheduler work?](#how-does-the-default-kubernetes-scheduler-place-pods) -2. [How to increase AKS cluster CPU utilization with Configurable Scheduler](#increase-aks-cpu-utilization) -3. [How to increase AKS cluster GPU and CPU utilization with Configurable Scheduler](#increase-aks-gpu-utilization) +2. [How Increase node utilization and operator control](#configurable-scheduler-profiles-on-aks) +4. [How to increase AKS cluster CPU utilization with Configurable Scheduler](#increase-aks-cpu-utilization) +5. [How to increase AKS cluster GPU and CPU utilization with Configurable Scheduler](#increase-aks-gpu-utilization) +6. [How does Configurable Scheduler Profiles interact with autoscalers?](#faq) @@ -41,11 +43,11 @@ Once a node is selected, the binding cycle can process multiple pods in parallel The default scheduler is primarily designed for general-purpose workloads that prioritizes nodes with the most available resources using the _LeastAllocated_ scoring strategy. This spreads pods across nodes, even when they could safely be packed more densely. While this works well for many services, the default scheduling criteria, and their fixed priority order, are not suitable for workloads that demand optimizing GPU and CPU utilization. In these scenarios, spreading pods across nodes can lead to fragmented resources, underutilized GPUs, and increased infrastructure cost. -Today, the default scheduler on AKS lacks the flexibility for users to change which criteria should be prioritized, or ignored, in the scheduling cycle on a per cluster basis. This rigidity often forces users to either accept suboptimal placement or manage a separate custom scheduler, both of which increase operational complexity. Starting with Kubernetes v1.33, AKS introduces Configurable Scheduler Profiles, enabling customized scheduler behavior without maintaining a separate scheduler. Now, users can adjust the `NodeResourcesFit` plugin from the default configuration to favor nodes with higher utilization to achieve more efficient bin‑packing and reduce infrastructure cost. +Today, the default scheduler on AKS lacks the flexibility for users to change which criteria should be prioritized, or ignored, in the scheduling cycle on a per cluster basis. This rigidity often forces users to either accept suboptimal placement or manage a separate custom scheduler, both of which increase operational complexity. Starting with Kubernetes v1.33, AKS introduces Configurable Scheduler Profiles - an AKS-managed CRD - that exposes the upstream scheduling framework without maintaining a separate scheduler. Now, users can adjust the `NodeResourcesFit` plugin from the default configuration to favor nodes with higher utilization to achieve more efficient bin‑packing and reduce infrastructure cost. ## Configurable Scheduler Profiles on AKS -[Configurable Scheduler Profiles on AKS][concepts-scheduler-configuration] allows customers to benefit from the extensibility of the [scheduling framework][scheduling-framework-interfaces] while reducing the operational overhead of adopting a second scheduler or defining a custom scheduler. Configurable Scheduler Profiles use a Custom Resource Definition (CRD) that lets users define custom scheduler profiles with their own scheduling logic. A dedicated controller continuously reconciles these user-defined configurations with the underlying kube-scheduler deployment, validating changes and applying them transparently. If a configuration causes the scheduler to become unhealthy, the controller automatically rolls back to the last known good state to ensure cluster stability. This means incorrect plugins or values will not be applied. +[Configurable Scheduler Profiles on AKS][concepts-scheduler-configuration] allows customers to benefit from the extensibility of the [scheduling framework][scheduling-framework-interfaces] while reducing the operational overhead of adopting a second scheduler or defining a custom scheduler. Configurable Scheduler Profiles use a Custom Resource Definition (CRD) that lets users define custom scheduler profiles with their own scheduling logic. A dedicated controller continuously reconciles these user-defined configurations with the underlying kube-scheduler deployment, validating changes and applying them transparently. If a configuration causes the scheduler to become unhealthy, the controller automatically rolls back to the last known good state to ensure cluster stability. If the new configuration causes the scheduler to fail health checks, the controller reverts to the last known good configuration." ![Architecture diagram showing how Configurable Scheduler Profiles use a CRD and controller to reconcile user-defined profiles with the kube-scheduler deployment](./config-scheduler-profiles.png) @@ -175,10 +177,17 @@ spec: 1. Which Bin packing strategy does AKS recommend to increase node utilization? AKS recommends using the scoring strategy `RequestedToCapacityRatio` because it provides a more granular scoring approach allowing users to define an ideal utilization curve for their respective nodes. For example, this bin packing strategy allows users to configure a target utilization of 85%. 2. How does Configurable Scheduler Profiles interact with autoscalers such as Node Auto Provisioning (NAP), Cluster Autoscaler (CAS), and Vertical Pod Autoscaler (VPA)? These components are complementary to each other. Configurable Scheduler Profiles influence how pods are placed on nodes, while autoscalers make scaling decisions based on resource utilization and pending pods. - - **Node Auto Provisioning (NAP)** is triggered when pods are unschedulable. If a suitable node already exists, that pod will be scheduled with the defined Configurable Scheduler Profile. If no suitable node exists, NAP provisions new capacity, after which the pod is scheduled according to the selected profile. + - **Node Auto Provisioning (NAP)** is triggered when pods are unschedulable. If a suitable node already exists, that pod will be scheduled with the defined Configurable Scheduler Profile. If no suitable node exists, NAP provisions new capacity and schedules pod. - **Cluster Autoscaler (CA)** manages node scale-up and scale-down. On scale-up, CA is triggered when there aren't any suitable nodes available for the pending pod. Using Configurable Scheduler Profiles ensures nodes are only scaled when provisioned resources are no longer suitable. On scale-down, CA is triggered when nodes fall below utilization thresholds, the default is 50%. As active nodes are packed more efficiently, underutilized nodes become easier candidates for removal. - **VPA** optimizes resource utilization patterns in pods. As pods are recreated with updated CPU and memory requests, they are scheduled using the configured scheduler profile, allowing placement decisions to reflect the new resource requirements. -3. What if a resource is omitted in the `scoringStrategy` like `memory`? If a resource is omitted in the `scoringStrategy`, then that resource will not be considered in the filter or scoring cycles of the defined Configurable Scheduler Profile. If that resource should be considered, but with a reduced influence on the final score, it can be included with reduced weight. +3. What if a resource, like `memory`, is omitted in the `scoringStrategy`? If a resource is omitted in the `scoringStrategy`, then that resource will not be considered in the filter or scoring cycles of the defined Configurable Scheduler Profile. If that resource should be considered, but with a reduced influence on the final score, it can be included with reduced weight. +4. Can multiple Configurable Scheduler Profiles be used for different workloads on the same cluster? Yes, mulitple scheduling profiles can coexist in a single cluster. This allows different placement strategies (for example, cost‑optimized vs. latency‑sensitive workloads) to run side‑by‑side. Visit the documentation for a [multiple scheduler profiles example][configure-multi-config] + - Multiple profiles can be defined centrally in a single scheduler configuration. + - Individual workloads select a profile via `schedulerName` in the pod spec. +6. How do I monitor whether my scheduler profile is improving utilization? These help confirm the scheduler is behaving correctly. Ultimately, you should see higher average node utilization, reduced variance between nodes, fewer lightly‑utilized nodes over time + - Node‑level utilization metrics: CPU and memory utilization per node and Distribution of pods across nodes using Azure Monitor Container Insights and `kubectl top nodes` for quick validation + - Autoscaler outcomes: fewer scale‑ups during normal load and more decisive scale‑downs after demand drops + - Cost Metrics: reduced idle costs when using [Cost-Analysis add-on][#aks-cost-analysis-add-on] ## Next Steps: Optimize Azure resources and test Configurable Scheduler Profiles on AKS @@ -198,3 +207,5 @@ With Configurable Scheduler Profiles, teams gain fine-grained control over pod p [cast-ai-k8s-cost-report]: https://cast.ai/reports/kubernetes-cost-benchmark/ [configure-requested-to-capacity]: https://learn.microsoft.com/azure/aks/configure-node-binpack-scheduler?tabs=new-cluster#configure-node-bin-packing-with-requestedtocapacity-plugin [configure-most-allocated]: https://learn.microsoft.com/azure/aks/configure-node-binpack-scheduler?tabs=new-cluster#configure-node-bin-packing-with-mostallocated-plugin +[configure-multi-config]: https://learn.microsoft.com/azure/aks/configure-aks-scheduler?tabs=new-cluster#configure-multiple-scheduler-profiles +[#aks-cost-analysis-add-on]: https://learn.microsoft.com/azure/aks/cost-analysis From 8a9ecb883d043f8589949a2cc57bd79f15ea6393 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Fri, 27 Mar 2026 12:11:22 -0700 Subject: [PATCH 121/164] Fix formatting and enhance scheduler profile metrics section Corrected formatting and improved clarity of scheduler profile monitoring metrics. --- .../index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md index 570283632..268fb37a8 100644 --- a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md @@ -185,9 +185,9 @@ spec: - Multiple profiles can be defined centrally in a single scheduler configuration. - Individual workloads select a profile via `schedulerName` in the pod spec. 6. How do I monitor whether my scheduler profile is improving utilization? These help confirm the scheduler is behaving correctly. Ultimately, you should see higher average node utilization, reduced variance between nodes, fewer lightly‑utilized nodes over time - - Node‑level utilization metrics: CPU and memory utilization per node and Distribution of pods across nodes using Azure Monitor Container Insights and `kubectl top nodes` for quick validation - - Autoscaler outcomes: fewer scale‑ups during normal load and more decisive scale‑downs after demand drops - - Cost Metrics: reduced idle costs when using [Cost-Analysis add-on][#aks-cost-analysis-add-on] + - Node‑level utilization metrics: CPU and memory utilization per node and Distribution of pods across nodes using Azure Monitor Container Insights and `kubectl top nodes` for quick validation + - Autoscaler outcomes: fewer scale‑ups during normal load and more decisive scale‑downs after demand drops + - Cost Metrics: reduced idle costs when using [Cost-Analysis add-on][#aks-cost-analysis-add-on] ## Next Steps: Optimize Azure resources and test Configurable Scheduler Profiles on AKS From a5d0ca3fe62e7d9bce947ea302c6fa957b323112 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Fri, 27 Mar 2026 13:34:32 -0700 Subject: [PATCH 122/164] Fix links and improve clarity in blog post --- .../index.md | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md index 268fb37a8..257ee9a6c 100644 --- a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md @@ -13,10 +13,10 @@ As reported by CastAI, on average Kubernetes clusters only reach [10% CPU utiliz This blog explains how the default Kubernetes scheduler places pods, where the defaults fall short, and how to increase node utilization using Configurable Scheduler Profiles on AKS. 1. [How does kube-scheduler work?](#how-does-the-default-kubernetes-scheduler-place-pods) -2. [How Increase node utilization and operator control](#configurable-scheduler-profiles-on-aks) -4. [How to increase AKS cluster CPU utilization with Configurable Scheduler](#increase-aks-cpu-utilization) -5. [How to increase AKS cluster GPU and CPU utilization with Configurable Scheduler](#increase-aks-gpu-utilization) -6. [How does Configurable Scheduler Profiles interact with autoscalers?](#faq) +2. [Use Configurable Scheduler Profiles to ncrease node utilization and operator control](#configurable-scheduler-profiles-on-aks) +3. [How to increase AKS cluster CPU utilization with Configurable Scheduler](#increase-aks-cpu-utilization) +4. [How to increase AKS cluster GPU and CPU utilization with Configurable Scheduler](#increase-aks-gpu-utilization) +5. [How do Configurable Scheduler Profiles interact with autoscalers?](#faq) @@ -41,13 +41,13 @@ Once a node is selected, the binding cycle can process multiple pods in parallel ### Limitations of the default Kubernetes scheduler -The default scheduler is primarily designed for general-purpose workloads that prioritizes nodes with the most available resources using the _LeastAllocated_ scoring strategy. This spreads pods across nodes, even when they could safely be packed more densely. While this works well for many services, the default scheduling criteria, and their fixed priority order, are not suitable for workloads that demand optimizing GPU and CPU utilization. In these scenarios, spreading pods across nodes can lead to fragmented resources, underutilized GPUs, and increased infrastructure cost. +The default scheduler is primarily designed for general-purpose workloads that prioritize nodes with the most available resources using the _LeastAllocated_ scoring strategy. This spreads pods across nodes, even when they could safely be packed more densely. While this works well for many services, the default scheduling criteria, and their fixed priority order, are not suitable for workloads that demand optimizing GPU and CPU utilization. In these scenarios, spreading pods across nodes can lead to fragmented resources, underutilized GPUs, and increased infrastructure cost. Today, the default scheduler on AKS lacks the flexibility for users to change which criteria should be prioritized, or ignored, in the scheduling cycle on a per cluster basis. This rigidity often forces users to either accept suboptimal placement or manage a separate custom scheduler, both of which increase operational complexity. Starting with Kubernetes v1.33, AKS introduces Configurable Scheduler Profiles - an AKS-managed CRD - that exposes the upstream scheduling framework without maintaining a separate scheduler. Now, users can adjust the `NodeResourcesFit` plugin from the default configuration to favor nodes with higher utilization to achieve more efficient bin‑packing and reduce infrastructure cost. ## Configurable Scheduler Profiles on AKS -[Configurable Scheduler Profiles on AKS][concepts-scheduler-configuration] allows customers to benefit from the extensibility of the [scheduling framework][scheduling-framework-interfaces] while reducing the operational overhead of adopting a second scheduler or defining a custom scheduler. Configurable Scheduler Profiles use a Custom Resource Definition (CRD) that lets users define custom scheduler profiles with their own scheduling logic. A dedicated controller continuously reconciles these user-defined configurations with the underlying kube-scheduler deployment, validating changes and applying them transparently. If a configuration causes the scheduler to become unhealthy, the controller automatically rolls back to the last known good state to ensure cluster stability. If the new configuration causes the scheduler to fail health checks, the controller reverts to the last known good configuration." +[Configurable Scheduler Profiles on AKS][concepts-scheduler-configuration] allows customers to benefit from the extensibility of the [scheduling framework][scheduling-framework-interfaces] while reducing the operational overhead of adopting a second scheduler or defining a custom scheduler. Configurable Scheduler Profiles use a Custom Resource Definition (CRD) that lets users define custom scheduler profiles with their own scheduling logic. A dedicated controller continuously reconciles these user-defined configurations with the underlying kube-scheduler deployment, validating changes and applying them transparently. If a new configuration causes the scheduler to become unhealthy, the controller automatically reverts to the last known good state to ensure cluster stability. ![Architecture diagram showing how Configurable Scheduler Profiles use a CRD and controller to reconcile user-defined profiles with the kube-scheduler deployment](./config-scheduler-profiles.png) @@ -63,7 +63,7 @@ While this experiment uses intentionally simple, CPU-bound containers to isolate The key takeaway is that each profile expresses a distinct scheduling intent. The next two sections detail how MostAllocated and RequestedToCapacityRatio achieve these outcomes. -### Increase AKS CPU Utilization +### Increase AKS CPU utilization `RequestedToCapacityRatio` scores nodes based on the ratio of requested resources to total node capacity after the pod is _hypothetically_ placed. This strategy enables more fine-grained bin‑packing by allowing operators to define an ideal utilization curve for their nodes rather than simply preferring the most or least utilized nodes. @@ -72,7 +72,7 @@ By shaping the scoring curve to target a range of 50-85% CPU utilization, operat **This bin packing profile is configured to favor nodes within a utilization band of 50-85%, avoiding empty nodes, and severely deprioritizing nearly full nodes at 90% utilization or more, to limit oversaturated nodes. Given this level of configuration detail, `RequestedToCapacityRatio` is the recommended scoring strategy for node bin‑packing on AKS for production clusters.** :::note -Scoring strategy can also be used for GPU. Adjust resources, resource weights, utilization thresholds, and plugin parameters to match your VM SKUs, workload patterns, and cluster topology. +Scoring strategy can also be used for GPU by changing the target resource. Adjust resources, resource weights, utilization thresholds, and plugin parameters to match your VM SKUs, workload patterns, and cluster topology. ::: ```yaml @@ -120,7 +120,7 @@ spec: score: 0 ``` -### Increase AKS GPU Utilization +### Increase AKS GPU utilization `MostAllocated` scores nodes based on their current resource utilization, favoring nodes that are already more heavily utilized. Unlike `RequestedToCapacityRatio`, it does not consider node capacity in node scoring, making it more suitable for an aggressive cost-optimization scheduling strategy. When paired with MostAllocated, `NodeResourcesBalancedAllocation` complements the behavior because it encourages pod placement on nodes with user-defined proportional utilization, helping reduce bottlenecks caused by asymmetric resource pressure. @@ -181,15 +181,15 @@ spec: - **Cluster Autoscaler (CA)** manages node scale-up and scale-down. On scale-up, CA is triggered when there aren't any suitable nodes available for the pending pod. Using Configurable Scheduler Profiles ensures nodes are only scaled when provisioned resources are no longer suitable. On scale-down, CA is triggered when nodes fall below utilization thresholds, the default is 50%. As active nodes are packed more efficiently, underutilized nodes become easier candidates for removal. - **VPA** optimizes resource utilization patterns in pods. As pods are recreated with updated CPU and memory requests, they are scheduled using the configured scheduler profile, allowing placement decisions to reflect the new resource requirements. 3. What if a resource, like `memory`, is omitted in the `scoringStrategy`? If a resource is omitted in the `scoringStrategy`, then that resource will not be considered in the filter or scoring cycles of the defined Configurable Scheduler Profile. If that resource should be considered, but with a reduced influence on the final score, it can be included with reduced weight. -4. Can multiple Configurable Scheduler Profiles be used for different workloads on the same cluster? Yes, mulitple scheduling profiles can coexist in a single cluster. This allows different placement strategies (for example, cost‑optimized vs. latency‑sensitive workloads) to run side‑by‑side. Visit the documentation for a [multiple scheduler profiles example][configure-multi-config] - - Multiple profiles can be defined centrally in a single scheduler configuration. - - Individual workloads select a profile via `schedulerName` in the pod spec. -6. How do I monitor whether my scheduler profile is improving utilization? These help confirm the scheduler is behaving correctly. Ultimately, you should see higher average node utilization, reduced variance between nodes, fewer lightly‑utilized nodes over time +4. Can multiple Configurable Scheduler Profiles be used for different workloads on the same cluster? Yes, multiple scheduling profiles can coexist in a single cluster. This allows different placement strategies (for example, cost‑optimized vs. latency‑sensitive workloads) to run side‑by‑side. Visit the documentation for a [multiple scheduler profiles example][configure-multi-config] + - Multiple profiles can be defined centrally in a single scheduler configuration. + - Individual workloads select a profile via `schedulerName` in the pod spec. +5. How do I monitor whether my scheduler profile is improving utilization? These help confirm the scheduler is behaving correctly. Ultimately, you should see higher average node utilization, reduced variance between nodes, fewer lightly‑utilized nodes over time - Node‑level utilization metrics: CPU and memory utilization per node and Distribution of pods across nodes using Azure Monitor Container Insights and `kubectl top nodes` for quick validation - Autoscaler outcomes: fewer scale‑ups during normal load and more decisive scale‑downs after demand drops - Cost Metrics: reduced idle costs when using [Cost-Analysis add-on][#aks-cost-analysis-add-on] -## Next Steps: Optimize Azure resources and test Configurable Scheduler Profiles on AKS +## Next steps: Optimize Azure resources and test Configurable Scheduler Profiles on AKS With Configurable Scheduler Profiles, teams gain fine-grained control over pod placement strategies like bin-packing, topology distribution, and resource-based scoring that directly addresses challenges related to application resilience and resource utilization for their AKS clusters. By leveraging these scheduling plugins, AKS users can ensure their workloads make full use of available GPU capacity, reduce idle costs, and avoid costly overprovisioning. This not only improves ROI but also accelerates development by allowing more jobs to run concurrently and reliably. From f1320abff30890b05a316832ff2f7e696544b4e2 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Fri, 27 Mar 2026 14:08:04 -0700 Subject: [PATCH 123/164] Update blog post links for clarity and accuracy --- .../2026-03-31-aks-config-scheduler-profiles-preview/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md index 257ee9a6c..154223351 100644 --- a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md @@ -14,8 +14,8 @@ This blog explains how the default Kubernetes scheduler places pods, where the d 1. [How does kube-scheduler work?](#how-does-the-default-kubernetes-scheduler-place-pods) 2. [Use Configurable Scheduler Profiles to ncrease node utilization and operator control](#configurable-scheduler-profiles-on-aks) -3. [How to increase AKS cluster CPU utilization with Configurable Scheduler](#increase-aks-cpu-utilization) -4. [How to increase AKS cluster GPU and CPU utilization with Configurable Scheduler](#increase-aks-gpu-utilization) +3. [Increase AKS cluster CPU utilization up to 85% with Configurable Scheduler](#increase-aks-cpu-utilization) +4. [Increase AKS cluster GPU or CPU utilization while balancing memory with Configurable Scheduler](#increase-aks-gpu-utilization) 5. [How do Configurable Scheduler Profiles interact with autoscalers?](#faq) From a0017476dda3f99c3cfbbfb0919077baeffe3299 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Mon, 30 Mar 2026 10:54:19 -0700 Subject: [PATCH 124/164] Revise Kubernetes utilization statistics and fix typo Updated statistics on Kubernetes container utilization and corrected a typo in the section about Configurable Scheduler Profiles. --- .../index.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md index 154223351..a36f09ff2 100644 --- a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md @@ -6,14 +6,14 @@ authors: [colin-mixon] tags: [ai, performance, scheduler, best-practices, cost] --- -As reported by CastAI, on average Kubernetes clusters only reach [10% CPU utilization][cast-ai-k8s-cost-report] and Datadog finds most Kubernetes containers use less than [25% of their requested CPU][datadog-state-of-containers]. This data signals that underutilized resources are materially contributing to increased infrastructure cost. While there are many factors that impact node utilization, as a core component of the Kubernetes control plane, the kube-scheduler has a big influence on node utilization. +In 2025 Datadog finds most Kubernetes containers use less than [25% of their requested CPU][datadog-state-of-containers] and in 2023 Weights and Biases foound that nearly a third of our users are [averaging less than 15% utilization.][wb-gpu-utilization]. This data signals that underutilized resources materially contribute to increased infrastructure cost. While there are many factors that impact node utilization, as a core component of the Kubernetes control plane, the kube-scheduler has a big influence on node utilization. [Configurable Scheduler Profiles][concepts-scheduler-configuration] on AKS lets customers configure their own scheduling logic: enable specific plugins, adjust plugin priorities, and tune parameter weights. The result: higher node density, better GPU utilization, and lower infrastructure costs. This blog explains how the default Kubernetes scheduler places pods, where the defaults fall short, and how to increase node utilization using Configurable Scheduler Profiles on AKS. 1. [How does kube-scheduler work?](#how-does-the-default-kubernetes-scheduler-place-pods) -2. [Use Configurable Scheduler Profiles to ncrease node utilization and operator control](#configurable-scheduler-profiles-on-aks) +2. [Use Configurable Scheduler Profiles to increase node utilization and operator control](#configurable-scheduler-profiles-on-aks) 3. [Increase AKS cluster CPU utilization up to 85% with Configurable Scheduler](#increase-aks-cpu-utilization) 4. [Increase AKS cluster GPU or CPU utilization while balancing memory with Configurable Scheduler](#increase-aks-gpu-utilization) 5. [How do Configurable Scheduler Profiles interact with autoscalers?](#faq) @@ -39,6 +39,8 @@ Once a node is selected, the binding cycle can process multiple pods in parallel ![Diagram of the kube-scheduler workflow showing pods entering the scheduling cycle and binding cycle to assign a pod on a node](./kube-scheduler-scheduling-phases-diagram.png) +For a deep dive on the Kubernetes Scheduler visit technical blog from SIG Scheduling contributor and AKS Upstream Engineer, Heba Elayoty, [Deep Dive into the Kubernetes Scheduler Framework][deep-dive-scheduler-framework]. + ### Limitations of the default Kubernetes scheduler The default scheduler is primarily designed for general-purpose workloads that prioritize nodes with the most available resources using the _LeastAllocated_ scoring strategy. This spreads pods across nodes, even when they could safely be packed more densely. While this works well for many services, the default scheduling criteria, and their fixed priority order, are not suitable for workloads that demand optimizing GPU and CPU utilization. In these scenarios, spreading pods across nodes can lead to fragmented resources, underutilized GPUs, and increased infrastructure cost. @@ -209,3 +211,5 @@ With Configurable Scheduler Profiles, teams gain fine-grained control over pod p [configure-most-allocated]: https://learn.microsoft.com/azure/aks/configure-node-binpack-scheduler?tabs=new-cluster#configure-node-bin-packing-with-mostallocated-plugin [configure-multi-config]: https://learn.microsoft.com/azure/aks/configure-aks-scheduler?tabs=new-cluster#configure-multiple-scheduler-profiles [#aks-cost-analysis-add-on]: https://learn.microsoft.com/azure/aks/cost-analysis +[wb-gpu-utilization]: https://wandb.ai/wandb_fc/articles/reports/Monitor-Improve-GPU-Usage-for-Model-Training--Vmlldzo1NDQzNjM3 +[deep-dive-scheduler-framework]: https://helayoty.org/blog/inside-kube-scheduler-the-plugin?r=h58xa From 9f2cee7dc41ff4f951722b8f52dce5ad64d7328c Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Mon, 30 Mar 2026 11:19:43 -0700 Subject: [PATCH 125/164] Fix typos and enhance introduction clarity Corrected typos and improved clarity in the introduction. --- .../2026-03-31-aks-config-scheduler-profiles-preview/index.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md index a36f09ff2..38c887fd9 100644 --- a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md @@ -6,7 +6,7 @@ authors: [colin-mixon] tags: [ai, performance, scheduler, best-practices, cost] --- -In 2025 Datadog finds most Kubernetes containers use less than [25% of their requested CPU][datadog-state-of-containers] and in 2023 Weights and Biases foound that nearly a third of our users are [averaging less than 15% utilization.][wb-gpu-utilization]. This data signals that underutilized resources materially contribute to increased infrastructure cost. While there are many factors that impact node utilization, as a core component of the Kubernetes control plane, the kube-scheduler has a big influence on node utilization. +In 2025, Datadog found most Kubernetes containers use less than [25% of their requested CPU][datadog-state-of-containers] and in 2023 Weights and Biases foound that nearly a third of GPU users are [averaging less than 15% utilization.][wb-gpu-utilization]. This data signals that underutilized resources materially contribute to increased infrastructure cost. While there are many factors that impact node utilization, as a core component of the Kubernetes control plane, the kube-scheduler has a big influence on node utilization. [Configurable Scheduler Profiles][concepts-scheduler-configuration] on AKS lets customers configure their own scheduling logic: enable specific plugins, adjust plugin priorities, and tune parameter weights. The result: higher node density, better GPU utilization, and lower infrastructure costs. @@ -206,7 +206,6 @@ With Configurable Scheduler Profiles, teams gain fine-grained control over pod p [supported-in-tree-scheduling-plugins]: https://learn.microsoft.com/azure/aks/concepts-scheduler-configuration#supported-in-tree-scheduling-plugins [node-bin-packing-configurations]: https://learn.microsoft.com/azure/aks/configure-node-binpack-scheduler?tabs=new-cluster [datadog-state-of-containers]: https://www.datadoghq.com/state-of-containers-and-serverless/ -[cast-ai-k8s-cost-report]: https://cast.ai/reports/kubernetes-cost-benchmark/ [configure-requested-to-capacity]: https://learn.microsoft.com/azure/aks/configure-node-binpack-scheduler?tabs=new-cluster#configure-node-bin-packing-with-requestedtocapacity-plugin [configure-most-allocated]: https://learn.microsoft.com/azure/aks/configure-node-binpack-scheduler?tabs=new-cluster#configure-node-bin-packing-with-mostallocated-plugin [configure-multi-config]: https://learn.microsoft.com/azure/aks/configure-aks-scheduler?tabs=new-cluster#configure-multiple-scheduler-profiles From ea050e9b09d3af2236548b742defe59a30cf33b9 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Mon, 30 Mar 2026 11:39:50 -0700 Subject: [PATCH 126/164] Fix typos and enhance clarity in AKS blog post Corrected typos and improved clarity in the blog post about AKS Configurable Scheduler Profiles. --- .../index.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md index 38c887fd9..287649faf 100644 --- a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md @@ -6,7 +6,7 @@ authors: [colin-mixon] tags: [ai, performance, scheduler, best-practices, cost] --- -In 2025, Datadog found most Kubernetes containers use less than [25% of their requested CPU][datadog-state-of-containers] and in 2023 Weights and Biases foound that nearly a third of GPU users are [averaging less than 15% utilization.][wb-gpu-utilization]. This data signals that underutilized resources materially contribute to increased infrastructure cost. While there are many factors that impact node utilization, as a core component of the Kubernetes control plane, the kube-scheduler has a big influence on node utilization. +In 2025, Datadog found most Kubernetes containers use less than [25% of their requested CPU][datadog-state-of-containers], and in 2023 Weights and Biases found that nearly a third of GPU users [average less than 15% utilization][wb-gpu-utilization]. This data signals that underutilized resources materially contribute to increased infrastructure cost. While there are many factors that impact node utilization, as a core component of the Kubernetes control plane, the kube-scheduler has a big influence on node utilization. [Configurable Scheduler Profiles][concepts-scheduler-configuration] on AKS lets customers configure their own scheduling logic: enable specific plugins, adjust plugin priorities, and tune parameter weights. The result: higher node density, better GPU utilization, and lower infrastructure costs. @@ -67,7 +67,7 @@ The key takeaway is that each profile expresses a distinct scheduling intent. Th ### Increase AKS CPU utilization -`RequestedToCapacityRatio` scores nodes based on the ratio of requested resources to total node capacity after the pod is _hypothetically_ placed. This strategy enables more fine-grained bin‑packing by allowing operators to define an ideal utilization curve for their nodes rather than simply preferring the most or least utilized nodes. +`RequestedToCapacityRatio` scores nodes based on the ratio of requested resources to total node capacity after the pod is _hypothetically_ placed. This strategy enables more fine-grained bin‑packing by allowing operators to define an ideal utilization curve for their nodes rather than simply preferring the most or least utilized nodes. Lastly, it is critical to note that `PodTopologySpread` is disabled in this profile because bin-packing and zone-spreading are opposing goals and the scheduling logic may prioritize pod spreading. If you need both high utilization AND zone resilience, define a new profile to achieve both goals as the default scheduler's behavoir resort to pod spreading. By shaping the scoring curve to target a range of 50-85% CPU utilization, operators can increase pod density on provisioned nodes while preserving headroom for bursts, background processes, and system components in CPU-based workloads. [Configure node bin-packing][configure-requested-to-capacity] using the `RequestedToCapacityRatio` strategy to improve utilization and reduce infrastructure costs. @@ -124,9 +124,9 @@ spec: ### Increase AKS GPU utilization -`MostAllocated` scores nodes based on their current resource utilization, favoring nodes that are already more heavily utilized. Unlike `RequestedToCapacityRatio`, it does not consider node capacity in node scoring, making it more suitable for an aggressive cost-optimization scheduling strategy. When paired with MostAllocated, `NodeResourcesBalancedAllocation` complements the behavior because it encourages pod placement on nodes with user-defined proportional utilization, helping reduce bottlenecks caused by asymmetric resource pressure. +`MostAllocated` scores nodes based on their current resource utilization, favoring nodes that are already more heavily utilized. Unlike `RequestedToCapacityRatio`, it does not consider node capacity in node scoring, making it more suitable for an aggressive cost-optimization scheduling strategy. When paired with MostAllocated, `NodeResourcesBalancedAllocation` complements the behavior because it encourages pod placement on nodes with user-defined proportional utilization, helping reduce bottlenecks caused by asymmetric resource pressure. Lastly, it is critical to note that `PodTopologySpread` is disabled in this profile because bin-packing and zone-spreading are opposing goals and the scheduling logic may prioritize pod spreading. -When combined, these plugins favor GPU‑bound nodes with balanced CPU and memory usage over nodes with large amounts of unused memory or fragmented resources. This results in more efficient GPU placement and fewer partially utilized nodes.[Configure node bin-packing][configure-most-allocated] using the MostAllocated strategy to improve utilization and reduce infrastructure costs. +When combined, these plugins favor GPU‑bound nodes with balanced CPU and memory usage over nodes with large amounts of unused memory or fragmented resources. This results in more efficient GPU placement and fewer partially utilized nodes. [Configure node bin-packing][configure-most-allocated] using the MostAllocated strategy to improve utilization and reduce infrastructure costs. **This scheduler configuration maximizes GPU utilization by consolidating smaller jobs onto fewer nodes, reducing idle accelerator capacity while maintaining reasonable CPU and memory balance.** @@ -178,7 +178,7 @@ spec: ### FAQ 1. Which Bin packing strategy does AKS recommend to increase node utilization? AKS recommends using the scoring strategy `RequestedToCapacityRatio` because it provides a more granular scoring approach allowing users to define an ideal utilization curve for their respective nodes. For example, this bin packing strategy allows users to configure a target utilization of 85%. -2. How does Configurable Scheduler Profiles interact with autoscalers such as Node Auto Provisioning (NAP), Cluster Autoscaler (CAS), and Vertical Pod Autoscaler (VPA)? These components are complementary to each other. Configurable Scheduler Profiles influence how pods are placed on nodes, while autoscalers make scaling decisions based on resource utilization and pending pods. +2. How does Configurable Scheduler Profiles interact with autoscalers such as Node Auto Provisioning (NAP), Cluster Autoscaler (CA), and Vertical Pod Autoscaler (VPA)? These components are complementary to each other. Configurable Scheduler Profiles influence how pods are placed on nodes, while autoscalers make scaling decisions based on resource utilization and pending pods. - **Node Auto Provisioning (NAP)** is triggered when pods are unschedulable. If a suitable node already exists, that pod will be scheduled with the defined Configurable Scheduler Profile. If no suitable node exists, NAP provisions new capacity and schedules pod. - **Cluster Autoscaler (CA)** manages node scale-up and scale-down. On scale-up, CA is triggered when there aren't any suitable nodes available for the pending pod. Using Configurable Scheduler Profiles ensures nodes are only scaled when provisioned resources are no longer suitable. On scale-down, CA is triggered when nodes fall below utilization thresholds, the default is 50%. As active nodes are packed more efficiently, underutilized nodes become easier candidates for removal. - **VPA** optimizes resource utilization patterns in pods. As pods are recreated with updated CPU and memory requests, they are scheduled using the configured scheduler profile, allowing placement decisions to reflect the new resource requirements. @@ -189,7 +189,7 @@ spec: 5. How do I monitor whether my scheduler profile is improving utilization? These help confirm the scheduler is behaving correctly. Ultimately, you should see higher average node utilization, reduced variance between nodes, fewer lightly‑utilized nodes over time - Node‑level utilization metrics: CPU and memory utilization per node and Distribution of pods across nodes using Azure Monitor Container Insights and `kubectl top nodes` for quick validation - Autoscaler outcomes: fewer scale‑ups during normal load and more decisive scale‑downs after demand drops - - Cost Metrics: reduced idle costs when using [Cost-Analysis add-on][#aks-cost-analysis-add-on] + - Cost Metrics: reduced idle costs when using [Cost-Analysis add-on][aks-cost-analysis-add-on] ## Next steps: Optimize Azure resources and test Configurable Scheduler Profiles on AKS @@ -209,6 +209,6 @@ With Configurable Scheduler Profiles, teams gain fine-grained control over pod p [configure-requested-to-capacity]: https://learn.microsoft.com/azure/aks/configure-node-binpack-scheduler?tabs=new-cluster#configure-node-bin-packing-with-requestedtocapacity-plugin [configure-most-allocated]: https://learn.microsoft.com/azure/aks/configure-node-binpack-scheduler?tabs=new-cluster#configure-node-bin-packing-with-mostallocated-plugin [configure-multi-config]: https://learn.microsoft.com/azure/aks/configure-aks-scheduler?tabs=new-cluster#configure-multiple-scheduler-profiles -[#aks-cost-analysis-add-on]: https://learn.microsoft.com/azure/aks/cost-analysis +[aks-cost-analysis-add-on]: https://learn.microsoft.com/azure/aks/cost-analysis [wb-gpu-utilization]: https://wandb.ai/wandb_fc/articles/reports/Monitor-Improve-GPU-Usage-for-Model-Training--Vmlldzo1NDQzNjM3 [deep-dive-scheduler-framework]: https://helayoty.org/blog/inside-kube-scheduler-the-plugin?r=h58xa From 0caf69288d612e66aa1854dad0201e57b9cfee5a Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Mon, 30 Mar 2026 12:02:11 -0700 Subject: [PATCH 127/164] Enhance clarity on AKS GPU utilization strategies Clarified the explanation of the MostAllocated scheduling strategy and its impact on GPU utilization. Emphasized the importance of balancing CPU and memory usage for efficient GPU placement. --- .../2026-03-31-aks-config-scheduler-profiles-preview/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md index 287649faf..87be5f33f 100644 --- a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md @@ -124,7 +124,7 @@ spec: ### Increase AKS GPU utilization -`MostAllocated` scores nodes based on their current resource utilization, favoring nodes that are already more heavily utilized. Unlike `RequestedToCapacityRatio`, it does not consider node capacity in node scoring, making it more suitable for an aggressive cost-optimization scheduling strategy. When paired with MostAllocated, `NodeResourcesBalancedAllocation` complements the behavior because it encourages pod placement on nodes with user-defined proportional utilization, helping reduce bottlenecks caused by asymmetric resource pressure. Lastly, it is critical to note that `PodTopologySpread` is disabled in this profile because bin-packing and zone-spreading are opposing goals and the scheduling logic may prioritize pod spreading. +`MostAllocated` scores nodes based on their current resource utilization, favoring nodes that are already more heavily utilized. Unlike `RequestedToCapacityRatio`, it does not consider node capacity in node scoring, making it more suitable for an aggressive cost-optimization scheduling strategy. When paired with MostAllocated, `NodeResourcesBalancedAllocation` complements the behavior because it encourages pod placement on nodes with user-defined proportional utilization, helping reduce bottlenecks caused by asymmetric resource pressure. Lastly, it is critical to note that `PodTopologySpread` is disabled in this profile because bin-packing and zone-spreading are opposing goals and the scheduling logic may prioritize pod spreading. When combined, these plugins favor GPU‑bound nodes with balanced CPU and memory usage over nodes with large amounts of unused memory or fragmented resources. This results in more efficient GPU placement and fewer partially utilized nodes. [Configure node bin-packing][configure-most-allocated] using the MostAllocated strategy to improve utilization and reduce infrastructure costs. From bf6ed5a7013412df2f2d3befb5de30e8c076d887 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Mon, 30 Mar 2026 13:00:22 -0700 Subject: [PATCH 128/164] Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../index.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md index 87be5f33f..ef4e2ca31 100644 --- a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md @@ -49,7 +49,7 @@ Today, the default scheduler on AKS lacks the flexibility for users to change wh ## Configurable Scheduler Profiles on AKS -[Configurable Scheduler Profiles on AKS][concepts-scheduler-configuration] allows customers to benefit from the extensibility of the [scheduling framework][scheduling-framework-interfaces] while reducing the operational overhead of adopting a second scheduler or defining a custom scheduler. Configurable Scheduler Profiles use a Custom Resource Definition (CRD) that lets users define custom scheduler profiles with their own scheduling logic. A dedicated controller continuously reconciles these user-defined configurations with the underlying kube-scheduler deployment, validating changes and applying them transparently. If a new configuration causes the scheduler to become unhealthy, the controller automatically reverts to the last known good state to ensure cluster stability. +[Configurable Scheduler Profiles on AKS][concepts-scheduler-configuration] allow customers to benefit from the extensibility of the [scheduling framework][scheduling-framework-interfaces] while reducing the operational overhead of adopting a second scheduler or defining a custom scheduler. Configurable Scheduler Profiles use a Custom Resource Definition (CRD) that lets users define custom scheduler profiles with their own scheduling logic. A dedicated controller continuously reconciles these user-defined configurations with the underlying kube-scheduler deployment, validating changes and applying them transparently. If a new configuration causes the scheduler to become unhealthy, the controller automatically reverts to the last known good state to ensure cluster stability. ![Architecture diagram showing how Configurable Scheduler Profiles use a CRD and controller to reconcile user-defined profiles with the kube-scheduler deployment](./config-scheduler-profiles.png) @@ -67,7 +67,7 @@ The key takeaway is that each profile expresses a distinct scheduling intent. Th ### Increase AKS CPU utilization -`RequestedToCapacityRatio` scores nodes based on the ratio of requested resources to total node capacity after the pod is _hypothetically_ placed. This strategy enables more fine-grained bin‑packing by allowing operators to define an ideal utilization curve for their nodes rather than simply preferring the most or least utilized nodes. Lastly, it is critical to note that `PodTopologySpread` is disabled in this profile because bin-packing and zone-spreading are opposing goals and the scheduling logic may prioritize pod spreading. If you need both high utilization AND zone resilience, define a new profile to achieve both goals as the default scheduler's behavoir resort to pod spreading. +`RequestedToCapacityRatio` scores nodes based on the ratio of requested resources to total node capacity after the pod is _hypothetically_ placed. This strategy enables more fine-grained bin‑packing by allowing operators to define an ideal utilization curve for their nodes rather than simply preferring the most or least utilized nodes. Lastly, it is critical to note that `PodTopologySpread` is disabled in this profile because bin-packing and zone-spreading are opposing goals and the scheduling logic may prioritize pod spreading. If you need both high utilization AND zone resilience, define a new profile to achieve both goals as the default scheduler's behavior resort to pod spreading. By shaping the scoring curve to target a range of 50-85% CPU utilization, operators can increase pod density on provisioned nodes while preserving headroom for bursts, background processes, and system components in CPU-based workloads. [Configure node bin-packing][configure-requested-to-capacity] using the `RequestedToCapacityRatio` strategy to improve utilization and reduce infrastructure costs. @@ -186,10 +186,10 @@ spec: 4. Can multiple Configurable Scheduler Profiles be used for different workloads on the same cluster? Yes, multiple scheduling profiles can coexist in a single cluster. This allows different placement strategies (for example, cost‑optimized vs. latency‑sensitive workloads) to run side‑by‑side. Visit the documentation for a [multiple scheduler profiles example][configure-multi-config] - Multiple profiles can be defined centrally in a single scheduler configuration. - Individual workloads select a profile via `schedulerName` in the pod spec. -5. How do I monitor whether my scheduler profile is improving utilization? These help confirm the scheduler is behaving correctly. Ultimately, you should see higher average node utilization, reduced variance between nodes, fewer lightly‑utilized nodes over time - - Node‑level utilization metrics: CPU and memory utilization per node and Distribution of pods across nodes using Azure Monitor Container Insights and `kubectl top nodes` for quick validation - - Autoscaler outcomes: fewer scale‑ups during normal load and more decisive scale‑downs after demand drops - - Cost Metrics: reduced idle costs when using [Cost-Analysis add-on][aks-cost-analysis-add-on] +5. How do I monitor whether my scheduler profile is improving utilization? Monitor these signals to confirm that the scheduler is behaving correctly. Over time, you should see higher average node utilization, reduced variance between nodes, and fewer lightly utilized nodes. + - Track node‑level utilization metrics, including CPU and memory utilization per node and distribution of pods across nodes, using Azure Monitor Container Insights and `kubectl top nodes` for quick validation. + - Review autoscaler outcomes, looking for fewer scale‑ups during normal load and more decisive scale‑downs after demand drops. + - Measure cost metrics, such as reduced idle costs when you use the [Cost Analysis add-on][aks-cost-analysis-add-on]. ## Next steps: Optimize Azure resources and test Configurable Scheduler Profiles on AKS @@ -211,4 +211,4 @@ With Configurable Scheduler Profiles, teams gain fine-grained control over pod p [configure-multi-config]: https://learn.microsoft.com/azure/aks/configure-aks-scheduler?tabs=new-cluster#configure-multiple-scheduler-profiles [aks-cost-analysis-add-on]: https://learn.microsoft.com/azure/aks/cost-analysis [wb-gpu-utilization]: https://wandb.ai/wandb_fc/articles/reports/Monitor-Improve-GPU-Usage-for-Model-Training--Vmlldzo1NDQzNjM3 -[deep-dive-scheduler-framework]: https://helayoty.org/blog/inside-kube-scheduler-the-plugin?r=h58xa +[deep-dive-scheduler-framework]: https://helayoty.org/blog/inside-kube-scheduler-the-plugin From 4552ced43fbe7f1252ce67ec9f2c1d9be41c7c03 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Mon, 30 Mar 2026 14:11:28 -0700 Subject: [PATCH 129/164] Enhance AKS scheduler profiles documentation Added a comparison table for AKS configurable scheduler profiles detailing their scheduling intents and operator benefits. --- .../index.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md index ef4e2ca31..ce3fd5810 100644 --- a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md @@ -64,6 +64,11 @@ While this experiment uses intentionally simple, CPU-bound containers to isolate ![Table showing increased node utilization with the node bin packing scheduler profiles versus the pod distribution using the default scheduler](./default-config-scheduler-comparison.png) The key takeaway is that each profile expresses a distinct scheduling intent. The next two sections detail how MostAllocated and RequestedToCapacityRatio achieve these outcomes. +| Scheduler / Profile | Scheduling intent | Operator Benefits | +|---|---|---| +| Default scheduler
NodeResourcesFit: LeastAllocated | Balance and hotspot reduction | No tuning | +| Configurable Scheduler Profile
NodeResourcesFit: MostAllocated | Maximize consolidation / bin‑packing | Maximum node utilization, highest cost reduction potential | +| Configurable Scheduler Profile
NodeResourcesFit: RequestedToCapacityRatio | Targeted utilization with headroom | Stronger control over consolidation and burst headroom, finer control than `MostAllocated` | ### Increase AKS CPU utilization From 5c54c3bb93bf5638c7121cf8fd55c07ea4f604a9 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Mon, 30 Mar 2026 14:22:32 -0700 Subject: [PATCH 130/164] Refine FAQ and descriptions for Configurable Scheduler Profiles Updated FAQ section for clarity and improved phrasing. Enhanced descriptions of Configurable Scheduler Profiles and their interactions with autoscalers. --- .../index.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md index ce3fd5810..3b44d32ed 100644 --- a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md @@ -16,7 +16,7 @@ This blog explains how the default Kubernetes scheduler places pods, where the d 2. [Use Configurable Scheduler Profiles to increase node utilization and operator control](#configurable-scheduler-profiles-on-aks) 3. [Increase AKS cluster CPU utilization up to 85% with Configurable Scheduler](#increase-aks-cpu-utilization) 4. [Increase AKS cluster GPU or CPU utilization while balancing memory with Configurable Scheduler](#increase-aks-gpu-utilization) -5. [How do Configurable Scheduler Profiles interact with autoscalers?](#faq) +5. [FAQ: How do Configurable Scheduler Profiles interact with autoscalers?](#faq) @@ -68,11 +68,11 @@ The key takeaway is that each profile expresses a distinct scheduling intent. Th |---|---|---| | Default scheduler
NodeResourcesFit: LeastAllocated | Balance and hotspot reduction | No tuning | | Configurable Scheduler Profile
NodeResourcesFit: MostAllocated | Maximize consolidation / bin‑packing | Maximum node utilization, highest cost reduction potential | -| Configurable Scheduler Profile
NodeResourcesFit: RequestedToCapacityRatio | Targeted utilization with headroom | Stronger control over consolidation and burst headroom, finer control than `MostAllocated` | +| Configurable Scheduler Profile
NodeResourcesFit: RequestedToCapacityRatio | Targeted utilization with headroom | Increased utilization with stronger control over consolidation and burst headroom than `MostAllocated` | ### Increase AKS CPU utilization -`RequestedToCapacityRatio` scores nodes based on the ratio of requested resources to total node capacity after the pod is _hypothetically_ placed. This strategy enables more fine-grained bin‑packing by allowing operators to define an ideal utilization curve for their nodes rather than simply preferring the most or least utilized nodes. Lastly, it is critical to note that `PodTopologySpread` is disabled in this profile because bin-packing and zone-spreading are opposing goals and the scheduling logic may prioritize pod spreading. If you need both high utilization AND zone resilience, define a new profile to achieve both goals as the default scheduler's behavior resort to pod spreading. +`RequestedToCapacityRatio` scores nodes based on the ratio of requested resources to total node capacity after the pod is _hypothetically_ placed. This strategy enables more fine-grained bin‑packing by allowing operators to define an ideal utilization curve for their nodes rather than simply preferring the most or least utilized nodes. Lastly, it is critical to note that `PodTopologySpread` is disabled in this profile because bin-packing and zone-spreading are opposing goals and the scheduling logic may prioritize pod spreading. If you need both high utilization _and_ zone resilience, define a new profile to achieve both goals. By shaping the scoring curve to target a range of 50-85% CPU utilization, operators can increase pod density on provisioned nodes while preserving headroom for bursts, background processes, and system components in CPU-based workloads. [Configure node bin-packing][configure-requested-to-capacity] using the `RequestedToCapacityRatio` strategy to improve utilization and reduce infrastructure costs. @@ -184,7 +184,7 @@ spec: 1. Which Bin packing strategy does AKS recommend to increase node utilization? AKS recommends using the scoring strategy `RequestedToCapacityRatio` because it provides a more granular scoring approach allowing users to define an ideal utilization curve for their respective nodes. For example, this bin packing strategy allows users to configure a target utilization of 85%. 2. How does Configurable Scheduler Profiles interact with autoscalers such as Node Auto Provisioning (NAP), Cluster Autoscaler (CA), and Vertical Pod Autoscaler (VPA)? These components are complementary to each other. Configurable Scheduler Profiles influence how pods are placed on nodes, while autoscalers make scaling decisions based on resource utilization and pending pods. - - **Node Auto Provisioning (NAP)** is triggered when pods are unschedulable. If a suitable node already exists, that pod will be scheduled with the defined Configurable Scheduler Profile. If no suitable node exists, NAP provisions new capacity and schedules pod. + - **Node Auto Provisioning (NAP)** is triggered when pods are unschedulable. If a suitable node already exists, that pod will be scheduled with the defined Configurable Scheduler Profile. If no suitable node exists, NAP provisions new capacity and schedules the pod. - **Cluster Autoscaler (CA)** manages node scale-up and scale-down. On scale-up, CA is triggered when there aren't any suitable nodes available for the pending pod. Using Configurable Scheduler Profiles ensures nodes are only scaled when provisioned resources are no longer suitable. On scale-down, CA is triggered when nodes fall below utilization thresholds, the default is 50%. As active nodes are packed more efficiently, underutilized nodes become easier candidates for removal. - **VPA** optimizes resource utilization patterns in pods. As pods are recreated with updated CPU and memory requests, they are scheduled using the configured scheduler profile, allowing placement decisions to reflect the new resource requirements. 3. What if a resource, like `memory`, is omitted in the `scoringStrategy`? If a resource is omitted in the `scoringStrategy`, then that resource will not be considered in the filter or scoring cycles of the defined Configurable Scheduler Profile. If that resource should be considered, but with a reduced influence on the final score, it can be included with reduced weight. @@ -200,7 +200,7 @@ spec: With Configurable Scheduler Profiles, teams gain fine-grained control over pod placement strategies like bin-packing, topology distribution, and resource-based scoring that directly addresses challenges related to application resilience and resource utilization for their AKS clusters. By leveraging these scheduling plugins, AKS users can ensure their workloads make full use of available GPU capacity, reduce idle costs, and avoid costly overprovisioning. This not only improves ROI but also accelerates development by allowing more jobs to run concurrently and reliably. -- For best practices using the kube-scheduler visit [kube-scheduler best practices][best-practices-advanced-scheduler] +- For additional guidance and best practices, see [kube-scheduler best practices][best-practices-advanced-scheduler] - Increase node utilization using [Configurable Scheduler Profiles][node-bin-packing-configurations] - If additional capabilities or ML frameworks are needed to schedule and queue batch workloads, you can [install and configure Kueue on AKS][kueue-overview] to ensure efficient, policy-driven scheduling in AKS clusters. From 3c0bab94afe7df7743ae60b768a9d0608bffa843 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Mon, 30 Mar 2026 14:29:17 -0700 Subject: [PATCH 131/164] Revise scheduler profiles table and descriptions Updated the table format for scheduler profiles and clarified the benefits of the 'RequestedToCapacityRatio' strategy. --- .../index.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md index 3b44d32ed..cd339e2a7 100644 --- a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md @@ -64,11 +64,11 @@ While this experiment uses intentionally simple, CPU-bound containers to isolate ![Table showing increased node utilization with the node bin packing scheduler profiles versus the pod distribution using the default scheduler](./default-config-scheduler-comparison.png) The key takeaway is that each profile expresses a distinct scheduling intent. The next two sections detail how MostAllocated and RequestedToCapacityRatio achieve these outcomes. -| Scheduler / Profile | Scheduling intent | Operator Benefits | -|---|---|---| -| Default scheduler
NodeResourcesFit: LeastAllocated | Balance and hotspot reduction | No tuning | -| Configurable Scheduler Profile
NodeResourcesFit: MostAllocated | Maximize consolidation / bin‑packing | Maximum node utilization, highest cost reduction potential | -| Configurable Scheduler Profile
NodeResourcesFit: RequestedToCapacityRatio | Targeted utilization with headroom | Increased utilization with stronger control over consolidation and burst headroom than `MostAllocated` | +| Scheduler | Profile | Scheduling intent | Operator Benefits | +|---|---|---|---| +| Default scheduler | NodeResourcesFit: LeastAllocated | Balance and hotspot reduction | No tuning | +| Configurable Scheduler Profile | NodeResourcesFit: MostAllocated | Maximize consolidation / bin‑packing | Maximum node utilization, highest cost reduction potential | +| Configurable Scheduler Profile | NodeResourcesFit: RequestedToCapacityRatio | Targeted utilization with headroom | ✅**Recommended Strategy** Increased utilization with stronger control over consolidation and burst headroom than `MostAllocated` | ### Increase AKS CPU utilization From dff3207e59dee4a6d2eb60e2d704a7ce3cd72d73 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Mon, 30 Mar 2026 14:47:03 -0700 Subject: [PATCH 132/164] Refactor FAQ section in AKS Configurable Scheduler Profiles Reformatted FAQ section for clarity and improved readability. --- .../index.md | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md index cd339e2a7..ab64b6914 100644 --- a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md @@ -182,15 +182,26 @@ spec: ### FAQ -1. Which Bin packing strategy does AKS recommend to increase node utilization? AKS recommends using the scoring strategy `RequestedToCapacityRatio` because it provides a more granular scoring approach allowing users to define an ideal utilization curve for their respective nodes. For example, this bin packing strategy allows users to configure a target utilization of 85%. -2. How does Configurable Scheduler Profiles interact with autoscalers such as Node Auto Provisioning (NAP), Cluster Autoscaler (CA), and Vertical Pod Autoscaler (VPA)? These components are complementary to each other. Configurable Scheduler Profiles influence how pods are placed on nodes, while autoscalers make scaling decisions based on resource utilization and pending pods. +1. Which Bin packing strategy does AKS recommend to increase node utilization? + +AKS recommends using the scoring strategy `RequestedToCapacityRatio` because it provides a more granular scoring approach allowing users to define an ideal utilization curve for their respective nodes. For example, this bin packing strategy allows users to configure a target utilization of 85%. + +2. How does Configurable Scheduler Profiles interact with autoscalers such as Node Auto Provisioning (NAP), Cluster Autoscaler (CA), and Vertical Pod Autoscaler (VPA)? + +These components are complementary to each other. Configurable Scheduler Profiles influence how pods are placed on nodes, while autoscalers make scaling decisions based on resource utilization and pending pods. + - **Node Auto Provisioning (NAP)** is triggered when pods are unschedulable. If a suitable node already exists, that pod will be scheduled with the defined Configurable Scheduler Profile. If no suitable node exists, NAP provisions new capacity and schedules the pod. - **Cluster Autoscaler (CA)** manages node scale-up and scale-down. On scale-up, CA is triggered when there aren't any suitable nodes available for the pending pod. Using Configurable Scheduler Profiles ensures nodes are only scaled when provisioned resources are no longer suitable. On scale-down, CA is triggered when nodes fall below utilization thresholds, the default is 50%. As active nodes are packed more efficiently, underutilized nodes become easier candidates for removal. - **VPA** optimizes resource utilization patterns in pods. As pods are recreated with updated CPU and memory requests, they are scheduled using the configured scheduler profile, allowing placement decisions to reflect the new resource requirements. -3. What if a resource, like `memory`, is omitted in the `scoringStrategy`? If a resource is omitted in the `scoringStrategy`, then that resource will not be considered in the filter or scoring cycles of the defined Configurable Scheduler Profile. If that resource should be considered, but with a reduced influence on the final score, it can be included with reduced weight. + +3. What if a resource, like `memory`, is omitted in the `scoringStrategy`? + +If a resource is omitted in the `scoringStrategy`, then that resource will not be considered in the filter or scoring cycles of the defined Configurable Scheduler Profile. If that resource should be considered, but with a reduced influence on the final score, it can be included with reduced weight. + 4. Can multiple Configurable Scheduler Profiles be used for different workloads on the same cluster? Yes, multiple scheduling profiles can coexist in a single cluster. This allows different placement strategies (for example, cost‑optimized vs. latency‑sensitive workloads) to run side‑by‑side. Visit the documentation for a [multiple scheduler profiles example][configure-multi-config] - Multiple profiles can be defined centrally in a single scheduler configuration. - Individual workloads select a profile via `schedulerName` in the pod spec. + 5. How do I monitor whether my scheduler profile is improving utilization? Monitor these signals to confirm that the scheduler is behaving correctly. Over time, you should see higher average node utilization, reduced variance between nodes, and fewer lightly utilized nodes. - Track node‑level utilization metrics, including CPU and memory utilization per node and distribution of pods across nodes, using Azure Monitor Container Insights and `kubectl top nodes` for quick validation. - Review autoscaler outcomes, looking for fewer scale‑ups during normal load and more decisive scale‑downs after demand drops. From a8debba90a203f09fbd0143c6058bee73bd4e5c1 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Tue, 31 Mar 2026 16:55:07 -0700 Subject: [PATCH 133/164] Enhance clarity and consistency in AKS scheduler blog Refine language for clarity and consistency in the blog post about AKS Configurable Scheduler Profiles, ensuring technical accuracy and improving readability. --- .../index.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md index ab64b6914..81ee88f93 100644 --- a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md @@ -57,7 +57,7 @@ A profile is a set of one or more in-tree scheduling plugins and configurations ## Increase node utilization and operator control -In this simple scale-out scenario, when you manually increase replicas from 8 to 30 with identical pod specs, the default scheduler distributes pods evenly across nodes. Configurable Scheduler Profiles that use the `NodeResourcesFit` plugin show a visible consolidation pattern that differs from the default scheduler's logic. Instead of spreading pods evenly, the scheduler begins to intentionally concentrate workloads onto fewer nodes. This shift occurs without changing the workload, node size, or autoscaling behavior - only the scheduler’s scoring logic. +In this simple scale-out scenario, when you manually increase replicas from 8 to 30 with identical pod specs, the default scheduler distributes pods evenly across nodes. Configurable Scheduler Profiles that use the `NodeResourcesFit` plugin show a visible consolidation pattern that differs from the default scheduler's logic. Instead of spreading pods evenly, the scheduler intentionally concentrates workloads onto fewer nodes. This shift occurs without changing the workload, node size, or autoscaling behavior - only the scheduler’s scoring logic. While this experiment uses intentionally simple, CPU-bound containers to isolate scheduling behavior, the placement patterns observed here generalize to more complex workloads where consolidation and utilization efficiency matter. This change in distribution shape enables downstream efficiencies: improved control for platform engineers, efficient resource usage, and cost optimization that are difficult to achieve when pods are evenly spread. @@ -184,11 +184,11 @@ spec: 1. Which Bin packing strategy does AKS recommend to increase node utilization? -AKS recommends using the scoring strategy `RequestedToCapacityRatio` because it provides a more granular scoring approach allowing users to define an ideal utilization curve for their respective nodes. For example, this bin packing strategy allows users to configure a target utilization of 85%. + AKS recommends using the scoring strategy `RequestedToCapacityRatio` because it provides a more granular scoring approach allowing users to define an ideal utilization curve for their respective nodes. For example, this bin packing strategy allows users to configure a target utilization of 85%. 2. How does Configurable Scheduler Profiles interact with autoscalers such as Node Auto Provisioning (NAP), Cluster Autoscaler (CA), and Vertical Pod Autoscaler (VPA)? -These components are complementary to each other. Configurable Scheduler Profiles influence how pods are placed on nodes, while autoscalers make scaling decisions based on resource utilization and pending pods. + These components are complementary to each other. Configurable Scheduler Profiles influence how pods are placed on nodes, while autoscalers make scaling decisions based on resource utilization and pending pods. - **Node Auto Provisioning (NAP)** is triggered when pods are unschedulable. If a suitable node already exists, that pod will be scheduled with the defined Configurable Scheduler Profile. If no suitable node exists, NAP provisions new capacity and schedules the pod. - **Cluster Autoscaler (CA)** manages node scale-up and scale-down. On scale-up, CA is triggered when there aren't any suitable nodes available for the pending pod. Using Configurable Scheduler Profiles ensures nodes are only scaled when provisioned resources are no longer suitable. On scale-down, CA is triggered when nodes fall below utilization thresholds, the default is 50%. As active nodes are packed more efficiently, underutilized nodes become easier candidates for removal. @@ -196,14 +196,14 @@ These components are complementary to each other. Configurable Scheduler Profile 3. What if a resource, like `memory`, is omitted in the `scoringStrategy`? -If a resource is omitted in the `scoringStrategy`, then that resource will not be considered in the filter or scoring cycles of the defined Configurable Scheduler Profile. If that resource should be considered, but with a reduced influence on the final score, it can be included with reduced weight. + If a resource is omitted in the `scoringStrategy`, then that resource will not be considered in the filter or scoring cycles of the defined Configurable Scheduler Profile. If that resource should be considered, but with a reduced influence on the final score, it can be included with reduced weight. 4. Can multiple Configurable Scheduler Profiles be used for different workloads on the same cluster? Yes, multiple scheduling profiles can coexist in a single cluster. This allows different placement strategies (for example, cost‑optimized vs. latency‑sensitive workloads) to run side‑by‑side. Visit the documentation for a [multiple scheduler profiles example][configure-multi-config] - Multiple profiles can be defined centrally in a single scheduler configuration. - Individual workloads select a profile via `schedulerName` in the pod spec. 5. How do I monitor whether my scheduler profile is improving utilization? Monitor these signals to confirm that the scheduler is behaving correctly. Over time, you should see higher average node utilization, reduced variance between nodes, and fewer lightly utilized nodes. - - Track node‑level utilization metrics, including CPU and memory utilization per node and distribution of pods across nodes, using Azure Monitor Container Insights and `kubectl top nodes` for quick validation. + - Track node‑level utilization metrics, including CPU and memory utilization per node and distribution of pods across nodes, using Azure Monitor Container Insights, and AKS node viewer [tool][aks-node-viewer] or and `kubectl top nodes` for quick validation. - Review autoscaler outcomes, looking for fewer scale‑ups during normal load and more decisive scale‑downs after demand drops. - Measure cost metrics, such as reduced idle costs when you use the [Cost Analysis add-on][aks-cost-analysis-add-on]. @@ -228,3 +228,4 @@ With Configurable Scheduler Profiles, teams gain fine-grained control over pod p [aks-cost-analysis-add-on]: https://learn.microsoft.com/azure/aks/cost-analysis [wb-gpu-utilization]: https://wandb.ai/wandb_fc/articles/reports/Monitor-Improve-GPU-Usage-for-Model-Training--Vmlldzo1NDQzNjM3 [deep-dive-scheduler-framework]: https://helayoty.org/blog/inside-kube-scheduler-the-plugin +[aks-node-viewer]: https://github.com/Azure/aks-node-viewer From e3de1dd72379b0cffb45b07fa4ce76eb6b4baac0 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Tue, 31 Mar 2026 17:07:43 -0700 Subject: [PATCH 134/164] Refactor blog post on AKS Configurable Scheduler Profiles Revised blog content for clarity and improved flow regarding Configurable Scheduler Profiles on AKS. --- .../index.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md index 81ee88f93..fbe775929 100644 --- a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md @@ -13,7 +13,7 @@ In 2025, Datadog found most Kubernetes containers use less than [25% of their re This blog explains how the default Kubernetes scheduler places pods, where the defaults fall short, and how to increase node utilization using Configurable Scheduler Profiles on AKS. 1. [How does kube-scheduler work?](#how-does-the-default-kubernetes-scheduler-place-pods) -2. [Use Configurable Scheduler Profiles to increase node utilization and operator control](#configurable-scheduler-profiles-on-aks) +2. [Use Configurable Scheduler Profiles to increase node utilization and operator control](#increase-node-utilization-and-operator-control) 3. [Increase AKS cluster CPU utilization up to 85% with Configurable Scheduler](#increase-aks-cpu-utilization) 4. [Increase AKS cluster GPU or CPU utilization while balancing memory with Configurable Scheduler](#increase-aks-gpu-utilization) 5. [FAQ: How do Configurable Scheduler Profiles interact with autoscalers?](#faq) @@ -57,14 +57,17 @@ A profile is a set of one or more in-tree scheduling plugins and configurations ## Increase node utilization and operator control -In this simple scale-out scenario, when you manually increase replicas from 8 to 30 with identical pod specs, the default scheduler distributes pods evenly across nodes. Configurable Scheduler Profiles that use the `NodeResourcesFit` plugin show a visible consolidation pattern that differs from the default scheduler's logic. Instead of spreading pods evenly, the scheduler intentionally concentrates workloads onto fewer nodes. This shift occurs without changing the workload, node size, or autoscaling behavior - only the scheduler’s scoring logic. +The default scheduler distributes pods evenly across nodes in this simple scale-out scenario, manually increasing CPU-bound replicas from 8 to 30 with identical pod specs. + +Configurable Scheduler Profiles that use the `NodeResourcesFit` plugin show a visible consolidation pattern that differs from the default scheduler. This shift occurs without changing the workload, node size, or autoscaling behavior - only the scheduler’s scoring logic. While this experiment uses intentionally simple, CPU-bound containers to isolate scheduling behavior, the placement patterns observed here generalize to more complex workloads where consolidation and utilization efficiency matter. This change in distribution shape enables downstream efficiencies: improved control for platform engineers, efficient resource usage, and cost optimization that are difficult to achieve when pods are evenly spread. ![Table showing increased node utilization with the node bin packing scheduler profiles versus the pod distribution using the default scheduler](./default-config-scheduler-comparison.png) -The key takeaway is that each profile expresses a distinct scheduling intent. The next two sections detail how MostAllocated and RequestedToCapacityRatio achieve these outcomes. -| Scheduler | Profile | Scheduling intent | Operator Benefits | +**The key takeaway is that each profile expresses a distinct scheduling intent. The next two sections detail how the scoring strategies, MostAllocated and RequestedToCapacityRatio achieve these outcomes.** + +| Scheduler | Scoring Strategy | Scheduling intent | Operator Benefits | |---|---|---|---| | Default scheduler | NodeResourcesFit: LeastAllocated | Balance and hotspot reduction | No tuning | | Configurable Scheduler Profile | NodeResourcesFit: MostAllocated | Maximize consolidation / bin‑packing | Maximum node utilization, highest cost reduction potential | From 10dfecc34dd80ab674666348324257ea902fc9d6 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Wed, 1 Apr 2026 11:35:21 -0700 Subject: [PATCH 135/164] Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../index.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md index fbe775929..c42c495cc 100644 --- a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md @@ -71,7 +71,7 @@ While this experiment uses intentionally simple, CPU-bound containers to isolate |---|---|---|---| | Default scheduler | NodeResourcesFit: LeastAllocated | Balance and hotspot reduction | No tuning | | Configurable Scheduler Profile | NodeResourcesFit: MostAllocated | Maximize consolidation / bin‑packing | Maximum node utilization, highest cost reduction potential | -| Configurable Scheduler Profile | NodeResourcesFit: RequestedToCapacityRatio | Targeted utilization with headroom | ✅**Recommended Strategy** Increased utilization with stronger control over consolidation and burst headroom than `MostAllocated` | +| Configurable Scheduler Profile | NodeResourcesFit: RequestedToCapacityRatio | Targeted utilization with headroom | ✅ **Recommended strategy:** Increased utilization with stronger control over consolidation and burst headroom than `MostAllocated` | ### Increase AKS CPU utilization @@ -185,11 +185,11 @@ spec: ### FAQ -1. Which Bin packing strategy does AKS recommend to increase node utilization? +1. Which bin-packing strategy does AKS recommend to increase node utilization? - AKS recommends using the scoring strategy `RequestedToCapacityRatio` because it provides a more granular scoring approach allowing users to define an ideal utilization curve for their respective nodes. For example, this bin packing strategy allows users to configure a target utilization of 85%. +AKS recommends using the scoring strategy `RequestedToCapacityRatio` because it provides a more granular scoring approach allowing users to define an ideal utilization curve for their respective nodes. For example, this bin packing strategy allows users to configure a target utilization of 85%. -2. How does Configurable Scheduler Profiles interact with autoscalers such as Node Auto Provisioning (NAP), Cluster Autoscaler (CA), and Vertical Pod Autoscaler (VPA)? +2. How do Configurable Scheduler Profiles interact with autoscalers such as Node Auto Provisioning (NAP), Cluster Autoscaler (CA), and Vertical Pod Autoscaler (VPA)? These components are complementary to each other. Configurable Scheduler Profiles influence how pods are placed on nodes, while autoscalers make scaling decisions based on resource utilization and pending pods. @@ -201,12 +201,14 @@ spec: If a resource is omitted in the `scoringStrategy`, then that resource will not be considered in the filter or scoring cycles of the defined Configurable Scheduler Profile. If that resource should be considered, but with a reduced influence on the final score, it can be included with reduced weight. -4. Can multiple Configurable Scheduler Profiles be used for different workloads on the same cluster? Yes, multiple scheduling profiles can coexist in a single cluster. This allows different placement strategies (for example, cost‑optimized vs. latency‑sensitive workloads) to run side‑by‑side. Visit the documentation for a [multiple scheduler profiles example][configure-multi-config] +4. Can multiple Configurable Scheduler Profiles be used for different workloads on the same cluster? + + Yes, multiple scheduling profiles can coexist in a single cluster. This allows different placement strategies (for example, cost‑optimized vs. latency‑sensitive workloads) to run side‑by‑side. Visit the documentation for a [multiple scheduler profiles example][configure-multi-config] - Multiple profiles can be defined centrally in a single scheduler configuration. - Individual workloads select a profile via `schedulerName` in the pod spec. 5. How do I monitor whether my scheduler profile is improving utilization? Monitor these signals to confirm that the scheduler is behaving correctly. Over time, you should see higher average node utilization, reduced variance between nodes, and fewer lightly utilized nodes. - - Track node‑level utilization metrics, including CPU and memory utilization per node and distribution of pods across nodes, using Azure Monitor Container Insights, and AKS node viewer [tool][aks-node-viewer] or and `kubectl top nodes` for quick validation. + - Track node‑level utilization metrics, including CPU and memory utilization per node and distribution of pods across nodes, using Azure Monitor Container Insights, the AKS node viewer [tool][aks-node-viewer], or `kubectl top nodes` for quick validation. - Review autoscaler outcomes, looking for fewer scale‑ups during normal load and more decisive scale‑downs after demand drops. - Measure cost metrics, such as reduced idle costs when you use the [Cost Analysis add-on][aks-cost-analysis-add-on]. From 884a80cf013f8b0606074da6742b3e830efb006b Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Wed, 1 Apr 2026 11:58:12 -0700 Subject: [PATCH 136/164] Refine content on kube-scheduler and scheduler profiles Updated text for clarity and emphasis on the role of kube-scheduler. Enhanced descriptions of Configurable Scheduler Profiles and their benefits for node utilization. --- .../index.md | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md index c42c495cc..da47fea8c 100644 --- a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md @@ -6,9 +6,9 @@ authors: [colin-mixon] tags: [ai, performance, scheduler, best-practices, cost] --- -In 2025, Datadog found most Kubernetes containers use less than [25% of their requested CPU][datadog-state-of-containers], and in 2023 Weights and Biases found that nearly a third of GPU users [average less than 15% utilization][wb-gpu-utilization]. This data signals that underutilized resources materially contribute to increased infrastructure cost. While there are many factors that impact node utilization, as a core component of the Kubernetes control plane, the kube-scheduler has a big influence on node utilization. +In 2025, Datadog found most Kubernetes containers use less than [25% of their requested CPU][datadog-state-of-containers], and in 2023, Weights and Biases found that nearly a third of GPU users [average less than 15% utilization][wb-gpu-utilization]. This data signals that underutilized resources materially contribute to increased infrastructure cost. While there are many factors that impact node utilization, as a core component of the Kubernetes control plane, the kube-scheduler plays a critical role in node utilization. -[Configurable Scheduler Profiles][concepts-scheduler-configuration] on AKS lets customers configure their own scheduling logic: enable specific plugins, adjust plugin priorities, and tune parameter weights. The result: higher node density, better GPU utilization, and lower infrastructure costs. +[Configurable Scheduler Profiles][concepts-scheduler-configuration] on AKS lets customers configure their own scheduling logic: enable specific plugins, adjust plugin priorities, and tune parameter weights. **The result: higher node density, better GPU utilization, and lower infrastructure costs.** This blog explains how the default Kubernetes scheduler places pods, where the defaults fall short, and how to increase node utilization using Configurable Scheduler Profiles on AKS. @@ -43,9 +43,9 @@ For a deep dive on the Kubernetes Scheduler visit technical blog from SIG Schedu ### Limitations of the default Kubernetes scheduler -The default scheduler is primarily designed for general-purpose workloads that prioritize nodes with the most available resources using the _LeastAllocated_ scoring strategy. This spreads pods across nodes, even when they could safely be packed more densely. While this works well for many services, the default scheduling criteria, and their fixed priority order, are not suitable for workloads that demand optimizing GPU and CPU utilization. In these scenarios, spreading pods across nodes can lead to fragmented resources, underutilized GPUs, and increased infrastructure cost. +The default scheduler is primarily designed for general-purpose workloads. It prioritizes nodes with the most available resources using the _LeastAllocated_ scoring strategy. This strategy spreads pods across nodes, even when they could safely be packed more densely. While this works well for many services, the default scheduling criteria, and their fixed priority order, are not suitable for workloads that demand optimizing GPU and CPU utilization. In these scenarios, spreading pods across nodes can lead to fragmented resources, underutilized GPUs, and increased infrastructure cost. -Today, the default scheduler on AKS lacks the flexibility for users to change which criteria should be prioritized, or ignored, in the scheduling cycle on a per cluster basis. This rigidity often forces users to either accept suboptimal placement or manage a separate custom scheduler, both of which increase operational complexity. Starting with Kubernetes v1.33, AKS introduces Configurable Scheduler Profiles - an AKS-managed CRD - that exposes the upstream scheduling framework without maintaining a separate scheduler. Now, users can adjust the `NodeResourcesFit` plugin from the default configuration to favor nodes with higher utilization to achieve more efficient bin‑packing and reduce infrastructure cost. +Today, the default scheduler on AKS lacks the flexibility for users to change which criteria should be prioritized, or ignored, in the scheduling cycle on a per cluster basis. This rigidity often forces users to either accept suboptimal placement or manage a separate custom scheduler, both of which increase operational complexity. Starting with Kubernetes v1.33, AKS introduces [Configurable Scheduler Profiles][concepts-scheduler-configuration] - an AKS-managed CRD - that exposes the upstream scheduling framework without maintaining a separate scheduler. Now, users can adjust the `NodeResourcesFit` plugin from the default configuration to favor nodes with higher utilization to achieve more efficient bin‑packing and reduce infrastructure cost. ## Configurable Scheduler Profiles on AKS @@ -57,15 +57,19 @@ A profile is a set of one or more in-tree scheduling plugins and configurations ## Increase node utilization and operator control -The default scheduler distributes pods evenly across nodes in this simple scale-out scenario, manually increasing CPU-bound replicas from 8 to 30 with identical pod specs. +In this simple scale-out scenario, manually increasing identitical CPU-bound replicas from 8 to 30, the default scheduler distributes pods evenly across nodes. -Configurable Scheduler Profiles that use the `NodeResourcesFit` plugin show a visible consolidation pattern that differs from the default scheduler. This shift occurs without changing the workload, node size, or autoscaling behavior - only the scheduler’s scoring logic. +Configurable Scheduler Profiles configured for bin-packing show a visible consolidation pattern that differs from the default scheduler, and improves capacity for new pods. This shift occurs without changing the workload, node size, or autoscaling behavior - only the scheduler’s scoring logic. -While this experiment uses intentionally simple, CPU-bound containers to isolate scheduling behavior, the placement patterns observed here generalize to more complex workloads where consolidation and utilization efficiency matter. This change in distribution shape enables downstream efficiencies: improved control for platform engineers, efficient resource usage, and cost optimization that are difficult to achieve when pods are evenly spread. +**Scenario: Increase CPU utilization** ![Table showing increased node utilization with the node bin packing scheduler profiles versus the pod distribution using the default scheduler](./default-config-scheduler-comparison.png) -**The key takeaway is that each profile expresses a distinct scheduling intent. The next two sections detail how the scoring strategies, MostAllocated and RequestedToCapacityRatio achieve these outcomes.** +While this experiment uses intentionally simple, CPU-bound containers to isolate scheduling behavior, the placement patterns observed here can be applied to GPU-bound workloads where consolidation and utilization efficiency matter. In this constrained GPU scenario the bin‑packing scheduler plays a critical role in maximizing usable capacity of 4 GPU's spread across 2 nodes. Consolidating single‑GPU workloads onto the same node instead of spreading them evenly, the scheduler avoids stranding idle GPUs and enables all four GPUs to be actively used before new nodes are required. + +**Scenario: Increase GPU utilization** + +This change in distribution shape enables downstream efficiencies: improved control for platform engineers, efficient resource usage, and cost optimization that are difficult to achieve when pods are evenly spread. **The key takeaway is that each profile expresses a distinct scheduling intent. The next two sections detail how the scoring strategies, MostAllocated and RequestedToCapacityRatio achieve these outcomes.** | Scheduler | Scoring Strategy | Scheduling intent | Operator Benefits | |---|---|---|---| From fca01d2b12dfe2a68241944ffc21a003aabbb8f1 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Wed, 1 Apr 2026 12:11:33 -0700 Subject: [PATCH 137/164] Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../index.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md index da47fea8c..725e50d0b 100644 --- a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md @@ -57,7 +57,7 @@ A profile is a set of one or more in-tree scheduling plugins and configurations ## Increase node utilization and operator control -In this simple scale-out scenario, manually increasing identitical CPU-bound replicas from 8 to 30, the default scheduler distributes pods evenly across nodes. +In this simple scale-out scenario, manually increasing identical CPU-bound replicas from 8 to 30, the default scheduler distributes pods evenly across nodes. Configurable Scheduler Profiles configured for bin-packing show a visible consolidation pattern that differs from the default scheduler, and improves capacity for new pods. This shift occurs without changing the workload, node size, or autoscaling behavior - only the scheduler’s scoring logic. @@ -212,10 +212,10 @@ AKS recommends using the scoring strategy `RequestedToCapacityRatio` because it - Individual workloads select a profile via `schedulerName` in the pod spec. 5. How do I monitor whether my scheduler profile is improving utilization? Monitor these signals to confirm that the scheduler is behaving correctly. Over time, you should see higher average node utilization, reduced variance between nodes, and fewer lightly utilized nodes. - - Track node‑level utilization metrics, including CPU and memory utilization per node and distribution of pods across nodes, using Azure Monitor Container Insights, the AKS node viewer [tool][aks-node-viewer], or `kubectl top nodes` for quick validation. - - Review autoscaler outcomes, looking for fewer scale‑ups during normal load and more decisive scale‑downs after demand drops. - - Measure cost metrics, such as reduced idle costs when you use the [Cost Analysis add-on][aks-cost-analysis-add-on]. + - Track node‑level utilization metrics, including CPU and memory utilization per node and distribution of pods across nodes, using Azure Monitor Container Insights, the AKS node viewer [tool][aks-node-viewer], or `kubectl top nodes` for quick validation. + - Review autoscaler outcomes, looking for fewer scale‑ups during normal load and more decisive scale‑downs after demand drops. + - Measure cost metrics, such as reduced idle costs when you use the [Cost Analysis add-on][aks-cost-analysis-add-on]. ## Next steps: Optimize Azure resources and test Configurable Scheduler Profiles on AKS With Configurable Scheduler Profiles, teams gain fine-grained control over pod placement strategies like bin-packing, topology distribution, and resource-based scoring that directly addresses challenges related to application resilience and resource utilization for their AKS clusters. By leveraging these scheduling plugins, AKS users can ensure their workloads make full use of available GPU capacity, reduce idle costs, and avoid costly overprovisioning. This not only improves ROI but also accelerates development by allowing more jobs to run concurrently and reliably. From 0cc3c401bd21721f2cdf5af13593adab8a9482cd Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Wed, 1 Apr 2026 13:20:27 -0700 Subject: [PATCH 138/164] Revise scenarios and FAQs for scheduler profiles Updated scenarios and FAQs for Configurable Scheduler Profiles in AKS, enhancing clarity and detail on CPU and GPU utilization strategies. --- .../index.md | 36 ++++++++++--------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md index 725e50d0b..e69260b1a 100644 --- a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md @@ -61,13 +61,13 @@ In this simple scale-out scenario, manually increasing identical CPU-bound repli Configurable Scheduler Profiles configured for bin-packing show a visible consolidation pattern that differs from the default scheduler, and improves capacity for new pods. This shift occurs without changing the workload, node size, or autoscaling behavior - only the scheduler’s scoring logic. -**Scenario: Increase CPU utilization** +#### Scenario: Increase CPU utilization ![Table showing increased node utilization with the node bin packing scheduler profiles versus the pod distribution using the default scheduler](./default-config-scheduler-comparison.png) -While this experiment uses intentionally simple, CPU-bound containers to isolate scheduling behavior, the placement patterns observed here can be applied to GPU-bound workloads where consolidation and utilization efficiency matter. In this constrained GPU scenario the bin‑packing scheduler plays a critical role in maximizing usable capacity of 4 GPU's spread across 2 nodes. Consolidating single‑GPU workloads onto the same node instead of spreading them evenly, the scheduler avoids stranding idle GPUs and enables all four GPUs to be actively used before new nodes are required. +While this experiment uses intentionally simple, CPU-bound containers to isolate scheduling behavior, the placement patterns observed here can be applied to GPU-bound workloads where consolidation and utilization efficiency matter. In this constrained GPU scenario the bin‑packing scheduler plays a critical role in maximizing usable capacity of 4 GPU's spread across 2 nodes. Consolidating single‑GPU workloads onto the same node instead of spreading them evenly, the scheduler avoids stranding idle GPUs and enables all four GPUs to be actively used before new nodes are required. -**Scenario: Increase GPU utilization** +#### Scenario: Increase GPU utilization This change in distribution shape enables downstream efficiencies: improved control for platform engineers, efficient resource usage, and cost optimization that are difficult to achieve when pods are evenly spread. **The key takeaway is that each profile expresses a distinct scheduling intent. The next two sections detail how the scoring strategies, MostAllocated and RequestedToCapacityRatio achieve these outcomes.** @@ -191,31 +191,35 @@ spec: 1. Which bin-packing strategy does AKS recommend to increase node utilization? -AKS recommends using the scoring strategy `RequestedToCapacityRatio` because it provides a more granular scoring approach allowing users to define an ideal utilization curve for their respective nodes. For example, this bin packing strategy allows users to configure a target utilization of 85%. + AKS recommends using the scoring strategy `RequestedToCapacityRatio` because it provides a more granular scoring approach allowing users to define an ideal utilization curve for their respective nodes. For example, this bin packing strategy allows users to configure a target utilization of 85%. 2. How do Configurable Scheduler Profiles interact with autoscalers such as Node Auto Provisioning (NAP), Cluster Autoscaler (CA), and Vertical Pod Autoscaler (VPA)? - These components are complementary to each other. Configurable Scheduler Profiles influence how pods are placed on nodes, while autoscalers make scaling decisions based on resource utilization and pending pods. + These components are complementary to each other. Configurable Scheduler Profiles influence how pods are placed on nodes, while autoscalers make scaling decisions based on resource utilization and pending pods. - - **Node Auto Provisioning (NAP)** is triggered when pods are unschedulable. If a suitable node already exists, that pod will be scheduled with the defined Configurable Scheduler Profile. If no suitable node exists, NAP provisions new capacity and schedules the pod. - - **Cluster Autoscaler (CA)** manages node scale-up and scale-down. On scale-up, CA is triggered when there aren't any suitable nodes available for the pending pod. Using Configurable Scheduler Profiles ensures nodes are only scaled when provisioned resources are no longer suitable. On scale-down, CA is triggered when nodes fall below utilization thresholds, the default is 50%. As active nodes are packed more efficiently, underutilized nodes become easier candidates for removal. - - **VPA** optimizes resource utilization patterns in pods. As pods are recreated with updated CPU and memory requests, they are scheduled using the configured scheduler profile, allowing placement decisions to reflect the new resource requirements. + - **Node Auto Provisioning (NAP)** is triggered when pods are unschedulable. If a suitable node already exists, that pod will be scheduled with the defined Configurable Scheduler Profile. If no suitable node exists, NAP provisions new capacity and schedules the pod. + - **Cluster Autoscaler (CA)** manages node scale-up and scale-down. On scale-up, CA is triggered when there aren't any suitable nodes available for the pending pod. Using Configurable Scheduler Profiles ensures nodes are only scaled when provisioned resources are no longer suitable. On scale-down, CA is triggered when nodes fall below utilization thresholds, the default is 50%. As active nodes are packed more efficiently, underutilized nodes become easier candidates for removal. + - **Vertical Pod Autoscaler (VPA)** optimizes resource utilization patterns in pods. As pods are recreated with updated CPU and memory requests, they are scheduled using the configured scheduler profile, allowing placement decisions to reflect the new resource requirements. 3. What if a resource, like `memory`, is omitted in the `scoringStrategy`? - If a resource is omitted in the `scoringStrategy`, then that resource will not be considered in the filter or scoring cycles of the defined Configurable Scheduler Profile. If that resource should be considered, but with a reduced influence on the final score, it can be included with reduced weight. + If a resource is omitted in the `scoringStrategy`, then that resource will not be considered in the filter or scoring cycles of the defined Configurable Scheduler Profile. If that resource should be considered, but with a reduced influence on the final score, it can be included with reduced weight. 4. Can multiple Configurable Scheduler Profiles be used for different workloads on the same cluster? - Yes, multiple scheduling profiles can coexist in a single cluster. This allows different placement strategies (for example, cost‑optimized vs. latency‑sensitive workloads) to run side‑by‑side. Visit the documentation for a [multiple scheduler profiles example][configure-multi-config] - - Multiple profiles can be defined centrally in a single scheduler configuration. - - Individual workloads select a profile via `schedulerName` in the pod spec. + Yes, multiple scheduling profiles can coexist in a single cluster. This allows different placement strategies (for example, cost‑optimized vs. latency‑sensitive workloads) to run side‑by‑side. Visit the documentation for a [multiple scheduler profiles example][configure-multi-config]. -5. How do I monitor whether my scheduler profile is improving utilization? Monitor these signals to confirm that the scheduler is behaving correctly. Over time, you should see higher average node utilization, reduced variance between nodes, and fewer lightly utilized nodes. + - Multiple profiles can be defined centrally in a single scheduler configuration. + - Individual workloads select a profile via `schedulerName` in the pod spec. + +5. How do I monitor whether my scheduler profile is improving utilization? + + Monitor these signals to confirm that the scheduler is behaving correctly. Over time, you should see higher average node utilization, reduced variance between nodes, and fewer lightly utilized nodes. + + - Track node‑level utilization metrics, including CPU and memory utilization per node and distribution of pods across nodes, using Azure Monitor Container Insights, the AKS node viewer [tool][aks-node-viewer], or `kubectl top nodes` for quick validation. + - Review autoscaler outcomes, looking for fewer scale‑ups during normal load and more decisive scale‑downs after demand drops. + - Measure cost metrics, such as reduced idle costs when you use the [Cost Analysis add-on][aks-cost-analysis-add-on]. - - Track node‑level utilization metrics, including CPU and memory utilization per node and distribution of pods across nodes, using Azure Monitor Container Insights, the AKS node viewer [tool][aks-node-viewer], or `kubectl top nodes` for quick validation. - - Review autoscaler outcomes, looking for fewer scale‑ups during normal load and more decisive scale‑downs after demand drops. - - Measure cost metrics, such as reduced idle costs when you use the [Cost Analysis add-on][aks-cost-analysis-add-on]. ## Next steps: Optimize Azure resources and test Configurable Scheduler Profiles on AKS With Configurable Scheduler Profiles, teams gain fine-grained control over pod placement strategies like bin-packing, topology distribution, and resource-based scoring that directly addresses challenges related to application resilience and resource utilization for their AKS clusters. By leveraging these scheduling plugins, AKS users can ensure their workloads make full use of available GPU capacity, reduce idle costs, and avoid costly overprovisioning. This not only improves ROI but also accelerates development by allowing more jobs to run concurrently and reliably. From c6284918688c662b1cf36bbff1336e76624b5f06 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Wed, 1 Apr 2026 13:45:00 -0700 Subject: [PATCH 139/164] Revise scheduler profiles section for clarity and detail Updated scenarios for CPU and GPU utilization with improved explanations and visual comparisons. Enhanced clarity on scheduling strategies and their benefits. --- .../index.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md index e69260b1a..0d796ab5d 100644 --- a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md @@ -61,13 +61,11 @@ In this simple scale-out scenario, manually increasing identical CPU-bound repli Configurable Scheduler Profiles configured for bin-packing show a visible consolidation pattern that differs from the default scheduler, and improves capacity for new pods. This shift occurs without changing the workload, node size, or autoscaling behavior - only the scheduler’s scoring logic. -#### Scenario: Increase CPU utilization - ![Table showing increased node utilization with the node bin packing scheduler profiles versus the pod distribution using the default scheduler](./default-config-scheduler-comparison.png) While this experiment uses intentionally simple, CPU-bound containers to isolate scheduling behavior, the placement patterns observed here can be applied to GPU-bound workloads where consolidation and utilization efficiency matter. In this constrained GPU scenario the bin‑packing scheduler plays a critical role in maximizing usable capacity of 4 GPU's spread across 2 nodes. Consolidating single‑GPU workloads onto the same node instead of spreading them evenly, the scheduler avoids stranding idle GPUs and enables all four GPUs to be actively used before new nodes are required. -#### Scenario: Increase GPU utilization +![Table showing increased node utilization with the node bin packing scheduler profiles versus the pod distribution using the default scheduler for gpu's across multiple scheduling iterations](./default-config-scheduler-comparison-gpu.png) This change in distribution shape enables downstream efficiencies: improved control for platform engineers, efficient resource usage, and cost optimization that are difficult to achieve when pods are evenly spread. **The key takeaway is that each profile expresses a distinct scheduling intent. The next two sections detail how the scoring strategies, MostAllocated and RequestedToCapacityRatio achieve these outcomes.** @@ -75,7 +73,7 @@ This change in distribution shape enables downstream efficiencies: improved cont |---|---|---|---| | Default scheduler | NodeResourcesFit: LeastAllocated | Balance and hotspot reduction | No tuning | | Configurable Scheduler Profile | NodeResourcesFit: MostAllocated | Maximize consolidation / bin‑packing | Maximum node utilization, highest cost reduction potential | -| Configurable Scheduler Profile | NodeResourcesFit: RequestedToCapacityRatio | Targeted utilization with headroom | ✅ **Recommended strategy:** Increased utilization with stronger control over consolidation and burst headroom than `MostAllocated` | +| Configurable Scheduler Profile | NodeResourcesFit: RequestedToCapacityRatio | Targeted utilization with headroom | ✅ **Recommended strategy** Increased utilization with stronger control over consolidation and burst headroom than `MostAllocated` | ### Increase AKS CPU utilization From fa1fd6e05543b11406e648482bccca5314bd63eb Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Wed, 1 Apr 2026 13:45:38 -0700 Subject: [PATCH 140/164] Add files via upload --- .../default-config-scheduler-comparison-gpu.png | Bin 0 -> 46010 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 website/blog/2026-03-31-aks-config-scheduler-profiles-preview/default-config-scheduler-comparison-gpu.png diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/default-config-scheduler-comparison-gpu.png b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/default-config-scheduler-comparison-gpu.png new file mode 100644 index 0000000000000000000000000000000000000000..964c141f006680dcbaf7d2ad6fc737ec74e421dd GIT binary patch literal 46010 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�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 Date: Wed, 1 Apr 2026 13:51:30 -0700 Subject: [PATCH 141/164] Delete website/blog/2026-03-31-aks-config-scheduler-profiles-preview/default-config-scheduler-comparison.png --- .../default-config-scheduler-comparison.png | Bin 47648 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 website/blog/2026-03-31-aks-config-scheduler-profiles-preview/default-config-scheduler-comparison.png diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/default-config-scheduler-comparison.png b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/default-config-scheduler-comparison.png deleted file mode 100644 index 89452abd7bc0174316433111e3fad092e0d8107a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47648 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
+KrA(S)sJ_q|soGcwy`?%Oh4Q0scI%FlDCftXej z4}?{3707qDAsoVmW6VOKz}l8cI?}?U^2_}GJIDK!N95c!e_gmo1N#C-sKW}2`x@~y zAz-|;kpAcGKQLbL{p!Y=mY@&q!ug(j*2M9j;b>UOcROE79DD@{WlPt6*htfpgYdFN z{*jJ4_v#F`vY@8Z%yB;rf+#?xOeqLUZ1m7gV~IR`%B)fcAoG#@$*y*jvXmCi8RuJPt2Ni7@#jPS2!p>;FW+xW{!W zXAlpVEmP2yN%jIXZV0la;NGWx+PTAC$T&A1_u1Ds=ypUm&ObG|?gJ#ToAR=y+ZB6N zv`(EjHuhyz`Y-b>`ke=NJiS~@8Z~=79>rvC$OGPD;DqKQ97BnV^Y+c<8HA~A*50qc zixVZcUoY8u9ZgVm)^lDpckOSVdI^g6KuydG?j3kO?NR)2GZv3A)dK!UM&k9){?^09 zcmv0JQ3>$0T!PAf%=OEE>!3e5JDNQ1Wk*fQ-ZRF>_aeSs48NX@3n>HxvwX+LbNrcG z_SO@;z{t?W5)!#Ay zaAe;f0&dY>Z-f8d3-NpYo+FsfwTZ&!0mmY~HwLf}ht3+a*RT4u%{qa+6$UAfH`^!w z1*N)76cD^%SwRPUAgtJ2h1Fy#wwNNh`+e`L#E#gY@^Va@Ugm-}ND3PO`uyyC%O6Mr zDJDg*FlC3*6I(CX%U!KObHn;9lQq)@@{pZtX!13@F6J%>3VS>6I$so#iSX1D6#vwU z?pYtCbNi=;7Sh*q^G~qDb>P3;k*}%(Sl)5fw&Gnp1@AYj>NA^O&p{{cuVB5D885XM zHlFm(#RU#dkA8bvSgH$T_6cM3X}w1K1SnAcCzbsvXdCV8Uv>VwfdE|>ZPTDFKHNl? z#^xu8w?fp=UElZq*Gl-t>B9vp5ID6#Nvt0D-oq5xS@;$!+xol>#pm!6?g4YW<0Eo~ zg?*$A8bnK}r5B1VyZL*AG->&pL8&-fXchF!+Q_%(H2Oc#>i_gB7ICx(As&&DMJ-$5+whSw=3Fz4)$}g6#{GE^ zZ7eCHu_o)>y4v&7-%;_n;ht#4MYo~(iBUFp?FM4Epjfi9m8Ut7?d*H?J0&!IMByLP zeaw%{$czO+x9BnBSCJZwhG|yO`V6RpYO^K3n>xc?YzWWBbTIfe<*Y8*&<4zo=QfwK z`Mp>u0`DTaIGbz;*@Y7O$8YpT4Ju1JDbwM(sFc0^5NHMIvH$M512zI`NEqllhr(B2 zmfAPK>7k;{%C9YiuRTk008(Kxd!s3#xhzg6!JYbk&05xTXv*?b1Ku6LBgl#!4*al$iC7J54{ zp$X|s@CA%0eN8U;;`dyTY! zqIE#_xxqwJ3(c3HbMV-(en-%%qPLM8zB52*aL`T*t2xC+Xjh%fQGfDBxGm2zVhH1o z;zi95fhz!5XjJ=pnG|ACPis>MP-Rq{95`R}fmx|l8WDX~D<%vT9L$ri+dJB};~W;n z9}VmOUYgv1n0fA%fBhW)V)w0BwFE}UWB4D45&i$at?%2)k^dc-8*Zx_5uB+1^W?$n zeycEFO&xhXeN*6hO9}bppdvBKxs>YvX%piF6t3a(s&X2RB(hk9SP8My3*APbJ=I+m zKC8i@Qo7(lYhAoZab%%YzIR+eA0zW5DF+IN6+6Lvg=K`YEjy^|AAaSsB6 z2v+H-s$g;4N}$vbJ3MOjNyS=ca+(ljC6K)T%~28ihTL<-Ti=@u{v{`>Bd*Zt2MJ7T z)!Sg8I7Yc;(@1lDD(Rg1fK zrQoojj@aT8a;NC*%4TPB4e5QnQLE1DTqt*b$fm03i2U?}CjvZa^+B8iIqhfcO}NuG z6M?Ec`hRdBbUOxdg?Q?xs&ROU5Oy+lQ63*YUoCT{AEY*8FyU)w0Lb3)9W&$;Mk>yE z^%tMQ{<;d~`Je3%TnZefuy*tm`ePm(a2xSO@Z{7XW{en1G~xk(na8NceuYJKEsIa zt5+?yezl0JJ!Y-`Ep};G@r>0QedYS!X+Za(q{2~JV~}R(%1`+ke0C1Z>#^tLBzF$% z#4;_7>3Q*S=GLOk9aWW$t{iZ`)OZ&(os!i_N`T(P zxBTKFkRUEG`su^zCOVx;Uu2Gs&Q~EGbW4Oim$rGNL6)jQeUT z6H=P;s}9lGayR2=KUVK4F&BpY+Eg{c)Hw9%jo!#n$a@D4tZJRK^xOv=7V$~uAMX;5 zpBMv%$)7d``qvYNA~+uW1c=0rJz8AZMxNxU$}k#$>5}6ma7~6^mLK(yR?k_dUz#%E zOi46^9t)oLP;aZxT8G!x6kz7$yU34CAGW)wKv`eU6{4wP_QIYejOMLa|R@=fJ z{8%VeU1$Qvp)NADpWI%*jpf&c@taV8On4UMV;RdiI4eVx59u`=-LbtjQ+o{ip}#;7 zq9|W{^XxRcl&ad{j>V&?Jrc*2cyLkj+#V6~3o@pLWT#gu%X{lHwI@30=b|h~I8o!+ z0I>y$QqDt>=z+)Fk1Q=DRXssP>R!XLBjMr0m4O2omv_Ra?^laTN><~dXPsdHHLbs^AZck4N{RL4h zZiL}|+e(V>kz*zLDuFtECi1MMbI8{BpAgmG9zwUi2&N6=XvD;GCbA2e6VD09zh_cjTy4d}g8O=*|&C-3UVq+P)Go0{U|YHT&Og-3z| z^;MI?*UiYYug3-a0~}{(cA}0nRBkH@gs({s708!gHM^+vb?XSX3xx-*tKS_3DiF3HbKJ&Z41bD$rrJNu8`O=R??${J$ zTl@`QZ1bFQl&>xMT(D7Z&u-N9*a|JWUZyO?jSl=kqT6XRJWZ`SlPYtcC^I|6H)bg( zQzly7Ns@8^b7Tid+0_%H|GXq&vRN(&IMq5wqIPzr=^*`@AT+_#YEc;W^B@%jxYEl8 zbIo35uzeza;89ofP=Xn7rFT{<@y1)V9g4%PJ$WKM?=da_9S7vu3Y{XTjQ)u{^5!W} z`c@8HbPB9L`pXE)U+kMW;T_wTdMZ$^IC{pbKG%PdTF#K!TiPq3t8?rk?(VUKjFeK9 zWkq~{;+W5hUt5=zh4ov{ShIlt*VhWPu`Zo=4zrISbY~4;C(#ud(VY4+#DQw+Kh~)v z8snfqE1O<28udJu!idZfFa4nlO>g~caLsnFii`VnXD|NkuJlvZ2N2Z}v;?Hu7h1#a z5oa#E&_b3)za$B$KwtzLlF&&-dQklICL>!iPcaY;sutErC+zH33dd`IwMm#X$e`xJY@mK3YObM$oIyXl1uY1sU+j2WZLg zHy;$H=cuoqYW0pvW3p&GNw!1%U{Q**!8}^2yIXfpJjt^Vxq;sDb+(FM61E%quC0R$ zH9l{B2$G&`Xgp#W3q0{~J@;YMR-}co3xpET9-9lIV{qi5b|-0tt!=5wns}5~Yy^oO z&6QTg@7>sT4-tKm4*XjW;4G1IN#?W6OIUdU<-me@!L`<&7?KU`L+maX)Qqm$t-u2v zm@uvMEzG{&ds1m$_4=KYAI#({s@Y%MJYhfW+x!!SvpYd<%fGj$;?0` zxEs}RgpSE@xB~5o^7Vy4H_Y=5N!_Kyg8>ppEENi?i)}WCP@-MO55!=)rRew7>VAW* zCdzQW92aZSbhhPwww*hr(@v9>l&tCD!oiut)$g>rdy#FkZSr&OdW_rUC@T!b-R6~n z0S)ea+6MK|H_Ko!Xp>G8bl6g_)6OD1qa?&TQr6a!JL%fXWjpQ-p@g6<=cn;`c z@Ym_^1y4F95XTuHo_{JWg5IhBIO;h+{iUFm7dh?67LV@=z z@cXBqW#{E%p9VmLofX>H3QC>~Bhgp10oAD(rmUG`Iew#$M4qIcwy=mEFh+(Sz37{U zRs1;pD#Y*#NoQU9rw4>I6fB0fOf3N(E6}hAkgz8Xc#LETtf*~JyF@Uq^D_O~Zdtpj zU>Sn0pTTRSXxT--%s11Uyna$>k%)P{)>|6psxTn5pfI*57o&fhQYS}oS4GB-z=jLp zc(n!*g;{462B4(=O>lmb*gJk%%Wf^j)DJ=Lc?{jCk#D)ErM#BZpBJ*HvX|f%5n;&y z;n(Q@Bi!6ex!YuG5!Q9MH0Aqfx82ZiTc>PKE8md3>_}GwokX7&nDUYI^c zmF^y~C*?OL>n#3=tmm_CJ1g;(MY@kRK~l#PgwH;ke`I*G6((Af-#T{=ZqBVKL~t;% z8l+a%N{jPoXl#as;|@4Z0i+9Qh;JWXdCOsdvgj@nBDJ7xiCHAHAkzny))e%~Sf4(l69jN0tMczUZ@!-V zv$1aG`4&|b+Qz(Z&Lz2nO>(HqG_0k{tIXG(e{m;1Bjl)~mHD_#o0fYfzS=E6%PEkF zpxhmw!Or`4vEnPnQGX9`KYzoD!H4GA6UQ3>d}c&ZKei5rhxs}P{dEL5*v2qv(E_M^ zQ1IuTcCpjiyv6&iTe${(xD!e2lt1t;0P9y+s6@aT-DE~W$3P0G&OI*I-Zf81rty;M zo9G15OB~}esMQEIX(#vW8=6FMbLCyvaguO7{McA;@(tU&Y4qu#fZ-3UwAz+|&+uk7 zfc)I@00nD`7&8ZJlSksZ3)d`g7_^~MiwV(IZkVC!yH9AH4%FbrtF8+~HiPiXx_4Ps zv$_90Gs;F{#x}8Xk@5`RKX{;g!RB9=oePnh%C|h5&gZI07JKYY*k})-=3rNzv)$sj z1u9X{jF<^y$9QTHQh<>yZoqfMfnM2bHFSCCmwSfNpT~8 zvZZmvkIH*Oh`nWBBuaF{+Ft#Dx9?kxy>{6LcmGkva<~0pJF=HZjjzm0eLnD%aj5umzlg@Mfoh)z9tJ4&aKyIJv`eai!u&k(1m6urvdE#Y_vxxQv!&bV z!hB<3Z%Xf`+8>;p) zXb5y<-bi{UyVSELzCN!GOE(6Xbf`Y#!JlTI%BXG9j~ZZ!s2vG9b3Krd7pTi zz3JimRkd=1Hw{E|Jh>xfqbocsqoQstl43>RQDDI~$F~8tkt5{-PkmsvP z+79>9y@@3!xPCycGN>xBGDaPl5*xmfQ~XlDy-DQOcED{&#*ZO3{^J9k-Wb|*CRz_~ z#|mw~kaBrD9)m}nk1NT@Aejj%z+O_E>Z3W8sK)^&7NP8w4Y+ZX?6QjN%gzR~;OYGO z?rCst_m3VRTZD9NU;+cHqekr$JI`Z z_j~!-r29gBSiiRike)tyqQ7R|a=mgdMwS5X9@A2az_Q? z$(;T$IY#s*IXo-!H$`aN7RlQs;iU-PX+wPY^80+{$g?;jhF}}6qkf^l$s}E4=J?>n z?zO!N#Dkfv!!8V8#Z5252~AEZupnCA8nTW}vAV&rX>4WSNX;&o{3FX(W#h~Y7WHTM zg7k*!5k7C#CuTVc`@+ntIDD6{U#DO6l59M4*=W8APwFzNF|n99(tPmoCnSjHC<>^F zT%>+FxLbG~6y4}lyMZvVjbw?{D7r6ccICJCF~+y0i<>H6YU!|cMV17$bmH!UsE##; zs-inXk}iGe*V5sPwR1&QpX{PGQGVQH%dDQbe#&X`kW;jfueJs1(zH{@w%o5^pIT8{ zczsMAdk()dF*{64QCfDy=PFM~d8Y%`NOBdUi6v^5&d!&(+jX~c1c`41Nx1lL>25k1 z=CVa*^yJN^5|l8GmMiB==GIR08FYW~&>)vT-xD&WGKFjfeY7>Il(}lGjaB#eak`Qx zbjI#P`N=VTF`@Fo?BR_h+1cN`Q5qHroI4CPd?Z~=6mn`te}zH)InTF5+}kzZaqfd$fg<&B*ZU&17HCUd>uCSMPlqo} za$~3}?5>hWt@mdydTRy=%||dUqdSrQ<6{uv!R30jr|}izQGlxSh#oO9AM&u46_sT* z{F@=8d1&vQdg4i2A##NwD$hkhbTZ z<0*sr<_{1m|Mfl6k*nyjLP@i~=2dm1M3T<)UeGaR;p)+ll?xnjZ>-EQ#h86~oq9cS zQ-A`#|7MUYayV5b^=wPMM|&JYv7=}H=tt-UeV@Y2_4{Y!kvDnf^bH~EiH=q0)EaNo zi)JCEUC2$9#^^!S<|w%Hx;VmBp+5E@%xTB+o`mfLHnCrDQ|7^tIHkP3+(Y?Qf^RT8 z%tIl@f&ynZFE{J-dVy%I5?Zbp<;KV0Ap_=;M7@gjKS2vcR!O^VW~HN&;lVKJdN!gK^zLt>CI zDBUBzUepV#z`WM^PouZT1-ueW-;liCfVnhcyzlU?XqM|gJ~uK<#y>D_zrUJGKkG2D zI~?h-+$t0tpfSBDLYbBfsXn*?+`xGVbEP!l;X_ulXV12s4u@$y`isg;Crj%0pF6Xg z*-LB64I4YvAL*6FhU4NOU-)PIYpn1szi_~WSwU{FVZ}kj%#_3ntokROaQ?~&?ts%~ zWB8Ui6TL`Zz6zf%oEB-yw``de+>*B*%D3Svr{tMtxmT;Lraql-P$b5qOVsNj^AD9@ z6*G)3mA-?_dz77Ulqn(VI9%xBNdJ-cIa~YB8G_f%EC_%Uo8edI!3rBeee>7JT5#>J z086lZek8wb?1q*Q!z@ zn;}nZzWa_7cTPS8Y&Kyh@$RWPdO|d~2o$v?Oz-)*r^7_l-GfYY8B)f*80}`uI!s)F4&c4Fy|7VIBg_QstM{$fpB3TEq0n%ZkvVd8c>g6~nH26rtC1 zITVHbIwF4IaldunO+WUytyOAoGh{b5MP$W)cWRDY{satV_WY-O@9?pv8Chd^_^PeB*l7C(P$JuIGg?LRaxeLB*}NRzI*nR&kf zf#i2ps8xfOjnBd;A6;`RCw&PbauGs8AJBTy=3)YKClzkrJ1d|-s&|YIb5&t|JB~TU%lL)pjj`bd#R<|seu^O(>nBtCiUr7uTEUAaj{}T~d>3vV5V$WI5-&20@ zPw#BOmxcfe=L^>XY8w7OlB!!Jsjq|@VreB(hM{24C0BL@9tmAAM`S7XmfXW*z7 zu>G{hgI;I`tj#;h-y>PNb>W1aQ_X$bQwF~fMX5nq^RTo1{@C`;iV9RQC;8a~Lr3PodM=gJovy;AGP#*OZ zTg5w7M|icgV&pBRMms5lUBSs-rsqPJN z&-BzN!;ct*h9PHi@c55owEnOyW22QmAEM_COH8w1!WP`;?Kh;yNR#G4?NDyYPvY?Y z=hnS(8cN;wDWwu}LveN{VjO0tN>i8S0hKApP&$>%-lG!Y#eu0Ns+1y^mY1KyFz^x@ z_*{k~L*rc`G3(#(HdQuW4$i!;uCM8`v!vvFBF|_nS=yjh7^UYg=wu(#dYehmNM%$@YA3N2s;oER&Pz63Jh=h!EQ14<%zt|1HpZ1K~n zaclv@&kGP$Bmh_Tu+?iBVi_2u#j!cI=T?;__CxrB!zh`fD~>udPI7vll&2>ljt9@= z3q+3TGIgce2Y+j?i^N(yOR=LZG?Rrm6}Sq%eqYKKT&M+!ZjM6p{0vnZlhY`2)iyC< zE;2{_Ur^2APT~0qmZ}M3;SVETL#+e1p(h=~tPwoDuuAQZd3x6ZX+J^SPn*R z;MSDeshN}?htf@#Ci`Qx)G?PC=$p-3m!HRKoLXM^L3UMI;0VK$E{Ed!t>gRU&cw&p z6XU3_@gFO#Q21naI>hx2VoW&gG=y!*1`WabETb(ZUY#kk(1K}G-5+CZv#eIKq<^1( zXgVlQY;4Lw7ei0Y=SXr*%QNkFA{h3oPE10S|K-54A8K8~$gX;mmKy?6o1HaKNGdPx zNt-{=S?*;@&bT8)K9{Dj_lNkMT$uikRLAJU&UXh86D9Uy5%%ck^WfBDEEMA^%BN{w zYPgVuhd=^YBd=W;o3GErY-J@y<#|Pn!SgU+9U21=vMbi7JXvYVRhbnvw9c+^?1@-J zAKE>~ia*sDGT+4CMd$CGo%6nUb;kvK6&l+eE0YfN+hj?wb=~4_jP$%^V5y=MI3O&u zPEhoMv=P*~0n!vU&I!E2F{X*CP^6gm^H7gV?Pr~_f6f0zvNlQOA(*%d{2*6NeboET zW0kkZT(M>Dw;t{#?A;2mA@`DOtupn_SS`(?M_+C*#!0b>L0*Y6l3u2<(stDwVguw# znI&}P0~n$W?|>g3d+Elh9AWATDkC$V(^}^qW=%}QHlEXiBlNZ8db~G0A6Euzz;n}X z4PMX7)_x;$J8FRZTe1)GkU4K!b2s5+^yljpDV}@?*$emQ>g97xzP*`VjB{0_N$P4< zZ(Kfn5{R6l;oRJmS%?xh;eV7At00fmgQS zjQzOo$K=aA@3sDPOL~v4Ehhi7pT{slSTH! zlA+8E@QT%1T^PYGR?#N(^4Hhl#XI9wq|oFIeu>KONINJe^*litm@lSg+lV;F%gks{ z?RI`64^lLjI!H-6$x*UPreaTvf!Lkvk7_*uy?8QmHi=X2dd*6~63M4_FTHDWCAQjv z2c>-ZA&+exQ`IkB1n3V`_j7uC-9x@7&;PnUNTfpKjiF65nB$RN+U%@2RUwDf#i4iJ zVw^a{EM_(I0IIQ0F~vC)Tphn8<`&gfDa9*U-lnf=D!oj^eaiHum0|vorT^t_9O&)4 zhL#{`(a4}t-+@P!ilVbZw;=}6K$UFyKQJ!#yK9AVJttgU+2yC3aUi8PCivMCt__tZ zbx?+n6X~6OUZs;liKjdRyIZLu(}Hv$i;_dtSH~VlqW0+N^5De1UX-EBmytv~bO1rT zU>Ul$tVs2`gOspN$Ic2V2s}9QxEaeiS#9A@yTco|s}j290eBpZ_>vLV_GA>LKYg~T z#TL?lcMkozQQ{waIKPk}dHTo9vZ5aB>3N&=#t)b>uyj09p}_#|;WycxP)q#DpPx@p z`Ond@LY)5CXl?s3+X0XVeF;|QjbFf${!Injs{DXRB&R@aN?0&P#s=@%kwhm%@HyOW z_#h?wk&v-SAzS#Il&*5UGjg4%z@|DC3)(1vIX*)g$qWeB2<~`yzF}VQY|e%>$X`<@ z%zvi|apfkQ7uyeKS0MF?XBJ@i1>5371WQ4rN3@Q~=azNh$Lkf!Lp;^u_4D}Xh};sH zE5I1is4AM7U23E3Ur&~aCT@=Xrrv|sgK3Em3UOW{a$J-T8;W*|3LXCobaL6|sC?BzpMn z3GPr?wv%vG@l%BBY$ULZujM7}gG`Pxe4hBTs?HH(7(~~ewb`c0ttT{S={Oe*j__-HwQpT`0u&p}v|EF)a=^@Mc z)}*IAXNZw^Rp?|JXW|P5Be5fPqJ0$kVHMn!2aWC3sT#ks9G*0`V5-b8Z5V2x=M|~! zk2z}6tq1m5cVXME<}~yMO*~cOrKDRmCIs^VqrkkHy(3|qv^FOyckfOZK56V%kybrX zDV8R1w%G=Hx83)m9Q4BrX37mPVxEd^=t?%um1Sdy!8@@{ zAB@+2kE=(t+60+R*s6z1unev5TQ@LHGM~J9AE6PMr7IJ!4(+PTYV4AFSfk^qz8g$! zZ5`FLgHG)Qc#;62NwdH2IaA!} zJtg1#wJ`bq<;A=f_@LED1$shAqV1m6;f`WD{5h`>>%(x@=ij=A1l7DIPXh|(mT#h zQqS7?GpIT)V?r6IO18vl=0edog~s2`CDvo*80(jyyiXq?f~54V^Q~d++QzZo>&fKp zP&`<>BDw4JDx%4#5`k*X+OOmF!u3w1zOT%N)gg-1zuhqaIGT;)B1yl^^;5~@tYp$q zwDSb(;Vc;4w#W5!EE_?}(!~#k>YIV#Qa$s<5y4<@W{$|ByioveCYcyS17%$9oNTq& z>2(8`Cs&=%t!s>yrHeqwSsAnetM&3-h}()MU0y{T|5QY!QQK#Zb*#YGZ3m z^$T|+(gNn+f!?+>8+PICsIw_c>%ZNa(yR*$Bjn3jEbbbnD&u&M!LV%^5u`@1G%I{H z^ZbS(UPmTLmLXUq`3D`$IkWyK9K^y_c<#rKgR*s?>%42h-IX}#!B7splLNy4XyQ=Y zjBD0q?JmKZUs1fF5rJ9ps!qbu1C{Hx3LOl+5UBVP8d_zOjW~^BRP5r8t4*(#&lr37 z!R>H}?ddi?0SoGpZbbFhY4$Sgb|GZ)+gQ7|0UQijx#fjrYuPG5>@vP!)%+$V%X3Z~jr2zJ<+vkE*KZK{ZSikd;4 z93hX_U$4X6o_gKB*&V_1PPkUxHbVoUgooy=DTPcS?XE(x3<0waYtr{=@2>C$b~fnC zF`#sWyGll6x6bfA#-RUPf^S%=`~V_f!xwS5`%OBLJc|*=+D0^L-Vr&v za0>Wq3P?@}pWc2W!Xm)05=m&+jQ2fy7Rh{YPsS|q zG4or8<%9VYI60jLO-It3RU6+i7|KMi^vyQVUAR~Wl|B`9LIM0E#w6);3mkq!JpeHc zi0)PUH~F)}?=%=}cXACIqwd=fC9k+<{D*@=yHSE1V5){Y%fkw}EQoW?)7<2Q2Vmis z9|k^poaO}@C?5O5Dg|i^*eTV=7Nrh6>xy=f_UCVkr(Pj~S7~%q3o|}pfH^gd{MQ!) z?mZqmR8ctTqjN^4AFL2QlUDEFLVlwmj7a5@o>xVCp@ilLT8_V?-)496sBsNUyV=vW zIvX&18ijG@F;i4czbyUhWF6=Y^$kEdV<$B9nz=pSj?k-|C5URMoiJ z*-1TrJ`U`f{Uk&zpmaI@X=t3}jt56^FbQMXP&n*?@T@%A04jc!Z5QdPEF-oU(9Iv?T~WKTu4z^qO^2oWWt75 zf5>1`cjtdtLLxirB5(tEo)2fo5czxi*2sq}>=zNP>WwcB&Iw+!lR9cBmsw(+0q5mU zehWAsc)6%8m$x)vLVQVG|P2ctX<8KY+{L69?CrkKDv_=tuVffVLx~}h?ZjOS8|X7vxx?h z1Y`c@j&CU)P_t($8(fGHd}$LB=xsQ#?aXYFT;bu_oy$e$&@`o!Ku zT3_gAgPzK~XXLbW2#-JPRUJC|QQ{P>Gy|_J@luQ80r9v&AhATJD*1&A_js|i=%T9p zFpqs!Lk+XVjIVae61DNQJa0Tp<2X-dXnK2f|G)V`iUD1c>u+5uZ0k+uh!Iu|S(90W zVq;SG-0)p0*4GrgMvZbK6^Agu6F=pm@<%Dlibqw;+9|?vY8mYeT}B&j`N}A+H7g;y zb$5ygjCSaMHu~0!lLHj5^1hopDRB9Fs0S8$s=3DevjpN{aZj z#J>MP9j6~_?ADi?@tJr?U;a?i zuS)ksScMu(ow!-F{&*_+s|quWn;_gI6@?Ss&=LiQ()}5`+5PNF?ksWh6NRS9qc;A( zm#RsL_4`SYws8648K*46KP?)WJV|r70a$ENiEIK^fyT&?^mL9Zq?4*ZGsnu`e}TO8 z!$T%8`+HVEUQ9xy{&oreBgc!zVEpZ{`}h6-_q_H0ZuB>w{Fg=j0e{LTeFk(0{*wim-C0 zVYA3gHG>f~h_i0PE)qiYPP=G*ebC1fWHuum3suLDq8g#U%;^b=Kr^oHzX87VjvdEYR4U*j*PedlgQ3 z%N2r8uAfqtT}gTy6i(utOS1NkNzmyjSN%9Q!t1z8H;;OLbM}*3L^NSmz3OEn?nUYj8>rz%0iiB9W zDEiiD?MS*h1gdlJkA5p76OA)FRvXR6uU4l79|RtU8nGUi6>``MpMG~!qBu|PUhncu z{jc86DlV!h`u8X$QUWRCVHvOq{d#IcKl6e&4m$c3p!ALgHiofIv61~|3vrbYzvEW;>-c=~>QQT<{0xc|%R zWqu?;d+<#%26$Aft$j2I;m*NtdSLQGE6Tis@L@1ky!l007N>*H*6#5m`W+z<9x8+v996o!E@4v_o$ZJqBbfmnMF>B-TvOeS#Qc{&44oFXVMu#g56dq7EumB zoKftLAH$(uU+cTjr@;R+;PJ*a4RV1A?EOAwn}5|mbsrP?@$Xf9kwsYc+)O!OUb!8s z6M}Q{<-(R+?PUO$9yFkBNn*AJ-U&Sm_DcC_xc_6?KY?$&vaw6S>18Pbl8TrTQi7EMe);K7ixqLWuX9s!QZ(}D zy{@`r=v_4+*P6T)6ujl)PPrg_+!;Nt>0VB=%sH5SUh=gBI9mWRd@~}wt?-yh@TIQ_ z?`ww9o#CLK5O;Y%Zxa=H*hI&xCEd-v_(4juW5f?@V}HZ}L~|D$y;?;1^g1jKdoLP8 zT>+`q(LT+sN#|OM|Goglf3UR#?=a4hSl*q5MRu5VAFIXqy^tDl>^I{4<^Nj!qCy(s zK{6G~tlFCPYCn_q!+5>3@NfBx;KV1L@#C5eY?D6@LO3?Zvrlr}uGkN<<|MB9#WTiE zFB^Q7Bd7dXainlRgIf>&tyL>_DZ%^J(j4X(v^_NP5!IGOk%$Vnb`sN(ZF;z7P@lG{ zB-la*Wi71b8KW1>n6OUkv+d=1e|DUN)bJgi-RlHoJ{fc|-i-V=J|1Zi<_C=7!+WIU zq_5aRoOc@es@`rU1jhkP@}aj2HGVVE7t(;Z3KFgI@uMc(YQ%f4!-ph393is=1z-|t zTT$xf2bI0Bdkf3;Jnqaf1C%eIbi{@1*fsXiYI7vh6J4-;FE;5}A#Hs6NOGBjy73d~ z7(DreZEZYhB{-LX;{_s@fy#$c&^R1y+zOe&HHdxO8Nd2*?|1hNGqs~F%wrXk;{Zr7 ziA;=LO<7QBc4CNdHzn@{e!$D1e&K8!xa_V&)ZFp**^>ofE)gwa+_ALdcHp;y72bEZ z`oxW(lBdC)Z%kM2OA}{Zq?lKvmF%mMXVJ^fk(h4;rH*AplC<#hWm|o@3M&{SJM(?8 zr5CdNkmN*oco;wbQtR>{=co=V5+C#2K6E4WO}~q0+V>O(JF2z_*c&Wmo2!=rx?j^* zqV|$X2Uq~~&5Oo~BiZ2rqZBp7NgA0awI4jKW;u-{Y!?DvhT_=r_Yy*Yk;3&iv*XoLcF|AcGhaXe4H$xckPkaztFaA~MkjB$^s3oXh*{UEaGu}~|WPJbC;f#UqL*}4Hr8R6IeHY_{^6?4WSr1ac?yi)( z4qbQgGYP0v)|@;|$kEQQQslX?R%5`j(n^Ia9AGW4?n~&FRfg)csC4KAj&0zvaoTq% zmiN9&zse{%WDgzd;GUS#W zw=LJCX)on+=S6}8_E)_A(EdY3xmnmh2hE4aKF;w>#OEJm*QYdV#^{X4-K%7? zpzY1R34GNH6HJuX#u?V<4clwAO7}b`W5ykJbs!?^SSsG9IO(MNp_Db%1g}kf(bxq( zJT02E{_gxL8g@bQL#(|0MqlpB*Bp)er{1U2=Jobs-6%Hn!&WoynakfDMvcidp?IaA z1MB#lHK~cNuLj3v1>d8Sg|{|ZZA#$%Oq%5bI|_*OBYAr*!`-vbPglIEYSvRQ{#Kfq zXqNjVbeK)9n-zYVZEvQE<3H>>V^Mi#TF&UyxazK3N{(UV;E3z8akx8M|59rAW%Ycp zZ>&E}bx&o-yN~zADh>;QUh>mnHVS=tBUseY5;gw_+< zffo#?X^F2mX8c{S1G!u#%=}<>hn5@PzD(Ra`i))KF=R0jNOsitL!UiHw|(xDn>3i- zo4un=HL})t_Q}HS#p6kFU*qz_R;FQMms%ZA(2{##3d@diIPOj*nLe~I^8r;owH3ZVno~37I zhAhv(lV@$SaL*hu!L0WenqD_aj06p^@mPZ#cFwFER39MpXjtDV?JU3tO*l_3ca1^KiAp z%*YYq^pu-`cISJ;SV+%vMt$$mu6^HLQv2H3CKYSr6_pkoLDGR;NYmDcKq@)g91HP2 zinDua2`eWJ-)t;wXThZ3%;iyMqe>gjze#BRGYOHNX(SXc+!ebjBl+vadV&132~3`> zxF5IxK5gyK9)|wF1f~QhO>=`9qsKVpue;Loubsk57B!{E2*$f0@7lypUb?jOpN(Ku z^T}NfFc&`am)^1Fb0VwIS*M4;!&sMewQRblz%yMgw>bP6J7#lNZCnJj1fAfgH+to! z8qiTDM(gWt_|>xBYp07hB+c5y*9Lb(_v06C6JJooNp9}-x`349{BNb01C(*0x5yzO z{s9%s?2!C<7)oRdnCA!qs_-}*^CYw7`e&NlMnCd!>1)>~n2l{`|L3VaE~7RJzREPP zOQu+y_2S(Z+7tDPQEBB~*f{X?##+B{5Q#P1s-zRHRP1gtjo}lz+_O%Eo8x2OZ#iMy znwq=5sGo_sRMcM?)E#Y1q6g)vu4bF>+jg)0nC6A(H8erCkIUi>KR)HYedH{F?|j5ks!Ygnpp23_l!%a0EjHXz_~ zn;^Q1Clk?R&K%}Y|3RJ^GN!=UT67Ca^>(y^2fkFU9OQ`&uhymvodNZ3%NX6^VUD`KK_6xVF6|YP|28S9E z>yxXZKHoZJx1#EPuh@o9(EV0+8{h`hdze+D2t64d2?&eVwoY%^#m$AElwwz~a2BkL zMQ%c6JIG!Z*xG*_@N>M*R|I=Dd33ua6J07Y>^HbUnWAKB)r}!{aGl>0yLfwegN8g;mP|U>#MD`dFhS60xTfS-?130qlUwFlDzWmc9(vg6^TQTqxDsdG@`P) z{b{%EAfk1WS=C1cxw7d#RR3~`dlRuTd$1)Dcivz=GQjq>%wN{oX#IBa;7o3#D~@E* zBoq98*=W}Ykz=+ba5F$USJ z=<$x}sCAjAXIZMGj(i}7wp_a-h6sn5xc*kYk=6cJC+bUHGlCHg2QR+e-FNU&7RY&A zG<^8t);n=y%UEQO`h4APBCVC{=%Ws$Bo2lGzBe(*nV1-yp`U>=(TKj z;?cb;bW;rcJ^bQLs6eJ|g&mMr=F}vy$23y_y-g>FK%@oECho?$#xve;eyic!ULIgUoP4EC~=1B7WG2V-RR!^s_9c%O`{Op>)NlRn2>#e;^?9uG&{Ohfi#DcJ~^R|38F z&tP|ZreOFdZggzXWt`Vb&M3H-+axmUceMF(N4d4S)$}&(l6TGXB5-fX|MJqmH(*cX z=leVO(GF-G`_Rw(@yeY?maKQ+>BbGSQd&ju7~1Kc814?miiG$$i^-6k={kdQ%PR1v zK_?$rGWNdjii*3;yn_sWK1EX0TDEP^Ju3sLy7I(~F2CEae6oVTe8nE~XvvL^bfYG2Ze6y?IA#-uy#1c({4T~So-G@rDeEq7@AFdfmJ62pXc@I`ku{H4w;H7yK zDyvzJt_M_0Vmf%Z&*G!qWa2=>;?!dEd#SiKxHdbZ{9|!)D|NAQS+ZKcY>L-#$%sA7 zlwVkLH5yM-Baa0mN;I#PW2Cqy$=|#zqiDRaoi?WQi(W92A8I+T!JVJ6Ipi^fuy?w3 z^-ch*=Ao;Xu8;uO(L=gqT=eyW*U0C)jq$2F{J2x%KBa|Ye2C7% zV(BZ2Cls1=f_ZEr9#r;K^Boe*1yk{OPf8amy!Z>U@J1mBhu}=;m!&V+Et-`%oXvmwU1sGZ}jJMPQ#02GA%LZmn@;7OH^|IW1`i#SqoUk>S+RSQwK zw9p7`yeL&gI>v;rmpX!Oj<%$xO_s>x3&P24_I=8()+zZ?vx*U!d}LS5Pmv&mnK31o z13gZ|2)fCoP3|GnLa;z41Xq@pI?rpN!thUVxd;#UfZp5Z=Z{36egA@IGDpeeq{CG! zm0kNuc))p%ek1#PSJ9oy$TqpCIf|+z;HK*o1p{&)-yubH%i7vTP{LwxTH;ejA)>_A z7I0Vb$BX(K+sR2y2l7P3&rj=CS$|`pW2(JQuiM2Kqa~M&%ReEPLGu$khNp4|ll zEsXRcwGS9xIly9cINjRiV(ueT1ZM6zmi}3cSyV9WI6hw3?ux!vyZ@#lAM`^eq2u+E z(Yq(1k9#_tyOo{7Zw3A+c&Qa4h_J1KcgtTR1|R|LknB%!cQB5d0l0hML4X0V!pSgt zH$W0)7W-BO;xR%v-&!O)kq-w55(~LICe5i9F7S)Qn@ZjdNy8(akIP z43qm{B@VqdoCJmbf*Id0<7N7jRedrA27`K)t*+FTD(i}Qp>IcUGXyk=ck965$MOemnV1100}&$i{!vJJRHWWA)5qU?oJ6+d&bKj(&w7|<&zOIk z=98{GwoGpyk6&N7Ct@ocu{c%KFz#DMivQ$G3tv^d@R67#WtqR1t|X zb{-{k^N|#Q6f4F%u8UF%Km~8-r{7c*gR7gKJF+AYoF^vEu<)V#1N~8Z>DAFO{HB?OU%Bx2Yn8WV?7ND|22b zayXP!Dg*1XEA_kW?Zt<%8|F`N_r+5eLC7IX@V`B(ym$}$j}K#dvs6!4&W+Lxw3R#g zz}LdK3DoN=yDMg+sYO={H%+&h4k_ryOTd!}Z=(BYXL_PmX<~Dbn4u9lMr2f&T-O+e z^e^S#S24c#gZD*h(g-LFK7PaNEtMhRrQqCG+|jN-lzSB1BYqs^->+Vt@M80*+lCye*+o%7OqL_2ojJmKjk=w8$CqDZv3rLhiOO~3lBVyh{7FTBK3X>E zuK~oJKSO{D#0Zl5A*+^R8=-TPYuUf|ZggKWM1VdbSZq%xm2UtAe7D1%cXLiY948cD zMH0c}Q2k(nVJ|%8qHLE9d3dNwD^1?r!|LJarrPQRrYm`Sp;KAT8DFpbbQsrl|tk-6UFDe_vnO$yTJV%k8czuZa8$p z;@xMK*RyN~S__hXrU_;>w=D(}l*kJfIx@=Kk@z)*ML*LO!pa*^ooOs6whwJ=HR7)3n{Xdw#}a$A`q-5w?p3e z9j&QOXj{7WEfReP^jz1*uRdkP==ZfwoIU-pLTh>2r^d($A@eN>=KLe4nM_t0@G%F4 zDXsZRs~X;%v+BAsL>OCUbes48Bti~px^RSVRG?){g=5rJ@6lsI=6wG{T zs-(%{5nOtWoGndNYPWWWIus*HNiDpe%)>qXqXJjx9iJCS&wgV50V(*I8mNtvK5{Pd z{q)v%kbC>!<*h9-89=K9m3sE|k6qyZ3|9}?h(9Z{bcji~y_Zpi>#Ql7(R8p|bktBl z)T#0E%9?!Hvw`;64?=@msNF}*GC5IS@4ylTV)>=hqY5YC{<(78m0`^<=e=}LLt>t~ zfS{A!;WnQebt0j-4coH-pN!9}I&y)C^H-+0X-x+^Rm7|K1SWT-C^2p%C^3@U&&ymZ z;(gw4(T>|IgopjaM~_@jrmRvy?Yo@xaSk7$QB;>6a>e%sIEKXa&%{O{y81ldjEpw{ zPTIu|)VHe?9gw+9x;KtHK_C|Z-!!2urjASE>ynDmCZ4qu|b5D_)VL2-6TSmSlVcRCI}MUzrJY@Q%SE=!6)PJ z%{Y)ySv9a@0acpT6D(~M6DbT&K`*!=kCfvyiEH`13sZkt=N&K6^{~yf^wbg*5;f93 zV=OwVMB8F_J7Jo_8&t(o+Owl#HxAi3VIW4D^}5G*!pYQs%w&hv>U)D{LX7{)8}9B2 z$-Uj=pN0f=AkzY1Q6!OLdVVEG{!H4q#J<6&krMWD2qkBIxXvZdDWOLO22e2tF{MFx zc&VP~P~;&3?J5_#QOnxMIS|-99T0Epi2m6$?X9z{)bd63Q0Bd$eZpgTnvL>?c4LpP z8~)@oaynj>`fU!eIM!Z^AMEA=cXmn^U|nVui+j1qmYY+WTi(g$0LPowk!fsoT>T>M z$GfLKIrnbAR@qjdtY9vkcF9%Kq7`^*HdXh6bCLwQ4>)OH_S4D1L)U~U_8OI@c}ZE* zmjKT(h|awK>%sa?;9+9&Ft`I$=|{Cd<3=MtYY#v=hfwpw#SA4qqg&yo-&+gXIz_Y% zqtSyvJspy0Y1f#&7Y>{eIC_><6unw9}HX(MJLn-QLVNQC0ii`1$M6MyjAD_re6wO!2YkcA73BaY$Ei0l~@C(U- z)_QSoL4OJ+LJEMO4I+B1P~cdNJkRzvWOh*AWFX{!nJt%0Lh9`;ces_I^=W5;?FGxo3BJ1n5>I0BiljLx~kPrOy z=Ojo&Sh2nM-`m*=XL+tCH>N_?zh#!V;vUbn%8I5#HCw)bgwb>-3hYbSoM5!^mZ|?t zf9@)VQ$3~Lyl%1&sU@@=!DVr7eQ{UzI!BS`)m=SJnXt42`>(Nt+ghwt41KUIU{a$1 zvHO$7~><6NZQXSx#|S~2;?O6p_>X{U1ZSYI|1 zrQuTgO^!_!a6Y$u3y}1JiIJme-2cvx!iWim+~L(T)U}05jt?fz9y&2g)WVH~i_~`4KUVn50py4kTC)P0YCJ!c8+LyKJJP(lCeStlDg(V-LA(x2i4O{7?QfoK{-&TY?4N*H}Hh z%^eaupj8^7ty7bO;U<$mZrg;IpXTcehw*1WD-rG9d`1(lCijF%Rp zLnZ`byl~nNb$pTRTYrpu=yf|N@R8!8Ts^d)2RE6h{vz;?(+L-?x7|Q(CM3xoj;~w zUP{64Y_r*1)2450gjG{ym@le}%l2R(yC@b=#rRN@DmMF6)_bmsC2~7jbURWxeW$D` z{j-+ZIl8Lh`lAKS^Gb)C0VR7dlN(Htna^2G7vM>7Q|z*PR*FqF_=2yns%_`FITlQm zN3)^2lzn$Npcl@cSLy#*MZFcVIc42+KX13ipkY6zX~%nvHBAEP&N8bGT7J4NhW$D~ zuc_bgeKK+K$w8TG^jFy32rQ60?P!HhCt1EYCx(6Uxxw@hwDE;zrfrIgs;i@Fsr5Y3 z7uEEOi}KdPkvq^MlNQvi;g5|o0zb65!TlKLOy0QbSlbhGb^eNH7WYBBof-UN45k5Y zq5JcfhT2^WuSxE_67GxT79rEAIu%Pc3-3Z4vPMVsvEGRLN6Ga3J6j%vgYYE#W9#lB$6a|DOG!w9Qs zpBF;z->3(Fyo%9z#vf}C1JZub)OqM|v4%S_OBECQtN0dju?|UUSF;v1`GF{;jb^W6 ztMV`@dMl)E?VMn``nGk)n?23>{UcyPdwTg`+Rj;Te)Tv)X?p)Y#s;OJ5Rg#emu&&a zGUGcdCnp zW{Z0UKFx;k7lX(1#s_Ea&-Z2w!fJV9_?{&=)D^K47uHc0ej2k^3~C&G-Y(9}qeT?r zU&gR83a1l=esgOiOX@(2vequ4un_UGs!gE`WuA`Cw3;tm@UozYTX%b*;>+(Jmb{sU zd(`-K*?$9LKI7~|+gov^o(;ocu^9T}KFAXiA*-;XUbphIUmzCQ%OVE7V1%{3!{X(A zQ#exZOvbh24#L0>+Aj=xEf<1maEJHyKWTh26QX|_r?7fo-`%JBXX znzKKT^91aMl4tDLv){SJS`wPj&J>+4ve5IKE&7kG?KtNc*r;GA{R)a;PMEo-=* zQ5*u5)=xUICN<1A1_iDbE^Mg0^sUh&9wQ>_;*UM(;EMW!f`>n{;!)kGWS|r&6wPoc zuOk(yQm*HnS9s>MwlrfEZnU^IjT1KV1`zY7KXqT-?q}@zC(_YLzXnVdV7UUHM%qZ! z>M(dlk}=vk8mvJER*n=JQ(v%ueioRKg1lJz4>UGYeU7Y3c-h^7MS`rM*)?8G#U764 zUjmB@U&c<~ImRM4Udb^ZoH>O>x+SYz+%`==+mNW?Z1~xE(9B=cKI^Mkp9Od-xiZ4( zF%b_lh+03g8yI)^zDrfPD~0e%ZzCd(R`B~h;Kva*0MvW#RcWU++;?tyv9;uCm;8mC z?SsMVuHcLz9zp@YcGcWN>lPF`HhG*xE-8Rd85ZyM`=jM|BjO~70$p3!=yAg*IFdSw z6W)!ciDj3Y7ZRVCyB!Q&UN7n4L+iWDW*=U^F{-g~f0d>?Ayu%*^qc^K?r12T{<~^` z+3xs}$m0q0H8SA`_(K;94L|;0*yWFR>672lkJ;75Bk9CfmC26xfeaKk&lkgqc)hlb znS7f3fN=Mq9DR$^Y_ILx+8*6?bUq0q8IdFT@4CDgVD)crQH5<{c!)fY`fKZ}`U^Op zc?xb>{JiMfKi+(N*Zb#YkT2j$2Kh?(=&wbYS=M~QZu#>ckJW+vsF+UuC*OFX0fNUm z){KD_s#9QYxCQ0K3|0*wpkX3hY4k zb7| zrUynL#AE!%9Pf@i=`rmXXG+`9&o3|FS1rHPrao?qq}l5dckFF}W40i~i9G|K0Jh(6 zeQftb*z>o!q;%r@8;tlfvC z+7IO3tQ_-*Q_{wec+ka3b#U*-zaGEZ))Bh-HGa=Z(Zu$P)hTBQwT6am2WpDDbNiK> zMbNk?+a*~4sK+!!jdj*Gn1*AAy!Id~ZJ?)|V!TZanoQvzTlOL0i0Q&~VPRE@?DJl^! zauLYNcO|FzibXS#fn!U-xhH)q#fVq~FnC-0UQGUjj-(6-1Yw$wZxlcu(pI?Q7Pn72 zoNrKIS5(P|&OxKRSOEa1TK;OK^62P$EX$T#`-DRlXDrpIgLuUU13$B^Lp(9dQ;iL2 zWgiM_z%ZcmKNo0eT~T9@bG_F=ct_4h1EbGqgAK30J!Wz%7GaqDZ(izYGv*FT_{G}Y!a3l$ce<(+^XolarSMr(Un-0_)CqkPA{^YhNBdKn)Q;NrIJd1IUTIRl80*jT7`nv{-3p(=Ub!EnV z?F1{x7tg61dywl`7Z=^_eBU%Mi)I?Ty*n8t<|Y|H%d+K~bf%|K(B+#nbN>?A(JagD z;+Aj?q8G)*WYd;dkCO=V6yNcSIG$~QX5X|lQj=GnlTELLV?Yg4FxQ?Qf>W1X*jG1t zO6H%xt4ti&eEvOJNtE%A^;WfY58kJJd42i3yKY9j4J6!CI$oh@+ZK_Q@wV$Q8!>L< z&Dyj5oF~*ZvmPoO>6i7&n_aqTHi}Q>!o!pq&D_sJ$*%p3`#-!QdC*`ic z;_C_kt*K366h6}mhv~r{=+O9|Mh9;%u{qpX0cWDB@|vNwAqR|lzG(J2wxxVs_@x_$ zmDAd@omvHJZz1nJYscH0S=IY`tVR4Ay1GQG=cB&(ex%(uJ;z?07;kaPHVCTcUg#6fTuM zNa8&xajcPn78NCYg);?pK`ZlGdywGAxHDfk=Y;XHqihGNXC<}-IcW*F0v_}4E3GPp zR3d|40ckUA9S+1k=Xy#-UQ-=>==g|~&x$5l-uZs+C!Es~xDavV78Ka>c5x-n)H0+e zS{5hXeeDBu@Ek09u{C}lQKOn$C4L!!nZzT|baz;xg-+B}@z>Ql?rBD5I2g>X<;%6hG&UPu zgzD6>mEudjNS~Fn6eNFDHDy8$S(Imh6}^EJnmjEyXDFgJFX8);z3RSuglh?fjACRls+A-Z{!QrE$iUhud52*)63$ zhLw7(d8e8XV*Lz_$gB1t13`Wj>1gyQ4K>x_NhoiHcb@Z`af8i0Wj;yj(VG`R7sV3Z zy6tbCOq;QkO7hJ<44u!-5Qb0vioMz6ONwL(D9C8ksrT*gmA*m8lLHI3w##~*jY530 zQ`;J!I2bi*bPP1c>R7Tz!I&&?baoAI7i28oH^uePe@k7e72#z*w!iB=TE>=sr|GH> z8TAFK`)0C1;ZxfXx!A*;-yQyIF@`!Uvpo}K^^~ntu$scktcEWsu8_cIlaNfdKJJ|@ z^;F2@4T+=(jTKrm4Uw>>(&Y~B>E`ZY3GvdX#NyhIA!{zDn9ng}es1_*Vmu!Rg8VQ< zv)6sXL_gj}cJA=2>dD&t8F4?%&6q^_YZpIXCKDPiV(FAnc)Ek5@n3{^g_%(bg2T0a z9?1Re)f!=${1-84z5T70JjZ*zLfF8|_-}9cNtwTOA6>GCP=OP5{pMR|IdI-v&*6y0 zKMJ0ghwPt9kTt+hu3DhXvCKmcLQdz7s~XyI!#^IK3EyD1@AL%FF$%yaP-i$ zSbn4c{=2f|;b*%4YI^_S#eX;Rf5iGfOHM*>3qL{rhGOWqh@yV(-t}k0M796f>HmSM z{MSDt`(u_v{*Pb&k7AYb|5@bmVKx_UFUC|Hsq&|9+5! aJK8mT*%?)%D|!s{OZJ`8+e%5Jp#KGDIJk5G From 2078541da21ab7fc1c6effed0a88cb2e6a87ddc6 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Wed, 1 Apr 2026 13:51:41 -0700 Subject: [PATCH 142/164] Add files via upload --- .../default-config-scheduler-comparison.png | Bin 0 -> 63772 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 website/blog/2026-03-31-aks-config-scheduler-profiles-preview/default-config-scheduler-comparison.png diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/default-config-scheduler-comparison.png b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/default-config-scheduler-comparison.png new file mode 100644 index 0000000000000000000000000000000000000000..239a8ef0572fbae9ddb83656264e65f0b028eb48 GIT binary patch literal 63772 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 c_&d)bOcg?l+t Date: Wed, 1 Apr 2026 14:06:16 -0700 Subject: [PATCH 143/164] Refine explanation of AKS GPU scheduling strategies Clarified the explanation of the 'MostAllocated' scheduling strategy and its interaction with 'NodeResourcesBalancedAllocation'. Revised the text for better readability and accuracy regarding resource utilization and scheduling goals. --- .../2026-03-31-aks-config-scheduler-profiles-preview/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md index 0d796ab5d..053d3620c 100644 --- a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md @@ -134,7 +134,7 @@ spec: ### Increase AKS GPU utilization -`MostAllocated` scores nodes based on their current resource utilization, favoring nodes that are already more heavily utilized. Unlike `RequestedToCapacityRatio`, it does not consider node capacity in node scoring, making it more suitable for an aggressive cost-optimization scheduling strategy. When paired with MostAllocated, `NodeResourcesBalancedAllocation` complements the behavior because it encourages pod placement on nodes with user-defined proportional utilization, helping reduce bottlenecks caused by asymmetric resource pressure. Lastly, it is critical to note that `PodTopologySpread` is disabled in this profile because bin-packing and zone-spreading are opposing goals and the scheduling logic may prioritize pod spreading. +`MostAllocated` scores nodes based on its current resource utilization, favoring nodes that are already heavily used. `RequestedToCapacityRatio`, on the other hand, scores nodes based on both the resource requests and the remaining node capacity, making `MostAllocated` more suitable for an aggressive cost-optimization scheduling strategy since it inetionally ignores capacity. When paired with MostAllocated, `NodeResourcesBalancedAllocation` complements the behavior because it encourages pod placement on nodes with user-defined proportional utilization, helping reduce bottlenecks caused by asymmetric resource pressure. Lastly, it is critical to note that `PodTopologySpread` is disabled in this profile because bin-packing and zone-spreading are opposing goals. Enabling both can result in spreading over consolidation, weakening the intended packing behavior. When combined, these plugins favor GPU‑bound nodes with balanced CPU and memory usage over nodes with large amounts of unused memory or fragmented resources. This results in more efficient GPU placement and fewer partially utilized nodes. [Configure node bin-packing][configure-most-allocated] using the MostAllocated strategy to improve utilization and reduce infrastructure costs. From 19b1192bfa50bda968e202b3161b811befc64356 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Wed, 1 Apr 2026 14:41:34 -0700 Subject: [PATCH 144/164] Update introduction to emphasize resource utilization Revised text to emphasize the impact of underutilized resources on infrastructure costs and highlight the potential for improved resource utilization. --- .../2026-03-31-aks-config-scheduler-profiles-preview/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md index 053d3620c..caf37bd8c 100644 --- a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md @@ -6,7 +6,7 @@ authors: [colin-mixon] tags: [ai, performance, scheduler, best-practices, cost] --- -In 2025, Datadog found most Kubernetes containers use less than [25% of their requested CPU][datadog-state-of-containers], and in 2023, Weights and Biases found that nearly a third of GPU users [average less than 15% utilization][wb-gpu-utilization]. This data signals that underutilized resources materially contribute to increased infrastructure cost. While there are many factors that impact node utilization, as a core component of the Kubernetes control plane, the kube-scheduler plays a critical role in node utilization. +In 2025, Datadog found most Kubernetes containers use less than [25% of their requested CPU][datadog-state-of-containers], and in 2023, Weights and Biases found that nearly a third of GPU users [average less than 15% utilization][wb-gpu-utilization]. Underutilized resources materially contribute to increased infrastructure cost and this data signals that most users can greatly improve resource utilization. While there are many factors that impact node utilization, as a core component of the Kubernetes control plane, the kube-scheduler plays a critical role in node utilization. [Configurable Scheduler Profiles][concepts-scheduler-configuration] on AKS lets customers configure their own scheduling logic: enable specific plugins, adjust plugin priorities, and tune parameter weights. **The result: higher node density, better GPU utilization, and lower infrastructure costs.** From 38b2b51838258eea473f934e1053aa935d4051f5 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Wed, 1 Apr 2026 14:50:41 -0700 Subject: [PATCH 145/164] Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../2026-03-31-aks-config-scheduler-profiles-preview/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md index caf37bd8c..353c71b85 100644 --- a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md @@ -220,7 +220,7 @@ spec: ## Next steps: Optimize Azure resources and test Configurable Scheduler Profiles on AKS -With Configurable Scheduler Profiles, teams gain fine-grained control over pod placement strategies like bin-packing, topology distribution, and resource-based scoring that directly addresses challenges related to application resilience and resource utilization for their AKS clusters. By leveraging these scheduling plugins, AKS users can ensure their workloads make full use of available GPU capacity, reduce idle costs, and avoid costly overprovisioning. This not only improves ROI but also accelerates development by allowing more jobs to run concurrently and reliably. +With Configurable Scheduler Profiles, teams gain fine-grained control over pod placement strategies like bin-packing, topology distribution, and resource-based scoring that directly addresses challenges related to application resilience and resource utilization for their AKS clusters. By leveraging these scheduling plugins, AKS users can ensure their workloads make full use of available GPU capacity, reduce idle costs, and avoid costly overprovisioning. This not only improves return on investment (ROI) but also accelerates development by allowing more jobs to run concurrently and reliably. - For additional guidance and best practices, see [kube-scheduler best practices][best-practices-advanced-scheduler] - Increase node utilization using [Configurable Scheduler Profiles][node-bin-packing-configurations] From 64c03d25424d97672478599531e9a4d050d2e125 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Wed, 1 Apr 2026 15:00:55 -0700 Subject: [PATCH 146/164] Enhance clarity and detail in scheduler profiles content Updated text for clarity and improved explanations regarding the bin-packing scheduler's impact on GPU workloads and autoscaler interactions. Added a note about an upcoming blog on scheduling constraints. --- .../index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md index 353c71b85..31b6a299a 100644 --- a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md @@ -63,7 +63,7 @@ Configurable Scheduler Profiles configured for bin-packing show a visible consol ![Table showing increased node utilization with the node bin packing scheduler profiles versus the pod distribution using the default scheduler](./default-config-scheduler-comparison.png) -While this experiment uses intentionally simple, CPU-bound containers to isolate scheduling behavior, the placement patterns observed here can be applied to GPU-bound workloads where consolidation and utilization efficiency matter. In this constrained GPU scenario the bin‑packing scheduler plays a critical role in maximizing usable capacity of 4 GPU's spread across 2 nodes. Consolidating single‑GPU workloads onto the same node instead of spreading them evenly, the scheduler avoids stranding idle GPUs and enables all four GPUs to be actively used before new nodes are required. +While this experiment uses intentionally simple, CPU-bound containers to isolate scheduling behavior, the placement patterns observed here can be applied to GPU-bound workloads where capacity constraints elevate the need for utilization improvements. In this constrained GPU scenario the bin‑packing scheduler plays a critical role in maximizing usable capacity of 4 GPU's spread across 2 nodes. By consolidating single‑GPU workloads onto the same node, the scheduler avoids idle GPUs and enables all four GPUs to be actively used before new nodes are required. ![Table showing increased node utilization with the node bin packing scheduler profiles versus the pod distribution using the default scheduler for gpu's across multiple scheduling iterations](./default-config-scheduler-comparison-gpu.png) @@ -193,7 +193,7 @@ spec: 2. How do Configurable Scheduler Profiles interact with autoscalers such as Node Auto Provisioning (NAP), Cluster Autoscaler (CA), and Vertical Pod Autoscaler (VPA)? - These components are complementary to each other. Configurable Scheduler Profiles influence how pods are placed on nodes, while autoscalers make scaling decisions based on resource utilization and pending pods. + These components are complementary to each other. Configurable Scheduler Profiles influence how pods are placed on nodes, while autoscalers make scaling decisions based on resource utilization and pending pods. Look out for a incoming blog that details how scheduling constraints effect Node Auto Provisoing. - **Node Auto Provisioning (NAP)** is triggered when pods are unschedulable. If a suitable node already exists, that pod will be scheduled with the defined Configurable Scheduler Profile. If no suitable node exists, NAP provisions new capacity and schedules the pod. - **Cluster Autoscaler (CA)** manages node scale-up and scale-down. On scale-up, CA is triggered when there aren't any suitable nodes available for the pending pod. Using Configurable Scheduler Profiles ensures nodes are only scaled when provisioned resources are no longer suitable. On scale-down, CA is triggered when nodes fall below utilization thresholds, the default is 50%. As active nodes are packed more efficiently, underutilized nodes become easier candidates for removal. @@ -214,7 +214,7 @@ spec: Monitor these signals to confirm that the scheduler is behaving correctly. Over time, you should see higher average node utilization, reduced variance between nodes, and fewer lightly utilized nodes. - - Track node‑level utilization metrics, including CPU and memory utilization per node and distribution of pods across nodes, using Azure Monitor Container Insights, the AKS node viewer [tool][aks-node-viewer], or `kubectl top nodes` for quick validation. + - Track node‑level utilization metrics, including CPU and memory utilization per node and distribution of pods across nodes, using Azure Monitor Container Insights, the AKS [node viewer tool][aks-node-viewer], or `kubectl top nodes` for quick validation. - Review autoscaler outcomes, looking for fewer scale‑ups during normal load and more decisive scale‑downs after demand drops. - Measure cost metrics, such as reduced idle costs when you use the [Cost Analysis add-on][aks-cost-analysis-add-on]. From 02fc0c56db2b728f500f57f0d3d0ebd9facebad0 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Wed, 1 Apr 2026 17:12:33 -0700 Subject: [PATCH 147/164] updated publishing date --- .../index.md | 2 +- .../config-scheduler-profiles.png | Bin ...efault-config-scheduler-comparison-gpu.png | Bin .../default-config-scheduler-comparison.png | Bin .../hero-image.png | Bin .../index.md | 242 ++++++++++++++++++ ...be-scheduler-scheduling-phases-diagram.png | Bin 7 files changed, 243 insertions(+), 1 deletion(-) rename website/blog/{2026-03-31-aks-config-scheduler-profiles-preview => 2026-04-06-aks-config-scheduler-profiles-preview}/config-scheduler-profiles.png (100%) rename website/blog/{2026-03-31-aks-config-scheduler-profiles-preview => 2026-04-06-aks-config-scheduler-profiles-preview}/default-config-scheduler-comparison-gpu.png (100%) rename website/blog/{2026-03-31-aks-config-scheduler-profiles-preview => 2026-04-06-aks-config-scheduler-profiles-preview}/default-config-scheduler-comparison.png (100%) rename website/blog/{2026-03-31-aks-config-scheduler-profiles-preview => 2026-04-06-aks-config-scheduler-profiles-preview}/hero-image.png (100%) create mode 100644 website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md rename website/blog/{2026-03-31-aks-config-scheduler-profiles-preview => 2026-04-06-aks-config-scheduler-profiles-preview}/kube-scheduler-scheduling-phases-diagram.png (100%) diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md index 31b6a299a..bffd858fa 100644 --- a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md @@ -1,7 +1,7 @@ --- title: "AKS Configurable Scheduler Profiles (preview)" description: "Improve GPU and CPU utilization, align pod placement to critical workloads, and reduce node costs at scale with Configurable Scheduler Profiles on AKS." -date: 2026-03-31 +date: 2026-04-06 authors: [colin-mixon] tags: [ai, performance, scheduler, best-practices, cost] --- diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/config-scheduler-profiles.png b/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/config-scheduler-profiles.png similarity index 100% rename from website/blog/2026-03-31-aks-config-scheduler-profiles-preview/config-scheduler-profiles.png rename to website/blog/2026-04-06-aks-config-scheduler-profiles-preview/config-scheduler-profiles.png diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/default-config-scheduler-comparison-gpu.png b/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/default-config-scheduler-comparison-gpu.png similarity index 100% rename from website/blog/2026-03-31-aks-config-scheduler-profiles-preview/default-config-scheduler-comparison-gpu.png rename to website/blog/2026-04-06-aks-config-scheduler-profiles-preview/default-config-scheduler-comparison-gpu.png diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/default-config-scheduler-comparison.png b/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/default-config-scheduler-comparison.png similarity index 100% rename from website/blog/2026-03-31-aks-config-scheduler-profiles-preview/default-config-scheduler-comparison.png rename to website/blog/2026-04-06-aks-config-scheduler-profiles-preview/default-config-scheduler-comparison.png diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/hero-image.png b/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/hero-image.png similarity index 100% rename from website/blog/2026-03-31-aks-config-scheduler-profiles-preview/hero-image.png rename to website/blog/2026-04-06-aks-config-scheduler-profiles-preview/hero-image.png diff --git a/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md new file mode 100644 index 000000000..31b6a299a --- /dev/null +++ b/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md @@ -0,0 +1,242 @@ +--- +title: "AKS Configurable Scheduler Profiles (preview)" +description: "Improve GPU and CPU utilization, align pod placement to critical workloads, and reduce node costs at scale with Configurable Scheduler Profiles on AKS." +date: 2026-03-31 +authors: [colin-mixon] +tags: [ai, performance, scheduler, best-practices, cost] +--- + +In 2025, Datadog found most Kubernetes containers use less than [25% of their requested CPU][datadog-state-of-containers], and in 2023, Weights and Biases found that nearly a third of GPU users [average less than 15% utilization][wb-gpu-utilization]. Underutilized resources materially contribute to increased infrastructure cost and this data signals that most users can greatly improve resource utilization. While there are many factors that impact node utilization, as a core component of the Kubernetes control plane, the kube-scheduler plays a critical role in node utilization. + +[Configurable Scheduler Profiles][concepts-scheduler-configuration] on AKS lets customers configure their own scheduling logic: enable specific plugins, adjust plugin priorities, and tune parameter weights. **The result: higher node density, better GPU utilization, and lower infrastructure costs.** + +This blog explains how the default Kubernetes scheduler places pods, where the defaults fall short, and how to increase node utilization using Configurable Scheduler Profiles on AKS. + +1. [How does kube-scheduler work?](#how-does-the-default-kubernetes-scheduler-place-pods) +2. [Use Configurable Scheduler Profiles to increase node utilization and operator control](#increase-node-utilization-and-operator-control) +3. [Increase AKS cluster CPU utilization up to 85% with Configurable Scheduler](#increase-aks-cpu-utilization) +4. [Increase AKS cluster GPU or CPU utilization while balancing memory with Configurable Scheduler](#increase-aks-gpu-utilization) +5. [FAQ: How do Configurable Scheduler Profiles interact with autoscalers?](#faq) + + + +![Diagram showing increased node utilization with the node bin packing scheduler profile](./hero-image.png) + +## How does the default Kubernetes scheduler place pods? + +The Kubernetes scheduler operates in two cycles: a synchronous scheduling cycle and an asynchronous binding cycle. The scheduling cycle has two sub-phases, filtering and scoring, and only manages one pod at a time. + +1. **Filtering** phase removes unsuitable nodes based on hard and soft constraints. +2. **Scoring** phase calculates a score for the remaining nodes; ultimately, the most suitable node has the highest score. + +Once a node is selected, the binding cycle can process multiple pods in parallel. During this phase, the scheduler attempts to bind the pod to the chosen node. If binding a pod to a node fails, the scheduler tries the node with the next highest score. When filtering and scoring nodes, the default scheduler considers several hard and soft constraints with predefined weights, including (but not limited to): + +1. Resource requirements (CPU, memory) +2. Node affinity/anti-affinity +3. Pod affinity/anti-affinity +4. Taints and tolerations +5. TopologySpreadConstraints + +![Diagram of the kube-scheduler workflow showing pods entering the scheduling cycle and binding cycle to assign a pod on a node](./kube-scheduler-scheduling-phases-diagram.png) + +For a deep dive on the Kubernetes Scheduler visit technical blog from SIG Scheduling contributor and AKS Upstream Engineer, Heba Elayoty, [Deep Dive into the Kubernetes Scheduler Framework][deep-dive-scheduler-framework]. + +### Limitations of the default Kubernetes scheduler + +The default scheduler is primarily designed for general-purpose workloads. It prioritizes nodes with the most available resources using the _LeastAllocated_ scoring strategy. This strategy spreads pods across nodes, even when they could safely be packed more densely. While this works well for many services, the default scheduling criteria, and their fixed priority order, are not suitable for workloads that demand optimizing GPU and CPU utilization. In these scenarios, spreading pods across nodes can lead to fragmented resources, underutilized GPUs, and increased infrastructure cost. + +Today, the default scheduler on AKS lacks the flexibility for users to change which criteria should be prioritized, or ignored, in the scheduling cycle on a per cluster basis. This rigidity often forces users to either accept suboptimal placement or manage a separate custom scheduler, both of which increase operational complexity. Starting with Kubernetes v1.33, AKS introduces [Configurable Scheduler Profiles][concepts-scheduler-configuration] - an AKS-managed CRD - that exposes the upstream scheduling framework without maintaining a separate scheduler. Now, users can adjust the `NodeResourcesFit` plugin from the default configuration to favor nodes with higher utilization to achieve more efficient bin‑packing and reduce infrastructure cost. + +## Configurable Scheduler Profiles on AKS + +[Configurable Scheduler Profiles on AKS][concepts-scheduler-configuration] allow customers to benefit from the extensibility of the [scheduling framework][scheduling-framework-interfaces] while reducing the operational overhead of adopting a second scheduler or defining a custom scheduler. Configurable Scheduler Profiles use a Custom Resource Definition (CRD) that lets users define custom scheduler profiles with their own scheduling logic. A dedicated controller continuously reconciles these user-defined configurations with the underlying kube-scheduler deployment, validating changes and applying them transparently. If a new configuration causes the scheduler to become unhealthy, the controller automatically reverts to the last known good state to ensure cluster stability. + +![Architecture diagram showing how Configurable Scheduler Profiles use a CRD and controller to reconcile user-defined profiles with the kube-scheduler deployment](./config-scheduler-profiles.png) + +A profile is a set of one or more in-tree scheduling plugins and configurations that dictate how to schedule a pod. AKS supports 18 in-tree Kubernetes [scheduling plugins][supported-in-tree-scheduling-plugins]. + +## Increase node utilization and operator control + +In this simple scale-out scenario, manually increasing identical CPU-bound replicas from 8 to 30, the default scheduler distributes pods evenly across nodes. + +Configurable Scheduler Profiles configured for bin-packing show a visible consolidation pattern that differs from the default scheduler, and improves capacity for new pods. This shift occurs without changing the workload, node size, or autoscaling behavior - only the scheduler’s scoring logic. + +![Table showing increased node utilization with the node bin packing scheduler profiles versus the pod distribution using the default scheduler](./default-config-scheduler-comparison.png) + +While this experiment uses intentionally simple, CPU-bound containers to isolate scheduling behavior, the placement patterns observed here can be applied to GPU-bound workloads where capacity constraints elevate the need for utilization improvements. In this constrained GPU scenario the bin‑packing scheduler plays a critical role in maximizing usable capacity of 4 GPU's spread across 2 nodes. By consolidating single‑GPU workloads onto the same node, the scheduler avoids idle GPUs and enables all four GPUs to be actively used before new nodes are required. + +![Table showing increased node utilization with the node bin packing scheduler profiles versus the pod distribution using the default scheduler for gpu's across multiple scheduling iterations](./default-config-scheduler-comparison-gpu.png) + +This change in distribution shape enables downstream efficiencies: improved control for platform engineers, efficient resource usage, and cost optimization that are difficult to achieve when pods are evenly spread. **The key takeaway is that each profile expresses a distinct scheduling intent. The next two sections detail how the scoring strategies, MostAllocated and RequestedToCapacityRatio achieve these outcomes.** + +| Scheduler | Scoring Strategy | Scheduling intent | Operator Benefits | +|---|---|---|---| +| Default scheduler | NodeResourcesFit: LeastAllocated | Balance and hotspot reduction | No tuning | +| Configurable Scheduler Profile | NodeResourcesFit: MostAllocated | Maximize consolidation / bin‑packing | Maximum node utilization, highest cost reduction potential | +| Configurable Scheduler Profile | NodeResourcesFit: RequestedToCapacityRatio | Targeted utilization with headroom | ✅ **Recommended strategy** Increased utilization with stronger control over consolidation and burst headroom than `MostAllocated` | + +### Increase AKS CPU utilization + +`RequestedToCapacityRatio` scores nodes based on the ratio of requested resources to total node capacity after the pod is _hypothetically_ placed. This strategy enables more fine-grained bin‑packing by allowing operators to define an ideal utilization curve for their nodes rather than simply preferring the most or least utilized nodes. Lastly, it is critical to note that `PodTopologySpread` is disabled in this profile because bin-packing and zone-spreading are opposing goals and the scheduling logic may prioritize pod spreading. If you need both high utilization _and_ zone resilience, define a new profile to achieve both goals. + +By shaping the scoring curve to target a range of 50-85% CPU utilization, operators can increase pod density on provisioned nodes while preserving headroom for bursts, background processes, and system components in CPU-based workloads. [Configure node bin-packing][configure-requested-to-capacity] using the `RequestedToCapacityRatio` strategy to improve utilization and reduce infrastructure costs. + +**This bin packing profile is configured to favor nodes within a utilization band of 50-85%, avoiding empty nodes, and severely deprioritizing nearly full nodes at 90% utilization or more, to limit oversaturated nodes. Given this level of configuration detail, `RequestedToCapacityRatio` is the recommended scoring strategy for node bin‑packing on AKS for production clusters.** + +:::note +Scoring strategy can also be used for GPU by changing the target resource. Adjust resources, resource weights, utilization thresholds, and plugin parameters to match your VM SKUs, workload patterns, and cluster topology. +::: + +```yaml +apiVersion: aks.azure.com/v1alpha1 +kind: SchedulerConfiguration +metadata: + name: upstream +spec: + rawConfig: | + apiVersion: kubescheduler.config.k8s.io/v1 + kind: KubeSchedulerConfiguration + profiles: + - schedulerName: cpu-binpacking-scheduler + plugins: + multiPoint: + enabled: + - name: NodeResourcesFit + disabled: + - name: PodTopologySpread + pluginConfig: + - name: NodeResourcesFit + args: + apiVersion: kubescheduler.config.k8s.io/v1 + kind: NodeResourcesFitArgs + scoringStrategy: + type: RequestedToCapacityRatio + resources: + - name: cpu + weight: 8 + - name: memory + weight: 1 + requestedToCapacityRatio: + shape: + - utilization: 0 + score: 0 + - utilization: 30 + score: 8 + - utilization: 50 + score: 10 + - utilization: 85 + score: 10 + - utilization: 90 + score: 3 + - utilization: 100 + score: 0 +``` + +### Increase AKS GPU utilization + +`MostAllocated` scores nodes based on its current resource utilization, favoring nodes that are already heavily used. `RequestedToCapacityRatio`, on the other hand, scores nodes based on both the resource requests and the remaining node capacity, making `MostAllocated` more suitable for an aggressive cost-optimization scheduling strategy since it inetionally ignores capacity. When paired with MostAllocated, `NodeResourcesBalancedAllocation` complements the behavior because it encourages pod placement on nodes with user-defined proportional utilization, helping reduce bottlenecks caused by asymmetric resource pressure. Lastly, it is critical to note that `PodTopologySpread` is disabled in this profile because bin-packing and zone-spreading are opposing goals. Enabling both can result in spreading over consolidation, weakening the intended packing behavior. + +When combined, these plugins favor GPU‑bound nodes with balanced CPU and memory usage over nodes with large amounts of unused memory or fragmented resources. This results in more efficient GPU placement and fewer partially utilized nodes. [Configure node bin-packing][configure-most-allocated] using the MostAllocated strategy to improve utilization and reduce infrastructure costs. + +**This scheduler configuration maximizes GPU utilization by consolidating smaller jobs onto fewer nodes, reducing idle accelerator capacity while maintaining reasonable CPU and memory balance.** + +:::note +Adjust resources, resource weights, utilization thresholds, and plugin parameters to match your VM SKUs, workload patterns, and cluster topology. +::: + +```yaml +apiVersion: aks.azure.com/v1alpha1 +kind: SchedulerConfiguration +metadata: + name: upstream +spec: + rawConfig: | + apiVersion: kubescheduler.config.k8s.io/v1 + kind: KubeSchedulerConfiguration + profiles: + - schedulerName: gpu-node-binpacking-scheduler + plugins: + multiPoint: + enabled: + - name: NodeResourcesFit + - name: NodeResourcesBalancedAllocation + disabled: + - name: PodTopologySpread + pluginConfig: + - name: NodeResourcesFit + args: + apiVersion: kubescheduler.config.k8s.io/v1 + kind: NodeResourcesFitArgs + scoringStrategy: + type: MostAllocated + resources: + - name: nvidia.com/gpu + weight: 8 + - name: cpu + weight: 1 + - name: NodeResourcesBalancedAllocation + args: + apiVersion: kubescheduler.config.k8s.io/v1 + kind: NodeResourcesBalancedAllocationArgs + resources: + - name: cpu + weight: 1 + - name: memory + weight: 1 +``` + +### FAQ + +1. Which bin-packing strategy does AKS recommend to increase node utilization? + + AKS recommends using the scoring strategy `RequestedToCapacityRatio` because it provides a more granular scoring approach allowing users to define an ideal utilization curve for their respective nodes. For example, this bin packing strategy allows users to configure a target utilization of 85%. + +2. How do Configurable Scheduler Profiles interact with autoscalers such as Node Auto Provisioning (NAP), Cluster Autoscaler (CA), and Vertical Pod Autoscaler (VPA)? + + These components are complementary to each other. Configurable Scheduler Profiles influence how pods are placed on nodes, while autoscalers make scaling decisions based on resource utilization and pending pods. Look out for a incoming blog that details how scheduling constraints effect Node Auto Provisoing. + + - **Node Auto Provisioning (NAP)** is triggered when pods are unschedulable. If a suitable node already exists, that pod will be scheduled with the defined Configurable Scheduler Profile. If no suitable node exists, NAP provisions new capacity and schedules the pod. + - **Cluster Autoscaler (CA)** manages node scale-up and scale-down. On scale-up, CA is triggered when there aren't any suitable nodes available for the pending pod. Using Configurable Scheduler Profiles ensures nodes are only scaled when provisioned resources are no longer suitable. On scale-down, CA is triggered when nodes fall below utilization thresholds, the default is 50%. As active nodes are packed more efficiently, underutilized nodes become easier candidates for removal. + - **Vertical Pod Autoscaler (VPA)** optimizes resource utilization patterns in pods. As pods are recreated with updated CPU and memory requests, they are scheduled using the configured scheduler profile, allowing placement decisions to reflect the new resource requirements. + +3. What if a resource, like `memory`, is omitted in the `scoringStrategy`? + + If a resource is omitted in the `scoringStrategy`, then that resource will not be considered in the filter or scoring cycles of the defined Configurable Scheduler Profile. If that resource should be considered, but with a reduced influence on the final score, it can be included with reduced weight. + +4. Can multiple Configurable Scheduler Profiles be used for different workloads on the same cluster? + + Yes, multiple scheduling profiles can coexist in a single cluster. This allows different placement strategies (for example, cost‑optimized vs. latency‑sensitive workloads) to run side‑by‑side. Visit the documentation for a [multiple scheduler profiles example][configure-multi-config]. + + - Multiple profiles can be defined centrally in a single scheduler configuration. + - Individual workloads select a profile via `schedulerName` in the pod spec. + +5. How do I monitor whether my scheduler profile is improving utilization? + + Monitor these signals to confirm that the scheduler is behaving correctly. Over time, you should see higher average node utilization, reduced variance between nodes, and fewer lightly utilized nodes. + + - Track node‑level utilization metrics, including CPU and memory utilization per node and distribution of pods across nodes, using Azure Monitor Container Insights, the AKS [node viewer tool][aks-node-viewer], or `kubectl top nodes` for quick validation. + - Review autoscaler outcomes, looking for fewer scale‑ups during normal load and more decisive scale‑downs after demand drops. + - Measure cost metrics, such as reduced idle costs when you use the [Cost Analysis add-on][aks-cost-analysis-add-on]. + +## Next steps: Optimize Azure resources and test Configurable Scheduler Profiles on AKS + +With Configurable Scheduler Profiles, teams gain fine-grained control over pod placement strategies like bin-packing, topology distribution, and resource-based scoring that directly addresses challenges related to application resilience and resource utilization for their AKS clusters. By leveraging these scheduling plugins, AKS users can ensure their workloads make full use of available GPU capacity, reduce idle costs, and avoid costly overprovisioning. This not only improves return on investment (ROI) but also accelerates development by allowing more jobs to run concurrently and reliably. + +- For additional guidance and best practices, see [kube-scheduler best practices][best-practices-advanced-scheduler] +- Increase node utilization using [Configurable Scheduler Profiles][node-bin-packing-configurations] +- If additional capabilities or ML frameworks are needed to schedule and queue batch workloads, you can [install and configure Kueue on AKS][kueue-overview] to ensure efficient, policy-driven scheduling in AKS clusters. + +[concepts-scheduler-configuration]: https://learn.microsoft.com/azure/aks/concepts-scheduler-configuration +[kueue-overview]: https://learn.microsoft.com/azure/aks/kueue-overview +[best-practices-advanced-scheduler]: https://learn.microsoft.com/azure/aks/operator-best-practices-advanced-scheduler +[scheduling-framework-interfaces]: https://kubernetes.io/docs/concepts/scheduling-eviction/scheduling-framework/#interfaces +[supported-in-tree-scheduling-plugins]: https://learn.microsoft.com/azure/aks/concepts-scheduler-configuration#supported-in-tree-scheduling-plugins +[node-bin-packing-configurations]: https://learn.microsoft.com/azure/aks/configure-node-binpack-scheduler?tabs=new-cluster +[datadog-state-of-containers]: https://www.datadoghq.com/state-of-containers-and-serverless/ +[configure-requested-to-capacity]: https://learn.microsoft.com/azure/aks/configure-node-binpack-scheduler?tabs=new-cluster#configure-node-bin-packing-with-requestedtocapacity-plugin +[configure-most-allocated]: https://learn.microsoft.com/azure/aks/configure-node-binpack-scheduler?tabs=new-cluster#configure-node-bin-packing-with-mostallocated-plugin +[configure-multi-config]: https://learn.microsoft.com/azure/aks/configure-aks-scheduler?tabs=new-cluster#configure-multiple-scheduler-profiles +[aks-cost-analysis-add-on]: https://learn.microsoft.com/azure/aks/cost-analysis +[wb-gpu-utilization]: https://wandb.ai/wandb_fc/articles/reports/Monitor-Improve-GPU-Usage-for-Model-Training--Vmlldzo1NDQzNjM3 +[deep-dive-scheduler-framework]: https://helayoty.org/blog/inside-kube-scheduler-the-plugin +[aks-node-viewer]: https://github.com/Azure/aks-node-viewer diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/kube-scheduler-scheduling-phases-diagram.png b/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/kube-scheduler-scheduling-phases-diagram.png similarity index 100% rename from website/blog/2026-03-31-aks-config-scheduler-profiles-preview/kube-scheduler-scheduling-phases-diagram.png rename to website/blog/2026-04-06-aks-config-scheduler-profiles-preview/kube-scheduler-scheduling-phases-diagram.png From 51b7cbebe1afc82cf8eb38df1b1ee010b99b1f04 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Wed, 1 Apr 2026 17:14:45 -0700 Subject: [PATCH 148/164] Delete website/blog/2026-03-31-aks-config-scheduler-profiles-preview directory --- .../index.md | 242 ------------------ 1 file changed, 242 deletions(-) delete mode 100644 website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md diff --git a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md deleted file mode 100644 index bffd858fa..000000000 --- a/website/blog/2026-03-31-aks-config-scheduler-profiles-preview/index.md +++ /dev/null @@ -1,242 +0,0 @@ ---- -title: "AKS Configurable Scheduler Profiles (preview)" -description: "Improve GPU and CPU utilization, align pod placement to critical workloads, and reduce node costs at scale with Configurable Scheduler Profiles on AKS." -date: 2026-04-06 -authors: [colin-mixon] -tags: [ai, performance, scheduler, best-practices, cost] ---- - -In 2025, Datadog found most Kubernetes containers use less than [25% of their requested CPU][datadog-state-of-containers], and in 2023, Weights and Biases found that nearly a third of GPU users [average less than 15% utilization][wb-gpu-utilization]. Underutilized resources materially contribute to increased infrastructure cost and this data signals that most users can greatly improve resource utilization. While there are many factors that impact node utilization, as a core component of the Kubernetes control plane, the kube-scheduler plays a critical role in node utilization. - -[Configurable Scheduler Profiles][concepts-scheduler-configuration] on AKS lets customers configure their own scheduling logic: enable specific plugins, adjust plugin priorities, and tune parameter weights. **The result: higher node density, better GPU utilization, and lower infrastructure costs.** - -This blog explains how the default Kubernetes scheduler places pods, where the defaults fall short, and how to increase node utilization using Configurable Scheduler Profiles on AKS. - -1. [How does kube-scheduler work?](#how-does-the-default-kubernetes-scheduler-place-pods) -2. [Use Configurable Scheduler Profiles to increase node utilization and operator control](#increase-node-utilization-and-operator-control) -3. [Increase AKS cluster CPU utilization up to 85% with Configurable Scheduler](#increase-aks-cpu-utilization) -4. [Increase AKS cluster GPU or CPU utilization while balancing memory with Configurable Scheduler](#increase-aks-gpu-utilization) -5. [FAQ: How do Configurable Scheduler Profiles interact with autoscalers?](#faq) - - - -![Diagram showing increased node utilization with the node bin packing scheduler profile](./hero-image.png) - -## How does the default Kubernetes scheduler place pods? - -The Kubernetes scheduler operates in two cycles: a synchronous scheduling cycle and an asynchronous binding cycle. The scheduling cycle has two sub-phases, filtering and scoring, and only manages one pod at a time. - -1. **Filtering** phase removes unsuitable nodes based on hard and soft constraints. -2. **Scoring** phase calculates a score for the remaining nodes; ultimately, the most suitable node has the highest score. - -Once a node is selected, the binding cycle can process multiple pods in parallel. During this phase, the scheduler attempts to bind the pod to the chosen node. If binding a pod to a node fails, the scheduler tries the node with the next highest score. When filtering and scoring nodes, the default scheduler considers several hard and soft constraints with predefined weights, including (but not limited to): - -1. Resource requirements (CPU, memory) -2. Node affinity/anti-affinity -3. Pod affinity/anti-affinity -4. Taints and tolerations -5. TopologySpreadConstraints - -![Diagram of the kube-scheduler workflow showing pods entering the scheduling cycle and binding cycle to assign a pod on a node](./kube-scheduler-scheduling-phases-diagram.png) - -For a deep dive on the Kubernetes Scheduler visit technical blog from SIG Scheduling contributor and AKS Upstream Engineer, Heba Elayoty, [Deep Dive into the Kubernetes Scheduler Framework][deep-dive-scheduler-framework]. - -### Limitations of the default Kubernetes scheduler - -The default scheduler is primarily designed for general-purpose workloads. It prioritizes nodes with the most available resources using the _LeastAllocated_ scoring strategy. This strategy spreads pods across nodes, even when they could safely be packed more densely. While this works well for many services, the default scheduling criteria, and their fixed priority order, are not suitable for workloads that demand optimizing GPU and CPU utilization. In these scenarios, spreading pods across nodes can lead to fragmented resources, underutilized GPUs, and increased infrastructure cost. - -Today, the default scheduler on AKS lacks the flexibility for users to change which criteria should be prioritized, or ignored, in the scheduling cycle on a per cluster basis. This rigidity often forces users to either accept suboptimal placement or manage a separate custom scheduler, both of which increase operational complexity. Starting with Kubernetes v1.33, AKS introduces [Configurable Scheduler Profiles][concepts-scheduler-configuration] - an AKS-managed CRD - that exposes the upstream scheduling framework without maintaining a separate scheduler. Now, users can adjust the `NodeResourcesFit` plugin from the default configuration to favor nodes with higher utilization to achieve more efficient bin‑packing and reduce infrastructure cost. - -## Configurable Scheduler Profiles on AKS - -[Configurable Scheduler Profiles on AKS][concepts-scheduler-configuration] allow customers to benefit from the extensibility of the [scheduling framework][scheduling-framework-interfaces] while reducing the operational overhead of adopting a second scheduler or defining a custom scheduler. Configurable Scheduler Profiles use a Custom Resource Definition (CRD) that lets users define custom scheduler profiles with their own scheduling logic. A dedicated controller continuously reconciles these user-defined configurations with the underlying kube-scheduler deployment, validating changes and applying them transparently. If a new configuration causes the scheduler to become unhealthy, the controller automatically reverts to the last known good state to ensure cluster stability. - -![Architecture diagram showing how Configurable Scheduler Profiles use a CRD and controller to reconcile user-defined profiles with the kube-scheduler deployment](./config-scheduler-profiles.png) - -A profile is a set of one or more in-tree scheduling plugins and configurations that dictate how to schedule a pod. AKS supports 18 in-tree Kubernetes [scheduling plugins][supported-in-tree-scheduling-plugins]. - -## Increase node utilization and operator control - -In this simple scale-out scenario, manually increasing identical CPU-bound replicas from 8 to 30, the default scheduler distributes pods evenly across nodes. - -Configurable Scheduler Profiles configured for bin-packing show a visible consolidation pattern that differs from the default scheduler, and improves capacity for new pods. This shift occurs without changing the workload, node size, or autoscaling behavior - only the scheduler’s scoring logic. - -![Table showing increased node utilization with the node bin packing scheduler profiles versus the pod distribution using the default scheduler](./default-config-scheduler-comparison.png) - -While this experiment uses intentionally simple, CPU-bound containers to isolate scheduling behavior, the placement patterns observed here can be applied to GPU-bound workloads where capacity constraints elevate the need for utilization improvements. In this constrained GPU scenario the bin‑packing scheduler plays a critical role in maximizing usable capacity of 4 GPU's spread across 2 nodes. By consolidating single‑GPU workloads onto the same node, the scheduler avoids idle GPUs and enables all four GPUs to be actively used before new nodes are required. - -![Table showing increased node utilization with the node bin packing scheduler profiles versus the pod distribution using the default scheduler for gpu's across multiple scheduling iterations](./default-config-scheduler-comparison-gpu.png) - -This change in distribution shape enables downstream efficiencies: improved control for platform engineers, efficient resource usage, and cost optimization that are difficult to achieve when pods are evenly spread. **The key takeaway is that each profile expresses a distinct scheduling intent. The next two sections detail how the scoring strategies, MostAllocated and RequestedToCapacityRatio achieve these outcomes.** - -| Scheduler | Scoring Strategy | Scheduling intent | Operator Benefits | -|---|---|---|---| -| Default scheduler | NodeResourcesFit: LeastAllocated | Balance and hotspot reduction | No tuning | -| Configurable Scheduler Profile | NodeResourcesFit: MostAllocated | Maximize consolidation / bin‑packing | Maximum node utilization, highest cost reduction potential | -| Configurable Scheduler Profile | NodeResourcesFit: RequestedToCapacityRatio | Targeted utilization with headroom | ✅ **Recommended strategy** Increased utilization with stronger control over consolidation and burst headroom than `MostAllocated` | - -### Increase AKS CPU utilization - -`RequestedToCapacityRatio` scores nodes based on the ratio of requested resources to total node capacity after the pod is _hypothetically_ placed. This strategy enables more fine-grained bin‑packing by allowing operators to define an ideal utilization curve for their nodes rather than simply preferring the most or least utilized nodes. Lastly, it is critical to note that `PodTopologySpread` is disabled in this profile because bin-packing and zone-spreading are opposing goals and the scheduling logic may prioritize pod spreading. If you need both high utilization _and_ zone resilience, define a new profile to achieve both goals. - -By shaping the scoring curve to target a range of 50-85% CPU utilization, operators can increase pod density on provisioned nodes while preserving headroom for bursts, background processes, and system components in CPU-based workloads. [Configure node bin-packing][configure-requested-to-capacity] using the `RequestedToCapacityRatio` strategy to improve utilization and reduce infrastructure costs. - -**This bin packing profile is configured to favor nodes within a utilization band of 50-85%, avoiding empty nodes, and severely deprioritizing nearly full nodes at 90% utilization or more, to limit oversaturated nodes. Given this level of configuration detail, `RequestedToCapacityRatio` is the recommended scoring strategy for node bin‑packing on AKS for production clusters.** - -:::note -Scoring strategy can also be used for GPU by changing the target resource. Adjust resources, resource weights, utilization thresholds, and plugin parameters to match your VM SKUs, workload patterns, and cluster topology. -::: - -```yaml -apiVersion: aks.azure.com/v1alpha1 -kind: SchedulerConfiguration -metadata: - name: upstream -spec: - rawConfig: | - apiVersion: kubescheduler.config.k8s.io/v1 - kind: KubeSchedulerConfiguration - profiles: - - schedulerName: cpu-binpacking-scheduler - plugins: - multiPoint: - enabled: - - name: NodeResourcesFit - disabled: - - name: PodTopologySpread - pluginConfig: - - name: NodeResourcesFit - args: - apiVersion: kubescheduler.config.k8s.io/v1 - kind: NodeResourcesFitArgs - scoringStrategy: - type: RequestedToCapacityRatio - resources: - - name: cpu - weight: 8 - - name: memory - weight: 1 - requestedToCapacityRatio: - shape: - - utilization: 0 - score: 0 - - utilization: 30 - score: 8 - - utilization: 50 - score: 10 - - utilization: 85 - score: 10 - - utilization: 90 - score: 3 - - utilization: 100 - score: 0 -``` - -### Increase AKS GPU utilization - -`MostAllocated` scores nodes based on its current resource utilization, favoring nodes that are already heavily used. `RequestedToCapacityRatio`, on the other hand, scores nodes based on both the resource requests and the remaining node capacity, making `MostAllocated` more suitable for an aggressive cost-optimization scheduling strategy since it inetionally ignores capacity. When paired with MostAllocated, `NodeResourcesBalancedAllocation` complements the behavior because it encourages pod placement on nodes with user-defined proportional utilization, helping reduce bottlenecks caused by asymmetric resource pressure. Lastly, it is critical to note that `PodTopologySpread` is disabled in this profile because bin-packing and zone-spreading are opposing goals. Enabling both can result in spreading over consolidation, weakening the intended packing behavior. - -When combined, these plugins favor GPU‑bound nodes with balanced CPU and memory usage over nodes with large amounts of unused memory or fragmented resources. This results in more efficient GPU placement and fewer partially utilized nodes. [Configure node bin-packing][configure-most-allocated] using the MostAllocated strategy to improve utilization and reduce infrastructure costs. - -**This scheduler configuration maximizes GPU utilization by consolidating smaller jobs onto fewer nodes, reducing idle accelerator capacity while maintaining reasonable CPU and memory balance.** - -:::note -Adjust resources, resource weights, utilization thresholds, and plugin parameters to match your VM SKUs, workload patterns, and cluster topology. -::: - -```yaml -apiVersion: aks.azure.com/v1alpha1 -kind: SchedulerConfiguration -metadata: - name: upstream -spec: - rawConfig: | - apiVersion: kubescheduler.config.k8s.io/v1 - kind: KubeSchedulerConfiguration - profiles: - - schedulerName: gpu-node-binpacking-scheduler - plugins: - multiPoint: - enabled: - - name: NodeResourcesFit - - name: NodeResourcesBalancedAllocation - disabled: - - name: PodTopologySpread - pluginConfig: - - name: NodeResourcesFit - args: - apiVersion: kubescheduler.config.k8s.io/v1 - kind: NodeResourcesFitArgs - scoringStrategy: - type: MostAllocated - resources: - - name: nvidia.com/gpu - weight: 8 - - name: cpu - weight: 1 - - name: NodeResourcesBalancedAllocation - args: - apiVersion: kubescheduler.config.k8s.io/v1 - kind: NodeResourcesBalancedAllocationArgs - resources: - - name: cpu - weight: 1 - - name: memory - weight: 1 -``` - -### FAQ - -1. Which bin-packing strategy does AKS recommend to increase node utilization? - - AKS recommends using the scoring strategy `RequestedToCapacityRatio` because it provides a more granular scoring approach allowing users to define an ideal utilization curve for their respective nodes. For example, this bin packing strategy allows users to configure a target utilization of 85%. - -2. How do Configurable Scheduler Profiles interact with autoscalers such as Node Auto Provisioning (NAP), Cluster Autoscaler (CA), and Vertical Pod Autoscaler (VPA)? - - These components are complementary to each other. Configurable Scheduler Profiles influence how pods are placed on nodes, while autoscalers make scaling decisions based on resource utilization and pending pods. Look out for a incoming blog that details how scheduling constraints effect Node Auto Provisoing. - - - **Node Auto Provisioning (NAP)** is triggered when pods are unschedulable. If a suitable node already exists, that pod will be scheduled with the defined Configurable Scheduler Profile. If no suitable node exists, NAP provisions new capacity and schedules the pod. - - **Cluster Autoscaler (CA)** manages node scale-up and scale-down. On scale-up, CA is triggered when there aren't any suitable nodes available for the pending pod. Using Configurable Scheduler Profiles ensures nodes are only scaled when provisioned resources are no longer suitable. On scale-down, CA is triggered when nodes fall below utilization thresholds, the default is 50%. As active nodes are packed more efficiently, underutilized nodes become easier candidates for removal. - - **Vertical Pod Autoscaler (VPA)** optimizes resource utilization patterns in pods. As pods are recreated with updated CPU and memory requests, they are scheduled using the configured scheduler profile, allowing placement decisions to reflect the new resource requirements. - -3. What if a resource, like `memory`, is omitted in the `scoringStrategy`? - - If a resource is omitted in the `scoringStrategy`, then that resource will not be considered in the filter or scoring cycles of the defined Configurable Scheduler Profile. If that resource should be considered, but with a reduced influence on the final score, it can be included with reduced weight. - -4. Can multiple Configurable Scheduler Profiles be used for different workloads on the same cluster? - - Yes, multiple scheduling profiles can coexist in a single cluster. This allows different placement strategies (for example, cost‑optimized vs. latency‑sensitive workloads) to run side‑by‑side. Visit the documentation for a [multiple scheduler profiles example][configure-multi-config]. - - - Multiple profiles can be defined centrally in a single scheduler configuration. - - Individual workloads select a profile via `schedulerName` in the pod spec. - -5. How do I monitor whether my scheduler profile is improving utilization? - - Monitor these signals to confirm that the scheduler is behaving correctly. Over time, you should see higher average node utilization, reduced variance between nodes, and fewer lightly utilized nodes. - - - Track node‑level utilization metrics, including CPU and memory utilization per node and distribution of pods across nodes, using Azure Monitor Container Insights, the AKS [node viewer tool][aks-node-viewer], or `kubectl top nodes` for quick validation. - - Review autoscaler outcomes, looking for fewer scale‑ups during normal load and more decisive scale‑downs after demand drops. - - Measure cost metrics, such as reduced idle costs when you use the [Cost Analysis add-on][aks-cost-analysis-add-on]. - -## Next steps: Optimize Azure resources and test Configurable Scheduler Profiles on AKS - -With Configurable Scheduler Profiles, teams gain fine-grained control over pod placement strategies like bin-packing, topology distribution, and resource-based scoring that directly addresses challenges related to application resilience and resource utilization for their AKS clusters. By leveraging these scheduling plugins, AKS users can ensure their workloads make full use of available GPU capacity, reduce idle costs, and avoid costly overprovisioning. This not only improves return on investment (ROI) but also accelerates development by allowing more jobs to run concurrently and reliably. - -- For additional guidance and best practices, see [kube-scheduler best practices][best-practices-advanced-scheduler] -- Increase node utilization using [Configurable Scheduler Profiles][node-bin-packing-configurations] -- If additional capabilities or ML frameworks are needed to schedule and queue batch workloads, you can [install and configure Kueue on AKS][kueue-overview] to ensure efficient, policy-driven scheduling in AKS clusters. - -[concepts-scheduler-configuration]: https://learn.microsoft.com/azure/aks/concepts-scheduler-configuration -[kueue-overview]: https://learn.microsoft.com/azure/aks/kueue-overview -[best-practices-advanced-scheduler]: https://learn.microsoft.com/azure/aks/operator-best-practices-advanced-scheduler -[scheduling-framework-interfaces]: https://kubernetes.io/docs/concepts/scheduling-eviction/scheduling-framework/#interfaces -[supported-in-tree-scheduling-plugins]: https://learn.microsoft.com/azure/aks/concepts-scheduler-configuration#supported-in-tree-scheduling-plugins -[node-bin-packing-configurations]: https://learn.microsoft.com/azure/aks/configure-node-binpack-scheduler?tabs=new-cluster -[datadog-state-of-containers]: https://www.datadoghq.com/state-of-containers-and-serverless/ -[configure-requested-to-capacity]: https://learn.microsoft.com/azure/aks/configure-node-binpack-scheduler?tabs=new-cluster#configure-node-bin-packing-with-requestedtocapacity-plugin -[configure-most-allocated]: https://learn.microsoft.com/azure/aks/configure-node-binpack-scheduler?tabs=new-cluster#configure-node-bin-packing-with-mostallocated-plugin -[configure-multi-config]: https://learn.microsoft.com/azure/aks/configure-aks-scheduler?tabs=new-cluster#configure-multiple-scheduler-profiles -[aks-cost-analysis-add-on]: https://learn.microsoft.com/azure/aks/cost-analysis -[wb-gpu-utilization]: https://wandb.ai/wandb_fc/articles/reports/Monitor-Improve-GPU-Usage-for-Model-Training--Vmlldzo1NDQzNjM3 -[deep-dive-scheduler-framework]: https://helayoty.org/blog/inside-kube-scheduler-the-plugin -[aks-node-viewer]: https://github.com/Azure/aks-node-viewer From 84a67267f3381560904b009dc5814e75bc09f769 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Wed, 1 Apr 2026 17:15:09 -0700 Subject: [PATCH 149/164] Update publication date for AKS Configurable Scheduler Profiles --- .../2026-04-06-aks-config-scheduler-profiles-preview/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md index 31b6a299a..bffd858fa 100644 --- a/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md @@ -1,7 +1,7 @@ --- title: "AKS Configurable Scheduler Profiles (preview)" description: "Improve GPU and CPU utilization, align pod placement to critical workloads, and reduce node costs at scale with Configurable Scheduler Profiles on AKS." -date: 2026-03-31 +date: 2026-04-06 authors: [colin-mixon] tags: [ai, performance, scheduler, best-practices, cost] --- From 79c481deee4603464978101749fca8e0cbcc0e53 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Wed, 1 Apr 2026 17:53:26 -0700 Subject: [PATCH 150/164] Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../index.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md index bffd858fa..119d5ad43 100644 --- a/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md @@ -63,9 +63,9 @@ Configurable Scheduler Profiles configured for bin-packing show a visible consol ![Table showing increased node utilization with the node bin packing scheduler profiles versus the pod distribution using the default scheduler](./default-config-scheduler-comparison.png) -While this experiment uses intentionally simple, CPU-bound containers to isolate scheduling behavior, the placement patterns observed here can be applied to GPU-bound workloads where capacity constraints elevate the need for utilization improvements. In this constrained GPU scenario the bin‑packing scheduler plays a critical role in maximizing usable capacity of 4 GPU's spread across 2 nodes. By consolidating single‑GPU workloads onto the same node, the scheduler avoids idle GPUs and enables all four GPUs to be actively used before new nodes are required. +While this experiment uses intentionally simple, CPU-bound containers to isolate scheduling behavior, the placement patterns observed here can be applied to GPU-bound workloads where capacity constraints elevate the need for utilization improvements. In this constrained GPU scenario the bin‑packing scheduler plays a critical role in maximizing usable capacity of 4 GPUs spread across 2 nodes. By consolidating single‑GPU workloads onto the same node, the scheduler avoids idle GPUs and enables all four GPUs to be actively used before new nodes are required. -![Table showing increased node utilization with the node bin packing scheduler profiles versus the pod distribution using the default scheduler for gpu's across multiple scheduling iterations](./default-config-scheduler-comparison-gpu.png) +![Table showing increased node utilization with the node bin packing scheduler profiles versus the pod distribution using the default scheduler for GPUs across multiple scheduling iterations](./default-config-scheduler-comparison-gpu.png) This change in distribution shape enables downstream efficiencies: improved control for platform engineers, efficient resource usage, and cost optimization that are difficult to achieve when pods are evenly spread. **The key takeaway is that each profile expresses a distinct scheduling intent. The next two sections detail how the scoring strategies, MostAllocated and RequestedToCapacityRatio achieve these outcomes.** @@ -134,7 +134,7 @@ spec: ### Increase AKS GPU utilization -`MostAllocated` scores nodes based on its current resource utilization, favoring nodes that are already heavily used. `RequestedToCapacityRatio`, on the other hand, scores nodes based on both the resource requests and the remaining node capacity, making `MostAllocated` more suitable for an aggressive cost-optimization scheduling strategy since it inetionally ignores capacity. When paired with MostAllocated, `NodeResourcesBalancedAllocation` complements the behavior because it encourages pod placement on nodes with user-defined proportional utilization, helping reduce bottlenecks caused by asymmetric resource pressure. Lastly, it is critical to note that `PodTopologySpread` is disabled in this profile because bin-packing and zone-spreading are opposing goals. Enabling both can result in spreading over consolidation, weakening the intended packing behavior. +`MostAllocated` scores nodes based on its current resource utilization, favoring nodes that are already heavily used. `RequestedToCapacityRatio`, on the other hand, scores nodes based on both the resource requests and the remaining node capacity, making `MostAllocated` more suitable for an aggressive cost-optimization scheduling strategy since it intentionally ignores capacity. When paired with MostAllocated, `NodeResourcesBalancedAllocation` complements the behavior because it encourages pod placement on nodes with user-defined proportional utilization, helping reduce bottlenecks caused by asymmetric resource pressure. Lastly, it is critical to note that `PodTopologySpread` is disabled in this profile because bin-packing and zone-spreading are opposing goals. Enabling both can result in spreading over consolidation, weakening the intended packing behavior. When combined, these plugins favor GPU‑bound nodes with balanced CPU and memory usage over nodes with large amounts of unused memory or fragmented resources. This results in more efficient GPU placement and fewer partially utilized nodes. [Configure node bin-packing][configure-most-allocated] using the MostAllocated strategy to improve utilization and reduce infrastructure costs. @@ -193,7 +193,7 @@ spec: 2. How do Configurable Scheduler Profiles interact with autoscalers such as Node Auto Provisioning (NAP), Cluster Autoscaler (CA), and Vertical Pod Autoscaler (VPA)? - These components are complementary to each other. Configurable Scheduler Profiles influence how pods are placed on nodes, while autoscalers make scaling decisions based on resource utilization and pending pods. Look out for a incoming blog that details how scheduling constraints effect Node Auto Provisoing. + These components are complementary to each other. Configurable Scheduler Profiles influence how pods are placed on nodes, while autoscalers make scaling decisions based on resource utilization and pending pods. Look out for an upcoming blog that details how scheduling constraints affect Node Auto Provisioning. - **Node Auto Provisioning (NAP)** is triggered when pods are unschedulable. If a suitable node already exists, that pod will be scheduled with the defined Configurable Scheduler Profile. If no suitable node exists, NAP provisions new capacity and schedules the pod. - **Cluster Autoscaler (CA)** manages node scale-up and scale-down. On scale-up, CA is triggered when there aren't any suitable nodes available for the pending pod. Using Configurable Scheduler Profiles ensures nodes are only scaled when provisioned resources are no longer suitable. On scale-down, CA is triggered when nodes fall below utilization thresholds, the default is 50%. As active nodes are packed more efficiently, underutilized nodes become easier candidates for removal. From 18ba6fbaa577fe1771cfd2cf0f7248698f62f70f Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Wed, 1 Apr 2026 17:58:39 -0700 Subject: [PATCH 151/164] Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../2026-04-06-aks-config-scheduler-profiles-preview/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md index 119d5ad43..985382566 100644 --- a/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md @@ -39,7 +39,7 @@ Once a node is selected, the binding cycle can process multiple pods in parallel ![Diagram of the kube-scheduler workflow showing pods entering the scheduling cycle and binding cycle to assign a pod on a node](./kube-scheduler-scheduling-phases-diagram.png) -For a deep dive on the Kubernetes Scheduler visit technical blog from SIG Scheduling contributor and AKS Upstream Engineer, Heba Elayoty, [Deep Dive into the Kubernetes Scheduler Framework][deep-dive-scheduler-framework]. +For a deep dive on the Kubernetes scheduler, visit the technical blog post from SIG Scheduling contributor and AKS upstream engineer Heba Elayoty, [Deep Dive into the Kubernetes Scheduler Framework][deep-dive-scheduler-framework]. ### Limitations of the default Kubernetes scheduler From 840c9fef561787b0e5f6874d678e13926003d53c Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Thu, 2 Apr 2026 10:31:15 -0700 Subject: [PATCH 152/164] Fix formatting in AKS scheduler profiles documentation --- .../2026-04-06-aks-config-scheduler-profiles-preview/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md index 985382566..4544d1b3c 100644 --- a/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md @@ -73,7 +73,7 @@ This change in distribution shape enables downstream efficiencies: improved cont |---|---|---|---| | Default scheduler | NodeResourcesFit: LeastAllocated | Balance and hotspot reduction | No tuning | | Configurable Scheduler Profile | NodeResourcesFit: MostAllocated | Maximize consolidation / bin‑packing | Maximum node utilization, highest cost reduction potential | -| Configurable Scheduler Profile | NodeResourcesFit: RequestedToCapacityRatio | Targeted utilization with headroom | ✅ **Recommended strategy** Increased utilization with stronger control over consolidation and burst headroom than `MostAllocated` | +| Configurable Scheduler Profile | NodeResourcesFit: RequestedToCapacityRatio | Targeted utilization with headroom | ✅ **Recommended strategy** Increased utilization with stronger control over consolidation and burst headroom than `MostAllocated`| ### Increase AKS CPU utilization From 14f98e061e516a9432dfdd249917cf44fbe77c48 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Thu, 2 Apr 2026 10:51:10 -0700 Subject: [PATCH 153/164] Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../index.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md index 4544d1b3c..3b5ed4c2a 100644 --- a/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md @@ -12,14 +12,13 @@ In 2025, Datadog found most Kubernetes containers use less than [25% of their re This blog explains how the default Kubernetes scheduler places pods, where the defaults fall short, and how to increase node utilization using Configurable Scheduler Profiles on AKS. + + 1. [How does kube-scheduler work?](#how-does-the-default-kubernetes-scheduler-place-pods) 2. [Use Configurable Scheduler Profiles to increase node utilization and operator control](#increase-node-utilization-and-operator-control) 3. [Increase AKS cluster CPU utilization up to 85% with Configurable Scheduler](#increase-aks-cpu-utilization) 4. [Increase AKS cluster GPU or CPU utilization while balancing memory with Configurable Scheduler](#increase-aks-gpu-utilization) 5. [FAQ: How do Configurable Scheduler Profiles interact with autoscalers?](#faq) - - - ![Diagram showing increased node utilization with the node bin packing scheduler profile](./hero-image.png) ## How does the default Kubernetes scheduler place pods? From 7033113c8b3b12e23b0ba631d408f690911acd9c Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Thu, 2 Apr 2026 11:00:40 -0700 Subject: [PATCH 154/164] Add image and FAQ section to AKS Config Scheduler post --- .../2026-04-06-aks-config-scheduler-profiles-preview/index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md index 3b5ed4c2a..97adf20e8 100644 --- a/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md @@ -19,6 +19,7 @@ This blog explains how the default Kubernetes scheduler places pods, where the d 3. [Increase AKS cluster CPU utilization up to 85% with Configurable Scheduler](#increase-aks-cpu-utilization) 4. [Increase AKS cluster GPU or CPU utilization while balancing memory with Configurable Scheduler](#increase-aks-gpu-utilization) 5. [FAQ: How do Configurable Scheduler Profiles interact with autoscalers?](#faq) + ![Diagram showing increased node utilization with the node bin packing scheduler profile](./hero-image.png) ## How does the default Kubernetes scheduler place pods? From a386b158c4d229f1709ce1ae8e0c8f5adbd45e0c Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Thu, 2 Apr 2026 11:56:28 -0700 Subject: [PATCH 155/164] Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../index.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md index 97adf20e8..245b4c800 100644 --- a/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md @@ -69,11 +69,11 @@ While this experiment uses intentionally simple, CPU-bound containers to isolate This change in distribution shape enables downstream efficiencies: improved control for platform engineers, efficient resource usage, and cost optimization that are difficult to achieve when pods are evenly spread. **The key takeaway is that each profile expresses a distinct scheduling intent. The next two sections detail how the scoring strategies, MostAllocated and RequestedToCapacityRatio achieve these outcomes.** -| Scheduler | Scoring Strategy | Scheduling intent | Operator Benefits | -|---|---|---|---| -| Default scheduler | NodeResourcesFit: LeastAllocated | Balance and hotspot reduction | No tuning | -| Configurable Scheduler Profile | NodeResourcesFit: MostAllocated | Maximize consolidation / bin‑packing | Maximum node utilization, highest cost reduction potential | -| Configurable Scheduler Profile | NodeResourcesFit: RequestedToCapacityRatio | Targeted utilization with headroom | ✅ **Recommended strategy** Increased utilization with stronger control over consolidation and burst headroom than `MostAllocated`| +| Scheduler | Scoring strategy | Scheduling intent | Operator benefits | +| ------------------------------ | -------------------------------------- | ------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | +| Default scheduler | NodeResourcesFit: LeastAllocated | Balance and hotspot reduction | No tuning | +| Configurable Scheduler Profile | NodeResourcesFit: MostAllocated | Maximize consolidation / bin‑packing | Maximum node utilization, highest cost reduction potential | +| Configurable Scheduler Profile | NodeResourcesFit: RequestedToCapacityRatio | Targeted utilization with headroom | ✅ **Recommended strategy** Increased utilization with stronger control over consolidation and burst headroom than `MostAllocated` | ### Increase AKS CPU utilization From baae67f8108e806fd620e4d1d503a0ccd13e1b41 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Fri, 3 Apr 2026 10:47:08 -0700 Subject: [PATCH 156/164] Apply suggestions from code review Co-authored-by: Ahmed Sabbour <103856+sabbour@users.noreply.github.com> --- .../index.md | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md index 245b4c800..27af2ca31 100644 --- a/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md @@ -8,9 +8,9 @@ tags: [ai, performance, scheduler, best-practices, cost] In 2025, Datadog found most Kubernetes containers use less than [25% of their requested CPU][datadog-state-of-containers], and in 2023, Weights and Biases found that nearly a third of GPU users [average less than 15% utilization][wb-gpu-utilization]. Underutilized resources materially contribute to increased infrastructure cost and this data signals that most users can greatly improve resource utilization. While there are many factors that impact node utilization, as a core component of the Kubernetes control plane, the kube-scheduler plays a critical role in node utilization. -[Configurable Scheduler Profiles][concepts-scheduler-configuration] on AKS lets customers configure their own scheduling logic: enable specific plugins, adjust plugin priorities, and tune parameter weights. **The result: higher node density, better GPU utilization, and lower infrastructure costs.** +[Configurable Scheduler Profiles][concepts-scheduler-configuration] on Azure Kubernetes Service (AKS) let you configure your own scheduling logic: enable specific plugins, adjust plugin priorities, and tune parameter weights. **The result: higher node density, better GPU utilization, and lower infrastructure costs.** -This blog explains how the default Kubernetes scheduler places pods, where the defaults fall short, and how to increase node utilization using Configurable Scheduler Profiles on AKS. +You'll learn how the default Kubernetes scheduler places pods, where the defaults fall short, and how to increase node utilization with Configurable Scheduler Profiles on AKS. @@ -39,7 +39,7 @@ Once a node is selected, the binding cycle can process multiple pods in parallel ![Diagram of the kube-scheduler workflow showing pods entering the scheduling cycle and binding cycle to assign a pod on a node](./kube-scheduler-scheduling-phases-diagram.png) -For a deep dive on the Kubernetes scheduler, visit the technical blog post from SIG Scheduling contributor and AKS upstream engineer Heba Elayoty, [Deep Dive into the Kubernetes Scheduler Framework][deep-dive-scheduler-framework]. +For more on how the Kubernetes scheduler works, see the technical blog post from SIG Scheduling contributor and AKS upstream engineer Heba Elayoty, [Deep Dive into the Kubernetes Scheduler Framework][deep-dive-scheduler-framework]. ### Limitations of the default Kubernetes scheduler @@ -67,7 +67,7 @@ While this experiment uses intentionally simple, CPU-bound containers to isolate ![Table showing increased node utilization with the node bin packing scheduler profiles versus the pod distribution using the default scheduler for GPUs across multiple scheduling iterations](./default-config-scheduler-comparison-gpu.png) -This change in distribution shape enables downstream efficiencies: improved control for platform engineers, efficient resource usage, and cost optimization that are difficult to achieve when pods are evenly spread. **The key takeaway is that each profile expresses a distinct scheduling intent. The next two sections detail how the scoring strategies, MostAllocated and RequestedToCapacityRatio achieve these outcomes.** +This change in distribution shape enables downstream efficiencies: improved control for platform engineers, efficient resource usage, and cost optimization that are difficult to achieve when pods are evenly spread. **Each profile expresses a distinct scheduling intent. The next two sections detail how the scoring strategies, MostAllocated and RequestedToCapacityRatio achieve these outcomes.** | Scheduler | Scoring strategy | Scheduling intent | Operator benefits | | ------------------------------ | -------------------------------------- | ------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | @@ -77,7 +77,7 @@ This change in distribution shape enables downstream efficiencies: improved cont ### Increase AKS CPU utilization -`RequestedToCapacityRatio` scores nodes based on the ratio of requested resources to total node capacity after the pod is _hypothetically_ placed. This strategy enables more fine-grained bin‑packing by allowing operators to define an ideal utilization curve for their nodes rather than simply preferring the most or least utilized nodes. Lastly, it is critical to note that `PodTopologySpread` is disabled in this profile because bin-packing and zone-spreading are opposing goals and the scheduling logic may prioritize pod spreading. If you need both high utilization _and_ zone resilience, define a new profile to achieve both goals. +`RequestedToCapacityRatio` scores nodes based on the ratio of requested resources to total node capacity after the pod is _hypothetically_ placed. This strategy enables more fine-grained bin‑packing by allowing operators to define an ideal utilization curve for their nodes rather than simply preferring the most or least utilized nodes. `PodTopologySpread` is disabled in this profile because bin-packing and zone-spreading are opposing goals and the scheduling logic may prioritize pod spreading. If you need both high utilization _and_ zone resilience, define a new profile to achieve both goals. By shaping the scoring curve to target a range of 50-85% CPU utilization, operators can increase pod density on provisioned nodes while preserving headroom for bursts, background processes, and system components in CPU-based workloads. [Configure node bin-packing][configure-requested-to-capacity] using the `RequestedToCapacityRatio` strategy to improve utilization and reduce infrastructure costs. @@ -220,12 +220,11 @@ spec: ## Next steps: Optimize Azure resources and test Configurable Scheduler Profiles on AKS -With Configurable Scheduler Profiles, teams gain fine-grained control over pod placement strategies like bin-packing, topology distribution, and resource-based scoring that directly addresses challenges related to application resilience and resource utilization for their AKS clusters. By leveraging these scheduling plugins, AKS users can ensure their workloads make full use of available GPU capacity, reduce idle costs, and avoid costly overprovisioning. This not only improves return on investment (ROI) but also accelerates development by allowing more jobs to run concurrently and reliably. - +Configurable Scheduler Profiles give you direct control over pod placement. With these scheduling plugins, your workloads make full use of available GPU capacity, reduce idle costs, and avoid costly overprovisioning. - For additional guidance and best practices, see [kube-scheduler best practices][best-practices-advanced-scheduler] - Increase node utilization using [Configurable Scheduler Profiles][node-bin-packing-configurations] - If additional capabilities or ML frameworks are needed to schedule and queue batch workloads, you can [install and configure Kueue on AKS][kueue-overview] to ensure efficient, policy-driven scheduling in AKS clusters. - +- To schedule and queue batch workloads, [install and configure Kueue on AKS][kueue-overview] for efficient, policy-driven scheduling. [concepts-scheduler-configuration]: https://learn.microsoft.com/azure/aks/concepts-scheduler-configuration [kueue-overview]: https://learn.microsoft.com/azure/aks/kueue-overview [best-practices-advanced-scheduler]: https://learn.microsoft.com/azure/aks/operator-best-practices-advanced-scheduler From cb7c8ddd5ae233f840b4ee477b836809b5f86425 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Fri, 3 Apr 2026 10:48:41 -0700 Subject: [PATCH 157/164] Enhance explanation of AKS GPU scheduling strategies Clarified the explanation of the MostAllocated scheduling strategy and its interaction with other plugins, emphasizing its role in maximizing GPU utilization and reducing idle capacity. --- .../2026-04-06-aks-config-scheduler-profiles-preview/index.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md index 27af2ca31..7903a1598 100644 --- a/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md @@ -134,7 +134,7 @@ spec: ### Increase AKS GPU utilization -`MostAllocated` scores nodes based on its current resource utilization, favoring nodes that are already heavily used. `RequestedToCapacityRatio`, on the other hand, scores nodes based on both the resource requests and the remaining node capacity, making `MostAllocated` more suitable for an aggressive cost-optimization scheduling strategy since it intentionally ignores capacity. When paired with MostAllocated, `NodeResourcesBalancedAllocation` complements the behavior because it encourages pod placement on nodes with user-defined proportional utilization, helping reduce bottlenecks caused by asymmetric resource pressure. Lastly, it is critical to note that `PodTopologySpread` is disabled in this profile because bin-packing and zone-spreading are opposing goals. Enabling both can result in spreading over consolidation, weakening the intended packing behavior. +`MostAllocated` scores nodes based on its current resource utilization, favoring nodes that are already heavily used. `RequestedToCapacityRatio`, on the other hand, scores nodes based on both the resource requests and the remaining node capacity, making `MostAllocated` more suitable for an aggressive cost-optimization scheduling strategy since it intentionally ignores capacity. When paired with MostAllocated, `NodeResourcesBalancedAllocation` complements the behavior because it encourages pod placement on nodes with user-defined proportional utilization, helping reduce bottlenecks caused by asymmetric resource pressure. `PodTopologySpread` is disabled in this profile because bin-packing and zone-spreading are opposing goals. Enabling both can result in spreading over consolidation, weakening the intended packing behavior. When combined, these plugins favor GPU‑bound nodes with balanced CPU and memory usage over nodes with large amounts of unused memory or fragmented resources. This results in more efficient GPU placement and fewer partially utilized nodes. [Configure node bin-packing][configure-most-allocated] using the MostAllocated strategy to improve utilization and reduce infrastructure costs. @@ -225,6 +225,7 @@ Configurable Scheduler Profiles give you direct control over pod placement. With - Increase node utilization using [Configurable Scheduler Profiles][node-bin-packing-configurations] - If additional capabilities or ML frameworks are needed to schedule and queue batch workloads, you can [install and configure Kueue on AKS][kueue-overview] to ensure efficient, policy-driven scheduling in AKS clusters. - To schedule and queue batch workloads, [install and configure Kueue on AKS][kueue-overview] for efficient, policy-driven scheduling. + [concepts-scheduler-configuration]: https://learn.microsoft.com/azure/aks/concepts-scheduler-configuration [kueue-overview]: https://learn.microsoft.com/azure/aks/kueue-overview [best-practices-advanced-scheduler]: https://learn.microsoft.com/azure/aks/operator-best-practices-advanced-scheduler From d7c28fe5f641e4e767fc6af767c397eba2e5e039 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Fri, 3 Apr 2026 10:51:14 -0700 Subject: [PATCH 158/164] Enhance explanation of Configurable Scheduler Profiles on AKS Clarified the benefits and functionality of Configurable Scheduler Profiles on AKS, emphasizing the use of a Custom Resource Definition (CRD) and the role of the dedicated controller in maintaining cluster stability. --- .../2026-04-06-aks-config-scheduler-profiles-preview/index.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md index 7903a1598..2e5328f24 100644 --- a/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md @@ -49,7 +49,9 @@ Today, the default scheduler on AKS lacks the flexibility for users to change wh ## Configurable Scheduler Profiles on AKS -[Configurable Scheduler Profiles on AKS][concepts-scheduler-configuration] allow customers to benefit from the extensibility of the [scheduling framework][scheduling-framework-interfaces] while reducing the operational overhead of adopting a second scheduler or defining a custom scheduler. Configurable Scheduler Profiles use a Custom Resource Definition (CRD) that lets users define custom scheduler profiles with their own scheduling logic. A dedicated controller continuously reconciles these user-defined configurations with the underlying kube-scheduler deployment, validating changes and applying them transparently. If a new configuration causes the scheduler to become unhealthy, the controller automatically reverts to the last known good state to ensure cluster stability. +[Configurable Scheduler Profiles on AKS][concepts-scheduler-configuration] let you benefit from the extensibility of the [scheduling framework][scheduling-framework-interfaces] while reducing the operational overhead of adopting a second scheduler or defining a custom scheduler. + +Configurable Scheduler Profiles use a Custom Resource Definition (CRD) that lets you define custom scheduler profiles with their own scheduling logic. A dedicated controller continuously reconciles these user-defined configurations with the underlying kube-scheduler deployment, validating changes and applying them transparently. If a new configuration causes the scheduler to become unhealthy, the controller automatically reverts to the last known good state to ensure cluster stability. ![Architecture diagram showing how Configurable Scheduler Profiles use a CRD and controller to reconcile user-defined profiles with the kube-scheduler deployment](./config-scheduler-profiles.png) From 350f6e5bb97dc42469cb69c4da3b5b32e1e83ead Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Fri, 3 Apr 2026 11:15:17 -0700 Subject: [PATCH 159/164] Enhance clarity on AKS scheduling and resource utilization Revised content for clarity and improved flow regarding Kubernetes resource utilization and scheduling strategies. --- .../index.md | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md index 2e5328f24..957db6f2e 100644 --- a/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md @@ -6,7 +6,7 @@ authors: [colin-mixon] tags: [ai, performance, scheduler, best-practices, cost] --- -In 2025, Datadog found most Kubernetes containers use less than [25% of their requested CPU][datadog-state-of-containers], and in 2023, Weights and Biases found that nearly a third of GPU users [average less than 15% utilization][wb-gpu-utilization]. Underutilized resources materially contribute to increased infrastructure cost and this data signals that most users can greatly improve resource utilization. While there are many factors that impact node utilization, as a core component of the Kubernetes control plane, the kube-scheduler plays a critical role in node utilization. +Your clusters are likely running well below capacity and underutilized resources materially contribute to increased infrastructure cost. In 2025, Datadog found most Kubernetes containers use less than [25% of their requested CPU][datadog-state-of-containers], and in 2023, Weights and Biases found that nearly a third of GPU users [averaged less than 15% utilization][wb-gpu-utilization]. While there are many factors that impact node utilization, as a core component of the Kubernetes control plane, the kube-scheduler plays a critical role in node utilization. [Configurable Scheduler Profiles][concepts-scheduler-configuration] on Azure Kubernetes Service (AKS) let you configure your own scheduling logic: enable specific plugins, adjust plugin priorities, and tune parameter weights. **The result: higher node density, better GPU utilization, and lower infrastructure costs.** @@ -79,11 +79,14 @@ This change in distribution shape enables downstream efficiencies: improved cont ### Increase AKS CPU utilization -`RequestedToCapacityRatio` scores nodes based on the ratio of requested resources to total node capacity after the pod is _hypothetically_ placed. This strategy enables more fine-grained bin‑packing by allowing operators to define an ideal utilization curve for their nodes rather than simply preferring the most or least utilized nodes. `PodTopologySpread` is disabled in this profile because bin-packing and zone-spreading are opposing goals and the scheduling logic may prioritize pod spreading. If you need both high utilization _and_ zone resilience, define a new profile to achieve both goals. +Using `RequestedToCapacityRatio`, this bin packing profile is configured to favor nodes within a utilization band of 50-85%, avoiding empty nodes, and severely deprioritizing nearly full nodes at 90% utilization or more, to limit oversaturated nodes. [Configure node bin-packing][configure-requested-to-capacity] using the `RequestedToCapacityRatio` strategy to improve utilization and reduce infrastructure costs. -By shaping the scoring curve to target a range of 50-85% CPU utilization, operators can increase pod density on provisioned nodes while preserving headroom for bursts, background processes, and system components in CPU-based workloads. [Configure node bin-packing][configure-requested-to-capacity] using the `RequestedToCapacityRatio` strategy to improve utilization and reduce infrastructure costs. +1. `RequestedToCapacityRatio` scores nodes based on the ratio of requested resources to total node capacity after the pod is _hypothetically_ placed. This strategy enables more fine-grained bin‑packing by allowing operators to define an ideal utilization curve for their nodes rather than simply preferring the most or least utilized nodes. +2. `PodTopologySpread` is disabled in this profile because bin-packing and zone-spreading are opposing goals and the scheduling logic may prioritize pod spreading. If you need both high utilization _and_ zone resilience, define a new profile to achieve both goals. -**This bin packing profile is configured to favor nodes within a utilization band of 50-85%, avoiding empty nodes, and severely deprioritizing nearly full nodes at 90% utilization or more, to limit oversaturated nodes. Given this level of configuration detail, `RequestedToCapacityRatio` is the recommended scoring strategy for node bin‑packing on AKS for production clusters.** +By shaping the scoring curve to target a range of 50-85% CPU utilization, users can increase pod density on provisioned nodes while preserving headroom for bursts, background processes, and system components in CPU-bound workloads. + +**Given this level of configuration detail, `RequestedToCapacityRatio` is the recommended scoring strategy for node bin‑packing on AKS for production clusters.** :::note Scoring strategy can also be used for GPU by changing the target resource. Adjust resources, resource weights, utilization thresholds, and plugin parameters to match your VM SKUs, workload patterns, and cluster topology. @@ -136,9 +139,13 @@ spec: ### Increase AKS GPU utilization -`MostAllocated` scores nodes based on its current resource utilization, favoring nodes that are already heavily used. `RequestedToCapacityRatio`, on the other hand, scores nodes based on both the resource requests and the remaining node capacity, making `MostAllocated` more suitable for an aggressive cost-optimization scheduling strategy since it intentionally ignores capacity. When paired with MostAllocated, `NodeResourcesBalancedAllocation` complements the behavior because it encourages pod placement on nodes with user-defined proportional utilization, helping reduce bottlenecks caused by asymmetric resource pressure. `PodTopologySpread` is disabled in this profile because bin-packing and zone-spreading are opposing goals. Enabling both can result in spreading over consolidation, weakening the intended packing behavior. +When plugins `MostAllocated` and `NodeResourcesBalancedAllocation` are combined, the scheduler favors GPU‑bound nodes with balanced CPU and memory usage over nodes with large amounts of unused memory or fragmented resources. This results in more balanced GPU placement and fewer partially utilized nodes. [Configure node bin-packing][configure-most-allocated] using the MostAllocated strategy to improve utilization and reduce infrastructure costs. + +1. `MostAllocated` scores nodes based on its current resource utilization, favoring nodes that are already heavily used. +2. `RequestedToCapacityRatio`, on the other hand, scores nodes based on both the resource requests and the remaining node capacity, making `MostAllocated` more suitable for an aggressive cost-optimization scheduling strategy since it intentionally ignores capacity. +3. `PodTopologySpread` is disabled in this profile because bin-packing and zone-spreading are opposing goals. Enabling both can result in spreading over consolidation, weakening the intended packing behavior. -When combined, these plugins favor GPU‑bound nodes with balanced CPU and memory usage over nodes with large amounts of unused memory or fragmented resources. This results in more efficient GPU placement and fewer partially utilized nodes. [Configure node bin-packing][configure-most-allocated] using the MostAllocated strategy to improve utilization and reduce infrastructure costs. +When paired with MostAllocated, `NodeResourcesBalancedAllocation` complements the behavior because it encourages pod placement on nodes with user-defined proportional utilization, helping reduce bottlenecks caused by asymmetric resource pressure. **This scheduler configuration maximizes GPU utilization by consolidating smaller jobs onto fewer nodes, reducing idle accelerator capacity while maintaining reasonable CPU and memory balance.** @@ -220,13 +227,12 @@ spec: - Review autoscaler outcomes, looking for fewer scale‑ups during normal load and more decisive scale‑downs after demand drops. - Measure cost metrics, such as reduced idle costs when you use the [Cost Analysis add-on][aks-cost-analysis-add-on]. -## Next steps: Optimize Azure resources and test Configurable Scheduler Profiles on AKS +## Next steps: Optimize resources with Configurable Scheduler Profiles on AKS Configurable Scheduler Profiles give you direct control over pod placement. With these scheduling plugins, your workloads make full use of available GPU capacity, reduce idle costs, and avoid costly overprovisioning. - For additional guidance and best practices, see [kube-scheduler best practices][best-practices-advanced-scheduler] - Increase node utilization using [Configurable Scheduler Profiles][node-bin-packing-configurations] -- If additional capabilities or ML frameworks are needed to schedule and queue batch workloads, you can [install and configure Kueue on AKS][kueue-overview] to ensure efficient, policy-driven scheduling in AKS clusters. -- To schedule and queue batch workloads, [install and configure Kueue on AKS][kueue-overview] for efficient, policy-driven scheduling. +- To schedule and queue batch workloads, [install and configure Kueue on AKS][kueue-overview]. [concepts-scheduler-configuration]: https://learn.microsoft.com/azure/aks/concepts-scheduler-configuration [kueue-overview]: https://learn.microsoft.com/azure/aks/kueue-overview From 8489129e8b445474dfcb688193b51ee061275364 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Fri, 3 Apr 2026 11:28:55 -0700 Subject: [PATCH 160/164] Revise AKS Configurable Scheduler Profiles documentation Updated descriptions and explanations for configurable scheduler profiles and GPU utilization strategies in AKS documentation. --- .../index.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md index 957db6f2e..80dfb2331 100644 --- a/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md @@ -49,7 +49,7 @@ Today, the default scheduler on AKS lacks the flexibility for users to change wh ## Configurable Scheduler Profiles on AKS -[Configurable Scheduler Profiles on AKS][concepts-scheduler-configuration] let you benefit from the extensibility of the [scheduling framework][scheduling-framework-interfaces] while reducing the operational overhead of adopting a second scheduler or defining a custom scheduler. +[Configurable Scheduler Profiles on AKS][concepts-scheduler-configuration] let you benefit from the extensibility of the [scheduling framework][scheduling-framework-interfaces] while reducing the operational overhead of adopting a second scheduler or defining a custom scheduler. Configurable Scheduler Profiles use a Custom Resource Definition (CRD) that lets you define custom scheduler profiles with their own scheduling logic. A dedicated controller continuously reconciles these user-defined configurations with the underlying kube-scheduler deployment, validating changes and applying them transparently. If a new configuration causes the scheduler to become unhealthy, the controller automatically reverts to the last known good state to ensure cluster stability. @@ -139,13 +139,13 @@ spec: ### Increase AKS GPU utilization -When plugins `MostAllocated` and `NodeResourcesBalancedAllocation` are combined, the scheduler favors GPU‑bound nodes with balanced CPU and memory usage over nodes with large amounts of unused memory or fragmented resources. This results in more balanced GPU placement and fewer partially utilized nodes. [Configure node bin-packing][configure-most-allocated] using the MostAllocated strategy to improve utilization and reduce infrastructure costs. +When `MostAllocated` and `NodeResourcesBalancedAllocation` are combined, the scheduler favors GPU‑bound nodes with balanced CPU and memory usage over nodes with large amounts of unused memory or fragmented resources. This approach reduces fragmented GPU capacity and fewer underutilized secondary resources. [Configure node bin-packing][configure-most-allocated] using the MostAllocated strategy to improve utilization and reduce infrastructure costs. -1. `MostAllocated` scores nodes based on its current resource utilization, favoring nodes that are already heavily used. -2. `RequestedToCapacityRatio`, on the other hand, scores nodes based on both the resource requests and the remaining node capacity, making `MostAllocated` more suitable for an aggressive cost-optimization scheduling strategy since it intentionally ignores capacity. +1. `MostAllocated` scores nodes based on its current resource utilization, favoring nodes that are already heavily used for the specified resources. +2. `RequestedToCapacityRatio`, lets you define a scoring curve so you can explicitly control preferred utilization ranges and scores nodes based resource requests relative to the remaining node capacity. This makes `MostAllocated` more aggressive for consolidation but gives you less explicit control over headroom. 3. `PodTopologySpread` is disabled in this profile because bin-packing and zone-spreading are opposing goals. Enabling both can result in spreading over consolidation, weakening the intended packing behavior. -When paired with MostAllocated, `NodeResourcesBalancedAllocation` complements the behavior because it encourages pod placement on nodes with user-defined proportional utilization, helping reduce bottlenecks caused by asymmetric resource pressure. +`NodeResourcesBalancedAllocation` complements `MostAllocated` because it prefers nodes whose CPU and memory utilization stay proportionally balanced, helping reduce bottlenecks caused by asymmetric resource pressure. **This scheduler configuration maximizes GPU utilization by consolidating smaller jobs onto fewer nodes, reducing idle accelerator capacity while maintaining reasonable CPU and memory balance.** @@ -230,6 +230,7 @@ spec: ## Next steps: Optimize resources with Configurable Scheduler Profiles on AKS Configurable Scheduler Profiles give you direct control over pod placement. With these scheduling plugins, your workloads make full use of available GPU capacity, reduce idle costs, and avoid costly overprovisioning. + - For additional guidance and best practices, see [kube-scheduler best practices][best-practices-advanced-scheduler] - Increase node utilization using [Configurable Scheduler Profiles][node-bin-packing-configurations] - To schedule and queue batch workloads, [install and configure Kueue on AKS][kueue-overview]. From 67a24cbb3c29ab0d7f326bfa6417079120c10673 Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Fri, 3 Apr 2026 13:07:44 -0700 Subject: [PATCH 161/164] Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../2026-04-06-aks-config-scheduler-profiles-preview/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md index 80dfb2331..239be1ddc 100644 --- a/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md @@ -139,10 +139,10 @@ spec: ### Increase AKS GPU utilization -When `MostAllocated` and `NodeResourcesBalancedAllocation` are combined, the scheduler favors GPU‑bound nodes with balanced CPU and memory usage over nodes with large amounts of unused memory or fragmented resources. This approach reduces fragmented GPU capacity and fewer underutilized secondary resources. [Configure node bin-packing][configure-most-allocated] using the MostAllocated strategy to improve utilization and reduce infrastructure costs. +When `MostAllocated` and `NodeResourcesBalancedAllocation` are combined, the scheduler favors GPU‑bound nodes with balanced CPU and memory usage over nodes with large amounts of unused memory or fragmented resources. This approach reduces fragmented GPU capacity and results in fewer underutilized secondary resources. [Configure node bin-packing][configure-most-allocated] using the MostAllocated strategy to improve utilization and reduce infrastructure costs. 1. `MostAllocated` scores nodes based on its current resource utilization, favoring nodes that are already heavily used for the specified resources. -2. `RequestedToCapacityRatio`, lets you define a scoring curve so you can explicitly control preferred utilization ranges and scores nodes based resource requests relative to the remaining node capacity. This makes `MostAllocated` more aggressive for consolidation but gives you less explicit control over headroom. +2. `RequestedToCapacityRatio`, lets you define a scoring curve so you can explicitly control preferred utilization ranges and scores nodes based on resource requests relative to the remaining node capacity. This makes `MostAllocated` more aggressive for consolidation but gives you less explicit control over headroom. 3. `PodTopologySpread` is disabled in this profile because bin-packing and zone-spreading are opposing goals. Enabling both can result in spreading over consolidation, weakening the intended packing behavior. `NodeResourcesBalancedAllocation` complements `MostAllocated` because it prefers nodes whose CPU and memory utilization stay proportionally balanced, helping reduce bottlenecks caused by asymmetric resource pressure. From 1ce29206608a8736249cb923b5e68b169c72067d Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Fri, 3 Apr 2026 13:13:55 -0700 Subject: [PATCH 162/164] Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../2026-04-06-aks-config-scheduler-profiles-preview/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md index 239be1ddc..219f98555 100644 --- a/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md @@ -69,7 +69,7 @@ While this experiment uses intentionally simple, CPU-bound containers to isolate ![Table showing increased node utilization with the node bin packing scheduler profiles versus the pod distribution using the default scheduler for GPUs across multiple scheduling iterations](./default-config-scheduler-comparison-gpu.png) -This change in distribution shape enables downstream efficiencies: improved control for platform engineers, efficient resource usage, and cost optimization that are difficult to achieve when pods are evenly spread. **Each profile expresses a distinct scheduling intent. The next two sections detail how the scoring strategies, MostAllocated and RequestedToCapacityRatio achieve these outcomes.** +This change in distribution shape enables downstream efficiencies: improved control for platform engineers, efficient resource usage, and cost optimization that are difficult to achieve when pods are evenly spread. **Each profile expresses a distinct scheduling intent. The next two sections detail how the scoring strategies, MostAllocated and RequestedToCapacityRatio, achieve these outcomes.** | Scheduler | Scoring strategy | Scheduling intent | Operator benefits | | ------------------------------ | -------------------------------------- | ------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | From 40a5a52700ca9324c0d299b3ce7a2636dfe9080d Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Mon, 6 Apr 2026 14:52:52 -0700 Subject: [PATCH 163/164] Enhance clarity on AKS Configurable Scheduler Profiles Clarified the limitations of the default Kubernetes scheduler and detailed the functionality of Configurable Scheduler Profiles on AKS. Updated the description of how the scheduling behavior can be adjusted for better resource utilization. --- .../index.md | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md index 219f98555..9cf15a95d 100644 --- a/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md @@ -45,13 +45,18 @@ For more on how the Kubernetes scheduler works, see the technical blog post from The default scheduler is primarily designed for general-purpose workloads. It prioritizes nodes with the most available resources using the _LeastAllocated_ scoring strategy. This strategy spreads pods across nodes, even when they could safely be packed more densely. While this works well for many services, the default scheduling criteria, and their fixed priority order, are not suitable for workloads that demand optimizing GPU and CPU utilization. In these scenarios, spreading pods across nodes can lead to fragmented resources, underutilized GPUs, and increased infrastructure cost. -Today, the default scheduler on AKS lacks the flexibility for users to change which criteria should be prioritized, or ignored, in the scheduling cycle on a per cluster basis. This rigidity often forces users to either accept suboptimal placement or manage a separate custom scheduler, both of which increase operational complexity. Starting with Kubernetes v1.33, AKS introduces [Configurable Scheduler Profiles][concepts-scheduler-configuration] - an AKS-managed CRD - that exposes the upstream scheduling framework without maintaining a separate scheduler. Now, users can adjust the `NodeResourcesFit` plugin from the default configuration to favor nodes with higher utilization to achieve more efficient bin‑packing and reduce infrastructure cost. +Today, the default scheduler on AKS lacks the flexibility for users to change which criteria should be prioritized, or ignored, in the scheduling cycle because the default scheduler is not accessible to users. This rigidity often forces users to either accept suboptimal placement or manage a separate custom scheduler, both of which increase operational complexity. Starting with Kubernetes v1.33, AKS introduces [Configurable Scheduler Profiles][concepts-scheduler-configuration] - an AKS-managed CRD - that exposes the upstream scheduling framework without maintaining a separate scheduler. Now, users can adjust the `NodeResourcesFit` plugin from the default configuration to favor nodes with higher utilization to achieve more efficient bin‑packing and reduce infrastructure cost. ## Configurable Scheduler Profiles on AKS -[Configurable Scheduler Profiles on AKS][concepts-scheduler-configuration] let you benefit from the extensibility of the [scheduling framework][scheduling-framework-interfaces] while reducing the operational overhead of adopting a second scheduler or defining a custom scheduler. +[Configurable Scheduler Profiles on AKS][concepts-scheduler-configuration] allows users to change the default scheduler behavior using the extensibility of the [scheduling framework][scheduling-framework-interfaces], without the operational overhead of adopting a second scheduler or defining a custom scheduler. You express the intent declaratively, while AKS safely applies and manages the resulting scheduler behavior using a Custom Resource Definition (CRD). -Configurable Scheduler Profiles use a Custom Resource Definition (CRD) that lets you define custom scheduler profiles with their own scheduling logic. A dedicated controller continuously reconciles these user-defined configurations with the underlying kube-scheduler deployment, validating changes and applying them transparently. If a new configuration causes the scheduler to become unhealthy, the controller automatically reverts to the last known good state to ensure cluster stability. +1. AKS begins with the default scheduling configuration. +2. You declare your desired scheduling behavior using a Configurable Scheduler Profile applied as a CRD. +3. The controller overlays the user-defined configuration on top of the base scheduler configuration. +4. The controller produces and maintains a reconciled scheduler ConfigMap representing the combined configuration. +5. The kube-scheduler deployment consumes the controller-managed ConfigMap and applies the updated scheduling behavior. +6. If the scheduler becomes unhealthy, the controller automatically rolls back to the last known good configuration. ![Architecture diagram showing how Configurable Scheduler Profiles use a CRD and controller to reconcile user-defined profiles with the kube-scheduler deployment](./config-scheduler-profiles.png) @@ -69,7 +74,7 @@ While this experiment uses intentionally simple, CPU-bound containers to isolate ![Table showing increased node utilization with the node bin packing scheduler profiles versus the pod distribution using the default scheduler for GPUs across multiple scheduling iterations](./default-config-scheduler-comparison-gpu.png) -This change in distribution shape enables downstream efficiencies: improved control for platform engineers, efficient resource usage, and cost optimization that are difficult to achieve when pods are evenly spread. **Each profile expresses a distinct scheduling intent. The next two sections detail how the scoring strategies, MostAllocated and RequestedToCapacityRatio, achieve these outcomes.** +This change in distribution shape enables downstream efficiencies: improved control for platform engineers, efficient resource usage, and cost optimization that are difficult to achieve when pods are evenly spread. **Configurable Scheduler has many use cases and each profile expresses a distinct scheduling intent. The next two sections detail how the scoring strategies, MostAllocated and RequestedToCapacityRatio, are configured to achieve increased utilization outcomes.** | Scheduler | Scoring strategy | Scheduling intent | Operator benefits | | ------------------------------ | -------------------------------------- | ------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | From 1687b82852fe487ddf981199cea569ac0505216f Mon Sep 17 00:00:00 2001 From: colinmixonn <109253437+colinmixonn@users.noreply.github.com> Date: Wed, 8 Apr 2026 11:45:09 -0700 Subject: [PATCH 164/164] Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../2026-04-06-aks-config-scheduler-profiles-preview/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md b/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md index 9cf15a95d..b32fd8e9f 100644 --- a/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md +++ b/website/blog/2026-04-06-aks-config-scheduler-profiles-preview/index.md @@ -49,7 +49,7 @@ Today, the default scheduler on AKS lacks the flexibility for users to change wh ## Configurable Scheduler Profiles on AKS -[Configurable Scheduler Profiles on AKS][concepts-scheduler-configuration] allows users to change the default scheduler behavior using the extensibility of the [scheduling framework][scheduling-framework-interfaces], without the operational overhead of adopting a second scheduler or defining a custom scheduler. You express the intent declaratively, while AKS safely applies and manages the resulting scheduler behavior using a Custom Resource Definition (CRD). +[Configurable Scheduler Profiles on AKS][concepts-scheduler-configuration] allow users to change the default scheduler behavior using the extensibility of the [scheduling framework][scheduling-framework-interfaces], without the operational overhead of adopting a second scheduler or defining a custom scheduler. You express the intent declaratively, while AKS safely applies and manages the resulting scheduler behavior using a Custom Resource Definition (CRD). 1. AKS begins with the default scheduling configuration. 2. You declare your desired scheduling behavior using a Configurable Scheduler Profile applied as a CRD.