Skip to content
Open
Show file tree
Hide file tree
Changes from 21 commits
Commits
Show all changes
165 commits
Select commit Hold shift + click to select a range
7694b8b
Add blog post on AKS Configurable Scheduler Profiles
colinmixonn Dec 10, 2025
8103dda
Add Scheduler tag to blog tags configuration
colinmixonn Dec 10, 2025
6c035be
Update index.md
colinmixonn Dec 10, 2025
4d7a3cc
Fix typos in AKS configuration blog post
colinmixonn Dec 10, 2025
0b3b6b9
Revise AKS Configurable Scheduler Profiles blog post
colinmixonn Dec 10, 2025
4fd375d
Fix typos and enhance clarity in AKS blog post
colinmixonn Dec 10, 2025
5d34e50
Fix links and typos in AKS Configurable Scheduler blog
colinmixonn Dec 11, 2025
0760340
Clarify objectives and improve section titles in blog
colinmixonn Dec 11, 2025
92ff663
Enhance clarity in AKS Configurable Scheduler blog
colinmixonn Dec 11, 2025
ef5c000
Update index.md
colinmixonn Dec 11, 2025
a488c12
Update website/blog/2025-12-16-aks-config-scheduler-profiles-preview/…
colinmixonn Dec 11, 2025
3999b23
Update website/blog/2025-12-16-aks-config-scheduler-profiles-preview/…
colinmixonn Dec 11, 2025
37ced5b
Update website/blog/2025-12-16-aks-config-scheduler-profiles-preview/…
colinmixonn Dec 11, 2025
ef30f6e
Update website/blog/2025-12-16-aks-config-scheduler-profiles-preview/…
colinmixonn Dec 11, 2025
4dd4ee0
Update website/blog/2025-12-16-aks-config-scheduler-profiles-preview/…
colinmixonn Dec 11, 2025
0cf3a81
Update website/blog/tags.yml
colinmixonn Dec 11, 2025
4aa8cb9
Refactor author and tags in blog post metadata
colinmixonn Dec 11, 2025
0b458e9
Update website/blog/2025-12-16-aks-config-scheduler-profiles-preview/…
colinmixonn Dec 11, 2025
2bfef0a
Fix typo in blog title for AKS Scheduler Profiles
colinmixonn Dec 11, 2025
581a58a
Update website/blog/2025-12-16-aks-config-scheduler-profiles-preview/…
colinmixonn Dec 11, 2025
92f516b
Fix typo in blog title for AKS Scheduler Profiles
colinmixonn Dec 11, 2025
2330ca1
Apply suggestions from code review
colinmixonn Dec 12, 2025
14b044a
Apply suggestions from code review
colinmixonn Dec 12, 2025
434d7f7
Apply suggestions from code review
colinmixonn Dec 12, 2025
7b8d9f8
Update links in AKS Config Scheduler blog post
colinmixonn Dec 12, 2025
7b813e2
Apply suggestions from code review
colinmixonn Dec 12, 2025
c818203
Revise blog on AKS Configurable Scheduler Profiles
colinmixonn Dec 12, 2025
cae9282
Revise AKS Configurable Scheduler Profiles section
colinmixonn Dec 12, 2025
f824195
Fix typo in AKS Configurable Scheduler Profiles description
colinmixonn Dec 12, 2025
80fafbc
Enhance AKS Configurable Scheduler Profiles blog content
colinmixonn Dec 12, 2025
df42499
Enhance GPU utilization explanation in AKS scheduler docs
colinmixonn Dec 12, 2025
aedfcc4
Correct typo in best practices
colinmixonn Dec 15, 2025
ab2dcc1
Apply suggestions from code review
colinmixonn Dec 15, 2025
065d1b4
Apply suggestions from code review
colinmixonn Dec 15, 2025
63821dd
Update website/blog/2025-12-16-aks-config-scheduler-profiles-preview/…
sabbour Jan 23, 2026
2d0f775
Update website/blog/2025-12-16-aks-config-scheduler-profiles-preview/…
sabbour Jan 23, 2026
6f08f29
Update website/blog/2025-12-16-aks-config-scheduler-profiles-preview/…
sabbour Jan 23, 2026
1052ca6
Apply suggestions from code review
colinmixonn Mar 9, 2026
e649e06
Revise AKS configurable scheduler profiles preview
colinmixonn Mar 9, 2026
0b3fd86
Apply suggestions from code review
colinmixonn Mar 9, 2026
6f1a43a
Revise section on AKS Configurable Scheduler Profiles
colinmixonn Mar 10, 2026
6b61379
Remove best practices section from AKS blog post
colinmixonn Mar 10, 2026
7da937d
Refactor authors and tags in blog post metadata
colinmixonn Mar 10, 2026
eed9353
Revise blog content on AKS Configurable Scheduler Profiles
colinmixonn Mar 10, 2026
42db1bd
Update tags for AKS configurable scheduler profiles post
colinmixonn Mar 19, 2026
3befa1d
Add files via upload
colinmixonn Mar 19, 2026
c7aefcc
Add files via upload
colinmixonn Mar 19, 2026
88b7a38
Delete config-scheduler-profiles.png
colinmixonn Mar 19, 2026
0307bac
Add diagram for AKS Configurable Scheduler Profiles
colinmixonn Mar 19, 2026
5f85dd4
Update scheduling strategies description in blog post
colinmixonn Mar 19, 2026
b040176
Enhance introduction with kube-scheduler context
colinmixonn Mar 19, 2026
74a2781
Add files via upload
colinmixonn Mar 19, 2026
443e506
Enhance blog with diagram and scheduler profiles benefits
colinmixonn Mar 19, 2026
50edecd
Apply suggestions from code review
colinmixonn Mar 19, 2026
110c48a
Add cost management tag to blog tags
colinmixonn Mar 19, 2026
c28e170
Revise blog on AKS Configurable Scheduler Profiles
colinmixonn Mar 19, 2026
7033825
Revise AKS Configurable Scheduler Profiles blog content
colinmixonn Mar 19, 2026
506616f
Reorder cost tag in tags.yml
colinmixonn Mar 19, 2026
88b49aa
Apply suggestions from code review
colinmixonn Mar 19, 2026
9fb4796
Enhance AKS Configurable Scheduler Profiles documentation
colinmixonn Mar 20, 2026
76c3a06
Add files via upload
colinmixonn Mar 20, 2026
c3ba574
Delete website/blog/2025-12-16-aks-config-scheduler-profiles-preview/…
colinmixonn Mar 20, 2026
7571b98
Enhance AKS Configurable Scheduler Profiles blog post
colinmixonn Mar 20, 2026
38e7f63
Apply suggestions from code review
colinmixonn Mar 20, 2026
33e2544
Update section titles and improve clarity
colinmixonn Mar 20, 2026
85c0930
Apply suggestions from code review
colinmixonn Mar 20, 2026
be0f84a
Update website/blog/2025-12-16-aks-config-scheduler-profiles-preview/…
colinmixonn Mar 20, 2026
02141bd
Revise title and description for AKS scheduler profiles
colinmixonn Mar 20, 2026
1f0c76d
Fix scoring strategy terminology in AKS blog post
colinmixonn Mar 20, 2026
6c6198b
Revise content for AKS Configurable Scheduler Profiles post
colinmixonn Mar 20, 2026
b92fc5e
Update website/blog/tags.yml
colinmixonn Mar 20, 2026
69cccb9
Apply suggestions from code review
colinmixonn Mar 20, 2026
285aa5c
Add files via upload
colinmixonn Mar 20, 2026
0c4f2d7
Delete website/blog/2025-12-16-aks-config-scheduler-profiles-preview/…
colinmixonn Mar 20, 2026
bb45216
Update index.md
colinmixonn Mar 20, 2026
6279ea9
Delete website/blog/2025-12-16-aks-config-scheduler-profiles-preview/…
colinmixonn Mar 20, 2026
7335a35
Add files via upload
colinmixonn Mar 20, 2026
8675b59
Revise blog on AKS Configurable Scheduler Profiles
colinmixonn Mar 20, 2026
43563ac
Enhance blog on AKS Configurable Scheduler Profiles
colinmixonn Mar 20, 2026
6fbee96
Refactor introduction for clarity and conciseness
colinmixonn Mar 20, 2026
fcd58c0
Refine note on resource weights and scheduling plugins
colinmixonn Mar 20, 2026
17e1348
Update website/blog/2025-12-16-aks-config-scheduler-profiles-preview/…
colinmixonn Mar 20, 2026
8409dc9
Enhance Configurable Scheduler Profiles explanation
colinmixonn Mar 20, 2026
673b0eb
Fix formatting in AKS Configurable Scheduler Profiles blog
colinmixonn Mar 20, 2026
f40a7ac
Improve clarity on AKS Configurable Scheduler Profiles
colinmixonn Mar 20, 2026
3a0d97e
Add files via upload
colinmixonn Mar 20, 2026
54a5271
Enhance blog post with node utilization insights
colinmixonn Mar 20, 2026
1b63997
Delete website/blog/2025-12-16-aks-config-scheduler-profiles-preview/…
colinmixonn Mar 20, 2026
76a885d
Add files via upload
colinmixonn Mar 20, 2026
cb23745
Delete website/blog/2025-12-16-aks-config-scheduler-profiles-preview/…
colinmixonn Mar 20, 2026
41bb1a4
Add files via upload
colinmixonn Mar 20, 2026
852b8f9
Delete website/blog/2025-12-16-aks-config-scheduler-profiles-preview/…
colinmixonn Mar 20, 2026
a1266c9
Add files via upload
colinmixonn Mar 20, 2026
a9fe814
updated publishing dates
colinmixonn Mar 23, 2026
381c3ec
Enhance FAQ section in AKS Config Scheduler Profiles
colinmixonn Mar 23, 2026
91ae368
Fix typos and enhance clarity in AKS blog post
colinmixonn Mar 23, 2026
df220d2
Apply suggestions from code review
colinmixonn Mar 23, 2026
d3915cc
Apply suggestions from code review
colinmixonn Mar 23, 2026
004b930
updated date format in folder and extended description for SEO
colinmixonn Mar 23, 2026
3833ed0
updated config for GPU utilization
colinmixonn Mar 23, 2026
b5735ce
Fix typos and enhance Kubernetes scheduler description
colinmixonn Mar 23, 2026
2594b65
Fix typos in AKS Configurable Scheduler Profiles blog
colinmixonn Mar 23, 2026
4faa6bd
Apply suggestions from code review
colinmixonn Mar 23, 2026
1fc238e
Fix typos and enhance clarity in scheduler documentation
colinmixonn Mar 23, 2026
c7fc105
Apply suggestions from code review
colinmixonn Mar 23, 2026
ecd97de
Delete website/blog/2026-03-31-aks-config-scheduler-profiles-preview/…
colinmixonn Mar 23, 2026
b0a169f
Add files via upload
colinmixonn Mar 23, 2026
025f06d
Enhance blog on AKS Configurable Scheduler Profiles
colinmixonn Mar 23, 2026
323c6a2
Revise FAQ on Configurable Scheduler Profiles and autoscalers
colinmixonn Mar 23, 2026
6f31bb6
Update website/blog/2026-03-31-aks-config-scheduler-profiles-preview/…
colinmixonn Mar 23, 2026
21490f9
Apply suggestions from code review
colinmixonn Mar 23, 2026
274c45c
Revise scheduler profiles and scoring strategy details
colinmixonn Mar 23, 2026
af2fb78
Refine blog content on AKS Configurable Scheduler Profiles
colinmixonn Mar 23, 2026
e747ad8
Apply suggestions from code review
colinmixonn Mar 23, 2026
e15dfee
Revise blog on AKS Configurable Scheduler Profiles
colinmixonn Mar 24, 2026
06f870b
Enhance clarity on AKS scheduling strategies
colinmixonn Mar 24, 2026
3ff5fda
Apply suggestions from code review
colinmixonn Mar 24, 2026
d4863ac
Apply suggestions from code review
colinmixonn Mar 24, 2026
440a7ea
Apply suggestions from code review
colinmixonn Mar 25, 2026
d3674ee
Update blog on Configurable Scheduler Profiles for AKS
colinmixonn Mar 27, 2026
8a9ecb8
Fix formatting and enhance scheduler profile metrics section
colinmixonn Mar 27, 2026
a5d0ca3
Fix links and improve clarity in blog post
colinmixonn Mar 27, 2026
f1320ab
Update blog post links for clarity and accuracy
colinmixonn Mar 27, 2026
a001747
Revise Kubernetes utilization statistics and fix typo
colinmixonn Mar 30, 2026
9f2cee7
Fix typos and enhance introduction clarity
colinmixonn Mar 30, 2026
ea050e9
Fix typos and enhance clarity in AKS blog post
colinmixonn Mar 30, 2026
0caf692
Enhance clarity on AKS GPU utilization strategies
colinmixonn Mar 30, 2026
bf6ed5a
Apply suggestions from code review
colinmixonn Mar 30, 2026
4552ced
Enhance AKS scheduler profiles documentation
colinmixonn Mar 30, 2026
5c54c3b
Refine FAQ and descriptions for Configurable Scheduler Profiles
colinmixonn Mar 30, 2026
3c0bab9
Revise scheduler profiles table and descriptions
colinmixonn Mar 30, 2026
dff3207
Refactor FAQ section in AKS Configurable Scheduler Profiles
colinmixonn Mar 30, 2026
a8debba
Enhance clarity and consistency in AKS scheduler blog
colinmixonn Mar 31, 2026
e3de1dd
Refactor blog post on AKS Configurable Scheduler Profiles
colinmixonn Apr 1, 2026
10dfecc
Apply suggestions from code review
colinmixonn Apr 1, 2026
884a80c
Refine content on kube-scheduler and scheduler profiles
colinmixonn Apr 1, 2026
fca01d2
Apply suggestions from code review
colinmixonn Apr 1, 2026
0cc3c40
Revise scenarios and FAQs for scheduler profiles
colinmixonn Apr 1, 2026
c628491
Revise scheduler profiles section for clarity and detail
colinmixonn Apr 1, 2026
fa1fd6e
Add files via upload
colinmixonn Apr 1, 2026
5b044fc
Delete website/blog/2026-03-31-aks-config-scheduler-profiles-preview/…
colinmixonn Apr 1, 2026
2078541
Add files via upload
colinmixonn Apr 1, 2026
5fc0e0a
Refine explanation of AKS GPU scheduling strategies
colinmixonn Apr 1, 2026
19b1192
Update introduction to emphasize resource utilization
colinmixonn Apr 1, 2026
38b2b51
Apply suggestions from code review
colinmixonn Apr 1, 2026
64c03d2
Enhance clarity and detail in scheduler profiles content
colinmixonn Apr 1, 2026
02fc0c5
updated publishing date
colinmixonn Apr 2, 2026
51b7cbe
Delete website/blog/2026-03-31-aks-config-scheduler-profiles-preview …
colinmixonn Apr 2, 2026
84a6726
Update publication date for AKS Configurable Scheduler Profiles
colinmixonn Apr 2, 2026
79c481d
Apply suggestions from code review
colinmixonn Apr 2, 2026
18ba6fb
Apply suggestions from code review
colinmixonn Apr 2, 2026
840c9fe
Fix formatting in AKS scheduler profiles documentation
colinmixonn Apr 2, 2026
14f98e0
Apply suggestions from code review
colinmixonn Apr 2, 2026
7033113
Add image and FAQ section to AKS Config Scheduler post
colinmixonn Apr 2, 2026
a386b15
Apply suggestions from code review
colinmixonn Apr 2, 2026
baae67f
Apply suggestions from code review
colinmixonn Apr 3, 2026
cb7c8dd
Enhance explanation of AKS GPU scheduling strategies
colinmixonn Apr 3, 2026
d7c28fe
Enhance explanation of Configurable Scheduler Profiles on AKS
colinmixonn Apr 3, 2026
350f6e5
Enhance clarity on AKS scheduling and resource utilization
colinmixonn Apr 3, 2026
8489129
Revise AKS Configurable Scheduler Profiles documentation
colinmixonn Apr 3, 2026
67a24cb
Apply suggestions from code review
colinmixonn Apr 3, 2026
1ce2920
Apply suggestions from code review
colinmixonn Apr 3, 2026
c449ba3
Merge branch 'master' into colinmixonn-patch-4
colinmixonn Apr 3, 2026
40a5a52
Enhance clarity on AKS Configurable Scheduler Profiles
colinmixonn Apr 6, 2026
1687b82
Apply suggestions from code review
colinmixonn Apr 8, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
232 changes: 232 additions & 0 deletions website/blog/2025-12-16-aks-config-scheduler-profiles-preview/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,232 @@
---
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"
Comment thread
colinmixonn marked this conversation as resolved.
Outdated
date: 2025-12-16
Comment thread
colinmixonn marked this conversation as resolved.
Outdated
authors:
- colin-mixon
Comment thread
colinmixonn marked this conversation as resolved.
Outdated
tags:
- ai
- performance
- scheduler
- best-practices
Comment thread
colinmixonn marked this conversation as resolved.
Outdated
---

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):
Comment thread
colinmixonn marked this conversation as resolved.
Outdated

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][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.

Comment thread
colinmixonn marked this conversation as resolved.
Outdated
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)
Comment thread
colinmixonn marked this conversation as resolved.
Outdated
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.

<!-- truncate -->

## AKS Configurable Scheduler Profiles
Comment thread
colinmixonn marked this conversation as resolved.
Outdated

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.
Comment thread
colinmixonn marked this conversation as resolved.
Outdated

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.
Comment thread
colinmixonn marked this conversation as resolved.
Outdated
:::

### 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.
Comment thread
sabbour marked this conversation as resolved.
Outdated
Comment thread
colinmixonn marked this conversation as resolved.
Outdated

**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.**
Comment thread
colinmixonn marked this conversation as resolved.
Outdated

```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
Comment thread
colinmixonn marked this conversation as resolved.
Outdated
```

### Increase reselieince by distributing pods across topology domains
Comment thread
colinmixonn marked this conversation as resolved.
Outdated

`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
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
Comment thread
colinmixonn marked this conversation as resolved.
Outdated
```

### Optimize data locality with Memory and PVC-Aware Scheduling
Comment thread
colinmixonn marked this conversation as resolved.
Outdated

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.
Comment thread
sabbour marked this conversation as resolved.
Outdated
Comment thread
colinmixonn marked this conversation as resolved.
Outdated

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.
Comment thread
colinmixonn marked this conversation as resolved.
Outdated

**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.**
Comment thread
sabbour marked this conversation as resolved.
Outdated
Comment thread
colinmixonn marked this conversation as resolved.
Outdated

```yaml
apiVersion: aks.azure.com/v1alpha1
kind: SchedulerConfiguration
Comment thread
colinmixonn marked this conversation as resolved.
Outdated
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]
Comment thread
colinmixonn marked this conversation as resolved.
Outdated
- 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
Comment thread
colinmixonn marked this conversation as resolved.
Outdated

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.
Comment thread
colinmixonn marked this conversation as resolved.
Outdated
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 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.
Comment thread
colinmixonn marked this conversation as resolved.
Outdated
4. Use namespaces to separate workloads which improves your ability to validate or troubleshoot.
Comment thread
colinmixonn marked this conversation as resolved.
Outdated
5. Assign `priorityClassName` for workloads that should preempt others, this is critical if you use the DefaultPreemption plugin.
Comment thread
colinmixonn marked this conversation as resolved.
Outdated
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.
Comment thread
colinmixonn marked this conversation as resolved.
Outdated
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.
Comment thread
colinmixonn marked this conversation as resolved.
Outdated

Comment thread
colinmixonn marked this conversation as resolved.
Outdated
## 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 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.
Comment thread
colinmixonn marked this conversation as resolved.
Outdated

- 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]
Comment thread
colinmixonn marked this conversation as resolved.
Outdated
- 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
Comment thread
colinmixonn marked this conversation as resolved.
Outdated
[kueue-overview]: https://learn.microsoft.com/en-us/azure/aks/kueue-overview
Comment thread
colinmixonn marked this conversation as resolved.
Outdated
[best-practices-advanced-scheduler]:https://learn.microsoft.com/en-us/azure/aks/operator-best-practices-advanced-scheduler
Comment thread
colinmixonn marked this conversation as resolved.
Outdated
Comment thread
colinmixonn marked this conversation as resolved.
Outdated
[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
Comment thread
colinmixonn marked this conversation as resolved.
Outdated
4 changes: 4 additions & 0 deletions website/blog/tags.yml
Original file line number Diff line number Diff line change
Expand Up @@ -272,6 +272,10 @@ 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
Expand Down