From 3ff8c867f8642075a69c1982ed9321cd449120a7 Mon Sep 17 00:00:00 2001 From: Zhiying Lin Date: Wed, 15 Nov 2023 20:31:26 +0800 Subject: [PATCH] docs: add scheduling-framework.md --- docs/concepts/Scheduler-Framework/README.md | 1 - docs/concepts/Scheduling-Framework/README.md | 54 ++++++++++++++++++ .../scheduling-framework.jpg | Bin 0 -> 71080 bytes 3 files changed, 54 insertions(+), 1 deletion(-) delete mode 100644 docs/concepts/Scheduler-Framework/README.md create mode 100644 docs/concepts/Scheduling-Framework/README.md create mode 100644 docs/concepts/Scheduling-Framework/scheduling-framework.jpg diff --git a/docs/concepts/Scheduler-Framework/README.md b/docs/concepts/Scheduler-Framework/README.md deleted file mode 100644 index ed3e5187d..000000000 --- a/docs/concepts/Scheduler-Framework/README.md +++ /dev/null @@ -1 +0,0 @@ -TBA. \ No newline at end of file diff --git a/docs/concepts/Scheduling-Framework/README.md b/docs/concepts/Scheduling-Framework/README.md new file mode 100644 index 000000000..861e7b04a --- /dev/null +++ b/docs/concepts/Scheduling-Framework/README.md @@ -0,0 +1,54 @@ +# Scheduling Framework + +The fleet scheduling framework closely aligns with the native [Kubernetes scheduling framework](https://kubernetes.io/docs/concepts/scheduling-eviction/scheduling-framework/), +incorporating several modifications and tailored functionalities. + +![](scheduling-framework.jpg) + +The primary advantage of this framework lies in its capability to compile plugins directly into the scheduler. Its API +facilitates the implementation of diverse scheduling features as plugins, thereby ensuring a lightweight and maintainable +core. + +The fleet scheduler integrates three fundamental built-in plugin types: +* **Topology Spread Plugin**: Supports the TopologySpreadConstraints stipulated in the placement policy. +* **Cluster Affinity Plugin**: Facilitates the Affinity clause of the placement policy. +* **Same Placement Affinity Plugin**: Uniquely designed for the fleet, preventing multiple replicas (selected resources) from +being placed within the same cluster. This distinguishes it from Kubernetes, which allows multiple pods on a node. +* **Cluster Eligibility Plugin**: Enables cluster selection based on specific status criteria. + + +Compared to the Kubernetes scheduling framework, the fleet framework introduces additional stages for the pickN placement type: + +* **Batch & PostBatch**: + * Batch: Defines the batch size based on the desired and current `ClusterResourceBinding`. + * PostBatch: Adjusts the batch size as necessary. Unlike the Kubernetes scheduler, which schedules pods individually (batch size = 1). +* **Sort**: + * Fleet's sorting mechanism selects a number of clusters, whereas Kubernetes' scheduler prioritizes nodes with the highest scores. + +To streamline the scheduling framework, certain stages, such as `permit` and `reserve`, have been omitted due to the absence +of corresponding plugins or APIs enabling customers to reserve or permit clusters for specific placements. However, the +framework remains designed for easy extension in the future to accommodate these functionalities. + +## In-tree plugins + +The scheduler includes default plugins, each associated with distinct extension points: + +| Plugin | PostBatch | Filter | Score | +|------------------------------|-----------|--------|-------| +| Cluster Affinity | ❌ | ✅ | ✅ | +| Same Placement Anti-affinity | ❌ | ✅ | ❌ | +| Topology Spread Constraints | ✅ | ✅ | ✅ | +| Cluster Eligibility | ❌ | ✅ | ❌ | + + +The Cluster Affinity Plugin serves as an illustrative example and operates within the following extension points: +1. **PreFilter**: +Verifies whether the policy contains any required cluster affinity terms. If absent, the plugin bypasses the subsequent +Filter stage. +2. **Filter**: +Filters out clusters that fail to meet the specified required cluster affinity terms outlined in the policy. +3. **PreScore**: +Determines if the policy includes any preferred cluster affinity terms. If none are found, this plugin will be skipped +during the Score stage. +4. **Score**: +Assigns affinity scores to clusters based on compliance with the preferred cluster affinity terms stipulated in the policy. diff --git a/docs/concepts/Scheduling-Framework/scheduling-framework.jpg b/docs/concepts/Scheduling-Framework/scheduling-framework.jpg new file mode 100644 index 0000000000000000000000000000000000000000..497eaec9d3210eb08a023dfecfa93ebb991d486d GIT binary patch literal 71080 zcmeFa2RK~o+BZIe=tPg6Xd#FYCF&#u5z&K0jfiMrq6JY#h~9!Ah!Q0_(Yw)!-g}!N zdYMrNWBgb4Is2Tw_u2b8-*>L_z3+Md@19t>mNjdw=Xvh-+|Td6pWFGw`2y(D14U&; z5DpFw=soZcbUqD|2jO10@Z$&g-~m7Qg!uS)c=*Hw1Q!WOiAhOGh)GDu$f+)okyDbB zkX)j>L`h9UOG`^iL4TQ!<}wuxEzOUY;NSw!;NcVD;}g-4k&w~+Uw_UUL6n3SW-jjI z;;@4*P~zZH;+(gF*gzm0e4w{KI{eoU&IO>47YPW7h)IAO$}fQ~;Naq3z{CB~Yv68A z;Cm1rB|gCq=eMq*;gQj?@rlVPIAU?>`|`@_+B#}? zZ~x%%2z`9=V_Y~O+`kO#ZzKE7xF~^fUBJV`#UuDJE}RQ4z=2DNhksS*BGp|@0#kcx zcHy^#G;)!ji<^izZfPNDpE(Q?({YNxxllib_S4Az&j#l6FOBSP1N-~9ra+{)H~{l- zDM4V+nRZ$*59t3dN1;hO>+OgZ2L&^mms8=TuM!bup$penSf2-=sjq}4XFRKrzMJ0$ zpCvyBX(y?)S>X0{)j#IBhC73(8*Yh>7I9b~FXSFM;8*4MetJD}m;D4(>w3`p8ortv z_n|^b)H+;t)8%T-zybJ@cv7KFTm;A2hRU_wf)B5m)Ew?CN~{#b;1;vcD}PR^99 zPzak>Z}d9T=;dcDW;pFjAAYDD`3{9YLW^VllBBR_(1X=;ke~L#{0W`Y&gsE9XuL2t z*lP&dgWYxGnE0o6%4D2_;?LmUSUdR6LBv^2uzmiu`J;_

~YmddkIf&_HPxbiN2% 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 UNN4=KRzI)R|D}C^?(@h01^dL3Y5)KL literal 0 HcmV?d00001