Azure Kubernetes Fleet Manager scheduler and scheduling framework
This article provides a conceptual overview of the scheduler and scheduling framework in Azure Kubernetes Fleet Manager (Fleet).
What is the scheduler?
The scheduler is a core component in the fleet workload with the primary responsibility of determining scheduling decisions for a bundle of resources based on the latest ClusterSchedulingPolicySnapshot
generated by the ClusterResourcePlacement
.
By default, the scheduler operates in batch mode, which enhances performance. In this mode, it binds a ClusterResourceBinding
from a ClusterResourcePlacement
to multiple clusters whenever possible.
Batch mode
Scheduling resources within a ClusterResourcePlacement
involves more dependencies compared to scheduling pods within a Kubernetes Deployment. There are two notable distinctions:
- In a
ClusterResourcePlacement
, multiple replicas of resources can't be scheduled on the same cluster. - The
ClusterResourcePlacement
supports different placement types within a single object.
For more information, see the upstream Fleet Scheduler documentation.
What is the scheduling framework?
The fleet scheduling framework closely aligns with the native Kubernetes scheduling framework, incorporating several modifications and tailored functionalities to support the fleet workload.
The primary advantage of this framework is its capability to compile plugins directly into the scheduler. Its API facilitates the implementation of diverse scheduling features as plugins, ensuring a lightweight and maintainable core.
The fleet scheduler integrates the following fundamental built-in plugins:
- Topology spread plugin: Supports the
TopologySpreadConstraints
in the placement policy. - Cluster affinity plugin: Facilitates the affinity clause in the placement policy.
- Same placement affinity plugin: Designed specifically for fleet and prevents multiple replicas from being placed within the same cluster.
- Cluster eligibility plugin: Enables cluster selection based on specific status criteria.
- Taint & toleration plugin: Enables cluster selection based on taints on the cluster and tolerations on the
ClusterResourcePlacement
.
For more information, see the upstream Fleet Scheduling Framework documentation.