From e4a670a07425393723013cda1035580881a0f0f5 Mon Sep 17 00:00:00 2001 From: Jonathan Basseri Date: Tue, 29 Jan 2019 13:09:18 -0800 Subject: [PATCH] Revise design of the Scheduling Framework. This updated design reflects discussion & learning from SIG-Scheduling after prototyping the first couple scheduler plugins. It also updates the document to better match the KEP template. --- ...180409-scheduling-framework-extensions.png | Bin 50818 -> 51843 bytes .../20180409-scheduling-framework-threads.png | Bin 44305 -> 38316 bytes .../20180409-scheduling-framework.md | 985 +++++++++++------- 3 files changed, 596 insertions(+), 389 deletions(-) diff --git a/keps/sig-scheduling/20180409-scheduling-framework-extensions.png b/keps/sig-scheduling/20180409-scheduling-framework-extensions.png index 25f50471010cac1ea07f43bcecc9df32772f0ee4..e2c1a2f841e47d4faddd1752bba4af713ddc2e95 100644 GIT binary patch literal 51843 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 literal 50818 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 OpU2YAq>3dB0{$Pe43BC6 diff --git a/keps/sig-scheduling/20180409-scheduling-framework-threads.png b/keps/sig-scheduling/20180409-scheduling-framework-threads.png index ae9e1965d6d75c5f45c9d913658edac6bc4e5cfc..34c2bde759c6c1bd00e911ee2f144d2bc0454e5b 100644 GIT binary patch literal 38316 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 literal 44305 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 + https://github.com/kubernetes/community/blob/master/contributors/design-proposals/scheduling/scheduling-framework.md superseded-by: [] --- - # Scheduling Framework - - -- [SUMMARY ](#summary-) -- [OBJECTIVE](#objective) - - [Terminology](#terminology) -- [BACKGROUND](#background) -- [OVERVIEW](#overview) - - [Non-goals](#non-goals) -- [DETAILED DESIGN](#detailed-design) - - [Bare bones of scheduling](#bare-bones-of-scheduling) - - [Communication and statefulness of plugins](#communication-and-statefulness-of-plugins) - - [Plugin registration](#plugin-registration) - - [Extension points](#extension-points) - - [Scheduling queue sort](#scheduling-queue-sort) - - [Pre-filter](#pre-filter) - - [Filter](#filter) - - [Post-filter](#post-filter) - - [Scoring](#scoring) - - [Post-scoring/pre-reservation](#post-scoringpre-reservation) - - [Reserve](#reserve) - - [Permit](#permit) - - [Approving a Pod binding](#approving-a-pod-binding) - - [Reject](#reject) - - [Pre-Bind](#pre-bind) - - [Bind](#bind) - - [Post Bind](#post-bind) -- [USE-CASES](#use-cases) - - [Dynamic binding of cluster-level resources](#dynamic-binding-of-cluster-level-resources) - - [Gang Scheduling](#gang-scheduling) -- [OUT OF PROCESS PLUGINS](#out-of-process-plugins) -- [CONFIGURING THE SCHEDULING FRAMEWORK](#configuring-the-scheduling-framework) -- [BACKWARD COMPATIBILITY WITH SCHEDULER v1](#backward-compatibility-with-scheduler-v1) -- [DEVELOPMENT PLAN](#development-plan) -- [TESTING PLAN](#testing-plan) -- [WORK ESTIMATES ](#work-estimates) - -# SUMMARY + + +* [SUMMARY](#summary) +* [MOTIVATION](#motivation) + * [Goals](#goals) + * [Non-Goals](#non-goals) +* [PROPOSAL](#proposal) + * [Scheduling Cycle](#scheduling-cycle) + * [Extension points](#extension-points) + * [Queue sort](#queue-sort) + * [Pre-filter](#pre-filter) + * [Filter](#filter) + * [Post-filter](#post-filter) + * [Scoring](#scoring) + * [Normalize scoring](#normalize-scoring) + * [Reserve](#reserve) + * [Permit](#permit) + * [Pre-bind](#pre-bind) + * [Bind](#bind) + * [Post-bind](#post-bind) + * [Un-reserve](#un-reserve) + * [Plugin API](#plugin-api) + * [PluginContext](#plugincontext) + * [PluginHandle](#pluginhandle) + * [Plugin Registration](#plugin-registration) + * [Plugin Lifecycle](#plugin-lifecycle) + * [Initialization](#initialization) + * [Concurrency](#concurrency) + * [Configuring Plugins](#configuring-plugins) + * [Enable/Disable](#enabledisable) + * [Change Evaluation Order](#change-evaluation-order) + * [Optional Args](#optional-args) + * [Backward compatibility](#backward-compatibility) + * [Interactions with Cluster Autoscaler](#interactions-with-cluster-autoscaler) +* [USE CASES](#use-cases) + * [Coscheduling](#coscheduling) + * [Dynamic Resource Binding](#dynamic-resource-binding) + * [Custom Scheduler Plugins (out of tree)](#custom-scheduler-plugins-out-of-tree) +* [GRADUATION CRITERIA](#graduation-criteria) +* [IMPLEMENTATION HISTORY](#implementation-history) + + + +# SUMMARY This document describes the Kubernetes Scheduling Framework. The scheduling -framework implements only basic functionality, but exposes many extension points -for plugins to expand its functionality. The plan is that this framework (with -its plugins) will eventually replace the current Kubernetes scheduler. - -# OBJECTIVE - -- make scheduler more extendable. -- Make scheduler core simpler by moving some of its features to plugins. -- Propose extension points in the framework. -- Propose a mechanism to receive plugin results and continue or abort based - on the received results. -- Propose a mechanism to handle errors and communicate it with plugins. - -## Terminology - -Scheduler v1, current scheduler: refer to existing scheduler of Kubernetes. -Scheduler v2, scheduling framework: refer to the new scheduler proposed in this -doc. - -# BACKGROUND - -Many features are being added to the Kubernetes default scheduler. They keep -making the code larger and logic more complex. A more complex scheduler is -harder to maintain, its bugs are harder to find and fix, and those users running -a custom scheduler have a hard time catching up and integrating new changes. -The current Kubernetes scheduler provides -[webhooks to extend](./scheduler_extender.md) -its functionality. However, these are limited in a few ways: - -1. The number of extension points are limited: "Filter" extenders are called - after default predicate functions. "Prioritize" extenders are called after - default priority functions. "Preempt" extenders are called after running - default preemption mechanism. "Bind" verb of the extenders are used to bind - a Pod. Only one of the extenders can be a binding extender, and that - extender performs binding instead of the scheduler. Extenders cannot be - invoked at other points, for example, they cannot be called before running - predicate functions. -1. Every call to the extenders involves marshaling and unmarshalling JSON. - Calling a webhook (HTTP request) is also slower than calling native functions. -1. It is hard to inform an extender that scheduler has aborted scheduling of - a Pod. For example, if an extender provisions a cluster resource and - scheduler contacts the extender and asks it to provision an instance of the - resource for the Pod being scheduled and then scheduler faces errors - scheduling the Pod and decides to abort the scheduling, it will be hard to - communicate the error with the extender and ask it to undo the provisioning - of the resource. -1. Since current extenders run as a separate process, they cannot use - scheduler's cache. They must either build their own cache from the API - server or process only the information they receive from the default scheduler. +framework is a new set of "plugin" APIs being added to the existing Kubernetes +Scheduler. Plugins are compiled into the scheduler, and these APIs allow many +scheduling features to be implemented as plugins, while keeping the scheduling +"core" simple and maintainable. + +*Note: Previous versions of this document proposed replacing the existing +scheduler with a new implementation.* + +# MOTIVATION + +Many features are being added to the Kubernetes Scheduler. They keep making the +code larger and the logic more complex. A more complex scheduler is harder to +maintain, its bugs are harder to find and fix, and those users running a custom +scheduler have a hard time catching up and integrating new changes. The current +Kubernetes scheduler provides [webhooks to extend][] its functionality. However, +these are limited in a few ways: + +[webhooks to extend]: https://github.com/kubernetes/community/blob/master/contributors/design-proposals/scheduling/scheduler_extender.md + +1. The number of extension points are limited: "Filter" extenders are called + after default predicate functions. "Prioritize" extenders are called after + default priority functions. "Preempt" extenders are called after running + default preemption mechanism. "Bind" verb of the extenders are used to bind + a Pod. Only one of the extenders can be a binding extender, and that + extender performs binding instead of the scheduler. Extenders cannot be + invoked at other points, for example, they cannot be called before running + predicate functions. +1. Every call to the extenders involves marshaling and unmarshalling JSON. + Calling a webhook (HTTP request) is also slower than calling native + functions. +1. It is hard to inform an extender that scheduler has aborted scheduling of a + Pod. For example, if an extender provisions a cluster resource and scheduler + contacts the extender and asks it to provision an instance of the resource + for the pod being scheduled and then scheduler faces errors scheduling the + pod and decides to abort the scheduling, it will be hard to communicate the + error with the extender and ask it to undo the provisioning of the resource. +1. Since current extenders run as a separate process, they cannot use + scheduler's cache. They must either build their own cache from the API + server or process only the information they receive from the default + scheduler. The above limitations hinder building high performance and versatile scheduler -extensions. We would ideally like to have an extension mechanism that is fast -enough to allow keeping a bare minimum logic in the scheduler core and convert -many of the existing features of default scheduler, such as predicate and -priority functions and preemption into plugins. Such plugins will be compiled -with the scheduler. We would also like to provide an extension mechanism that do -not need recompilation of scheduler. The expected performance of such plugins is -lower than in-process plugins. Such out-of-process plugins should be used in -cases where quick invocation of the plugin is not a constraint. - -# OVERVIEW - -Scheduler v2 allows both built-in and out-of-process extenders. This new -architecture is a scheduling framework that exposes several extension points -during a scheduling cycle. Scheduler plugins can register to run at one or more -extension points. - -#### Non-goals - -- We will keep Kubernetes API backward compatibility, but keeping scheduler - v1 backward compatibility is a non-goal. Particularly, scheduling policy - config and v1 extenders won't work in this new framework. -- Solve all the scheduler v1 limitations, although we would like to ensure - that the new framework allows us to address known limitations in the future. -- Provide implementation details of plugins and call-back functions, such as - all of their arguments and return values. - -# DETAILED DESIGN - -## Bare bones of scheduling - -Pods that are not assigned to any node go to a scheduling queue and sorted by -order specified by plugins (described [here](#scheduling-queue-sort)). The -scheduling framework picks the head of the queue and starts a **scheduling -cycle** to schedule the pod. At the end of the cycle scheduler determines -whether the pod is schedulable or not. If the pod is not schedulable, its status -is updated and goes back to the scheduling queue. If the pod is schedulable (one -or more nodes are found that can run the Pod), the scoring process is started. -The scoring process finds the best node to run the Pod. Once the best node is -picked, the scheduler updates its cache and then a bind go routine is started to -bind the pod. -The above process is the same as what Kubernetes scheduler v1 does. Some of the -essential features of scheduler v1, such as leader election, will also be -transferred to the scheduling framework. -In the rest of this section we describe how various plugins are used to enrich -this basic workflow. This document focuses on in-process plugins. -Out-of-process plugins are discussed later in a separate doc. - -## Communication and statefulness of plugins - -The scheduling framework provides a library that plugins can use to pass -information to other plugins. This library keeps a map from keys of type string -to opaque pointers of type interface{}. A write operation takes a key and a -pointer and stores the opaque pointer in the map with the given key. Other -plugins can provide the key and receive the opaque pointer. Multiple plugins can -share the state or communicate via this mechanism. -The saved state is preserved only during a single scheduling cycle. At the end -of a scheduling cycle, this map is destructed. So, plugins cannot keep shared -state across multiple scheduling cycle. They can, however, update the scheduler -cache via the provided interface of the cache. The cache interface allows -limited state preservation across multiple scheduling cycle. -It is worth noting that plugins are assumed to be **trusted**. Scheduler does -not prevent one plugin from accessing or modifying another plugin's state. - -## Plugin registration - -Plugin registration is done by providing an extension point and a function that -should be called at that extension point. This step will be something like: +features. We would ideally like to have an extension mechanism that is fast +enough to allow existing features to be converted into plugins, such as +predicate and priority functions. Such plugins will be compiled into the +scheduler binary. Additionally, authors of custom schedulers can compile a +custom scheduler using (unmodified) scheduler code and their own plugins. -```go -register("pre-filter", plugin.foo) -``` +## Goals + +- Make scheduler more extendable. +- Make scheduler core simpler by moving some of its features to plugins. +- Propose extension points in the framework. +- Propose a mechanism to receive plugin results and continue or abort based on + the received results. +- Propose a mechanism to handle errors and communicate them with plugins. + +## Non-Goals + +- Solve all scheduler limitations, although we would like to ensure that the + new framework allows us to address known limitations in the future. +- Provide implementation details of plugins and call-back functions, such as + all of their arguments and return values. + +# PROPOSAL + +The Scheduling Framework defines new extension points and Go APIs in the +Kubernetes Scheduler for use by "plugins". Plugins add scheduling behaviors to +the scheduler, and are included at compile time. The scheduler's ComponentConfig +will allow plugins to be enabled, disabled, and reordered. Custom schedulers can +write their plugins "[out-of-tree](#custom-scheduler-plugins-out-of-tree)" and +compile a scheduler binary with their own plugins included. -The details of the function signature will be provided later. +## Scheduling Cycle + +The main loop of the scheduler is referred to as a "scheduling cycle". Each +cycle covers the complete process of assigning one pod to a node (or determining +that the pod cannot be scheduled). Multiple scheduling cycles are started +serially, but some parts may run concurrently. (See [Concurrency](#concurrency)) ## Extension points -The following picture shows the scheduling cycle of a Pod and the extension +The following picture shows the scheduling cycle of a pod and the extension points that the scheduling framework exposes. In this picture "Filter" is -equivalent to "Predicate" in scheduler v1 and "Scoring" is equivalent to -"Priority function". Plugins are go functions. They are registered to be called -at one of these extension points. They are called by the framework in the same -order they are registered for each extension point. -In the following sections we describe each extension point in the same order -they are called in a schedule cycle. +equivalent to "Predicate" and "Scoring" is equivalent to "Priority function". +Plugins are registered to be called at one or more of these extension points. In +the following sections we describe each extension point in the same order they +are called in a scheduling cycle. + +One plugin may register at multiple extension points to perform more complex or +stateful tasks. ![image](20180409-scheduling-framework-extensions.png) -### Scheduling queue sort +### Queue sort -These plugins indicate how Pods should be sorted in the scheduling queue. A -plugin registered at this point only returns greater, smaller, or equal to -indicate an ordering between two Pods. In other words, a plugin at this -extension point returns the answer to "less(pod1, pod2)". Multiple plugins may -be registered at this point. Plugins registered at this point are called in -order and the invocation continues as long as plugins return "equal". Once a -plugin returns "greater" or "smaller" the invocation of these plugins are -stopped. +These plugins are used to sort pods in the scheduling queue. A queue sort plugin +essentially will provide a "less(pod1, pod2)" function. Only one queue sort +plugin may be enabled at a time. ### Pre-filter -These plugins are generally useful to check certain conditions that the cluster -or the Pod must meet. These are also useful to perform pre-processing on the pod -and store some information about the pod that can be used by other plugins. -The pod pointer is passed as an argument to these plugins. If any of these -plugins return an error, the scheduling cycle is aborted. -These plugins are called serially in the same order registered. +These plugins are used to pre-process info about the pod, or to check certain +conditions that the cluster or the pod must meet. If a pre-filter plugin returns +an error, the scheduling cycle is aborted. Pre-filter plugins are called +serially within a scheduling cycle. ### Filter -Filter plugins filter out nodes that cannot run the Pod. Scheduler runs these -plugins per node in the same order that they are registered, but scheduler may -run these filter function for multiple nodes in parallel. So, these plugins must -use synchronization when they modify state. -Scheduler stops running the remaining filter functions for a node once one of -these filters fails for the node. +These plugins are used to filter out nodes that cannot run the Pod. For each +node, the scheduler will call filter plugins in their configured order. If any +filter plugin marks the node as infeasible, the remaining plugins will not be +called for that node. Nodes may be evaluated concurrently. ### Post-filter -The Pod and the set of nodes that can run the Pod are passed to these plugins. -They are called whether Pod is schedulable or not (whether the set of nodes is -empty or non-empty). -If any of these plugins return an error or if the Pod is determined -unschedulable, the scheduling cycle is aborted. -These plugins are called serially. +This is an informational extension point. Plugins can will be called with a list +of nodes that passed the filtering phase. A plugin may use this data to update +internal state or to generate logs/metrics. + +**Note:** Plugins wishing to perform "pre-scoring" work should use the +post-filter extension point. ### Scoring -These plugins are similar to priority function in scheduler v1. They are -utilized to rank nodes that have passed the filtering stage. Similar to Filter -plugins, these are called per node serially in the same order registered, but -scheduler may run them for multiple nodes in parallel. -Each one of these functions return a score for the given node. The score is -multiplied by the weight of the function and aggregated with the result of other -scoring functions to yield a total score for the node. -These functions can never block scheduling. In case of an error they should -return zero for the Node being ranked. +These plugins are used to rank nodes that have passed the filtering phase. The +scheduler will call each scoring plugin for each node. There will be a well +defined range of integers representing the minimum and maximum scores. After the +[normalize scoring](#normalize-scoring) phase, the scheduler will combine node +scores from all plugins according to the configured plugin weights. -### Post-scoring/pre-reservation +If a scoring plugin returns an error, the scheduler will treat it as a zero +score. -After all scoring plugins are invoked and the score of nodes are determined, the -framework picks the best node with the highest score and then it calls -post-scoring plugins. The Pod and the chosen Node are passed to these plugins. -These plugins have one more chance to check any conditions about the assignment -of the Pod to this Node and reject the node if needed. +### Normalize scoring -![image](20180409-scheduling-framework-threads.png) +These plugins are used to modify scores before the scheduler computes a final +ranking of Nodes. A plugin that registers for this extension point will be +called with the [scoring](#scoring) results from the same plugin. This is called +once per plugin per scheduling cycle. + +For example, suppose a plugin `BlinkingLightScorer` ranks Nodes based on how +many blinking lights they have. + +```go +func ScoreNode(_ *v1.Pod, n *v1.Node) (int, error) { + return getBlinkingLightCount(n) +} +``` + +However, the maximum count of blinking lights may be small compared to +`NodeScoreMax`. To fix this, `BlinkingLightScorer` should also register for this +extension point. + +```go +func NormalizeScores(scores map[string]int) { + highest := 0 + for _, score := range scores { + highest = max(highest, score) + } + for node, score := range scores { + scores[node] = score*NodeScoreMax/highest + } +} +``` + +If any normalize-scoring plugin returns an error, the scheduling cycle is +aborted. + +**Note:** Plugins wishing to perform "pre-reserve" work should use the +normalize-scoring extension point. ### Reserve -At this point scheduler updates its cache by "reserving" a Node (partially or -fully) for the Pod. In scheduler v1 this stage is called "assume". -At this point, only the scheduler cache is updated to -reflect that the Node is (partially) reserved for the Pod. The scheduling -framework calls plugins registered at this extension points so that they get a -chance to perform cache updates or other accounting activities. These plugins -do not return any value (except errors). +This is an informational extension point. Plugins which maintain runtime state +(aka "stateful plugins") should use this extension point to be notified by the +scheduler when resources on a node are being reserved for a given Pod. This +happens before the scheduler actually binds the pod to the Node, and it exists +to prevent race conditions while the scheduler waits for the bind to succeed. + +Once a pod is in the reserved state, it will either trigger +[Un-reserve](#un-reserve) plugins (on failure) or [Post-bind](#post-bind) +plugins (on success). -The actual assignment of the Node to the Pod happens during the "Bind" phase. -That is when the API server updates the Pod object with the Node information. +*Note: This concept used to be referred to as "assume".* ### Permit -Permit plugins run in a separate go routine (in parallel). Each plugin can return -one of the three possible values: 1) "permit", 2) "deny", or 3) "wait". If all -plugins registered at this extension point return "permit", the pod is sent to -the next step for binding. If any of the plugins returns "deny", the pod is -rejected and sent back to the scheduling queue. If any of the plugins returns -"wait", the Pod is kept in reserved state until it is explicitly approved for -binding. A plugin that returns "wait" must return a "timeout" as well. If the -timeout expires, the pod is rejected and goes back to the scheduling queue. +These plugins are used to prevent or delay the binding of a Pod. A permit plugin +can do one of three things. -#### Approving a Pod binding +1. **approve** \ + Once all permit plugins approve a pod, it is sent for binding. -While any plugin can receive the list of reserved Pod from the cache and approve -them, we expect only the "Permit" plugins to approve binding of reserved Pods -that are in "waiting" state. Once a Pod is approved, it is sent to the Bind -stage. +1. **deny** \ + If any permit plugin denies a pod, it is returned to the scheduling queue. + This will trigger [Un-reserve](#un-reserve) plugins. -### Reject +1. **wait** (with a timeout) \ + If a permit plugin returns "wait", then the pod is kept in the permit phase + until a [plugin approves it](#pluginhandle). If a timeout occurs, **wait** + becomes **deny** and the pod is returned to the scheduling queue, triggering + [un-reserve](#un-reserve) plugins. -Plugins called at "Permit" may perform some operations that should be undone if -the Pod reservation fails. The "Reject" extension point allows such clean-up -operations to happen. Plugins registered at this point are called if the -reservation of the Pod is cancelled. The reservation is cancelled if any of the -"Permit" plugins returns "reject" or if a Pod reservation, which is in "wait" -state, times out. +**Approving a pod binding** -### Pre-Bind +While any plugin can receive the list of reserved pod from the cache and approve +them (see [`PluginHandle`](#pluginhandle)) we expect only the permit plugins to +approve binding of reserved Pods that are in "waiting" state. Once a pod is +approved, it is sent to the pre-bind phase. -When a Pod is approved for binding it reaches to this stage. These plugins run -before the actual binding of the Pod to a Node happens. The binding starts only -if all of these plugins return true. If any returns false, the Pod is rejected -and sent back to the scheduling queue. These plugins run in a separate go -routine. The same go routine runs "Bind" after these plugins when all of them -return true. +### Pre-bind + +These plugins are used to perform any work required before a pod is bound. For +example, a pre-bind plugin may provision a network volume and mount it on the +target node before allowing the pod to run there. + +If any pre-bind plugin returns an error, the pod is [rejected](#un-reserve) and +returned to the scheduling queue. ### Bind -Once all pre-bind plugins return true, the Bind plugins are executed. Multiple -plugins may be registered at this extension point. Each plugin may return true -or false (or an error). If a plugin returns false, the next plugin will be -called until a plugin returns true. Once a true is returned **the remaining -plugins are skipped**. If any of the plugins returns an error or all of them -return false, the Pod is rejected and sent back to the scheduling queue. - -### Post Bind - -The Post Bind plugins can be useful for housekeeping after a pod is scheduled. -These plugins do not return any value and are not expected to influence the -scheduling decision made in the scheduling cycle. - -### Informer Events - -The scheduling framework, similar to Scheduler v1, will have informers that let -the framework keep its copy of the state of the cluster up-to-date. The -informers generate events, such as "PodAdd", "PodUpdate", "PodDelete", etc. The -framework allows plugins to register their own handlers for any of these events. -The handlers allow plugins with internal state or caches to keep their state -updated. - -# USE-CASES - -In this section we provide a couple of examples on how the scheduling framework -can be used to solve common scheduling scenarios. - -### Dynamic binding of cluster-level resources - -Cluster level resources are resources which are not immediately available on -nodes at the time of scheduling Pods. Scheduler needs to ensure that such -cluster level resources are bound to a chosen Node before it can schedule a Pod -that requires such resources to the Node. We refer to this type of binding of -resources to Nodes at the time of scheduling Pods as dynamic resource binding. -Dynamic resource binding has proven to be a challenge in Scheduler v1, because -Scheduler v1 is not flexible enough to support various types of plugins at -different phases of scheduling. As a result, binding of storage volumes is -integrated in the scheduler code and some non-trivial changes are done to the -scheduler extender to support dynamic binding of network GPUs. -The scheduling framework allows such dynamic bindings in a cleaner way. The main -thread of scheduling framework process a pending Pod that requests a network -resource and finds a node for the Pod and reserves the Pod. A dynamic resource -binder plugin installed at "Pre-Bind" stage is invoked (in a separate thread). -It analyzes the Pod and when detects that the Pod needs dynamic binding of the -resource, the plugin tries to attach the cluster resource to the chosen node and -then returns true so that the Pod can be bound. If the resource attachment -fails, it returns false and the Pod will be retried. -When there are multiple of such network resources, each one of them installs one -"pre-bind" plugin. Each plugin looks at the Pod and if the Pod is not requesting -the resource that they are interested in, they simply return "true" for the -pod. - -### Gang Scheduling - -Gang scheduling allows a certain number of Pods to be scheduled simultaneously. -If all the members of the gang cannot be scheduled at the same time, none of -them should be scheduled. Gang scheduling may have various other features as -well, but in this context we are interested in simultaneous scheduling of Pods. -Gang scheduling in the scheduling framework can be done with an "Permit" plugin. -The main scheduling thread processes pods one by one and reserves nodes for -them. The gang scheduling plugin at the Permit stage is invoked for each pod. -When it finds that the pod belongs to a gang, it checks the properties of the -gang. If there are not enough members of the gang which are scheduled or in -"wait" state, the plugin returns "wait". When the number reaches the desired -value, all the Pods in wait state are approved and sent for binding. - -# OUT OF PROCESS PLUGINS - -Out of process plugins (OOPP) are called via JSON over an HTTP interface. In -other words, the scheduler will support webhooks at most (maybe all) of the -extension points. Data sent to an OOPP must be marshalled to JSON and data -received must be unmarshalled. So, calling an OOPP is significantly slower than -in-process plugins. -We do not plan to build OOPPs in the first version of the scheduling framework. -So, more details on them is to be determined. - - -# DEVELOPMENT PLAN - -Earlier, we wanted to develop the scheduling framework as an independent project -from scheduler V1. However, that would need much engineering resources. -It would also be more difficult to roll out a new and not fully-backward -compatible scheduler in Kubernetes where tens of thousands of users depend on -the behavior of the scheduler. -After revisiting the ideas and challenges, we changed our plan and have decided -to build some of the ideas of the scheduling framework into Scheduler V1 to make -it more extendable. - -As the first step, we would like to build: - 1. [Pre-bind](#pre-bind) and [Reserve](#reserve) plugin points. These will - help us move our existing cluster resource binding code, such as persistent - volume binding, to plugins. - 1. We will also build - [the plugin communication mechanism](#communication-and-statefulness-of-plugins). - This will allow us to build more sophisticated plugins that would require - communication and also help us clean up existing scheduler's code by removing - existing transient cache data. - -More features of the framework can be added to the Scheduler in the future based -on the requirements. - - -# CONFIGURING THE SCHEDULING FRAMEWORK - -TBD - -# BACKWARD COMPATIBILITY WITH SCHEDULER v1 - -We will build a new set of plugins for scheduler v2 to ensure that the existing -behavior of scheduler v1 in placing Pods on nodes is preserved. This includes -building plugins that replicate default predicate and priority functions of -scheduler v1 and its binding mechanism, but scheduler extenders built for -scheduler v1 won't be compatible with scheduler v2. Also, predicate and priority -functions which are not enabled by default (such as service affinity) are not -guaranteed to exist in scheduler v2. - -# DEVELOPMENT PLAN - -We will develop the scheduling framework as an incubator project in SIG -scheduling. It will be built in a separate code-base independently from -scheduler v1, but we will probably use a lot of code from scheduler v1. - -# TESTING PLAN - -We will add unit-tests as we build functionalities of the scheduling framework. -The scheduling framework should eventually be able to pass integration and e2e -tests of scheduler v1, excluding those tests that involve scheduler extensions. -The e2e and integration tests may need to be modified slightly as the -initialization and configuration of the scheduling framework will be different -than scheduler v1. - -# WORK ESTIMATES - -We expect to see an early version of the scheduling framework in two release -cycles (end of 2018). If things go well, we will start offering it as an -alternative to the scheduler v1 by the end of Q1 2019 and start the deprecation -of scheduler v1. We will make it the default scheduler of Kubernetes in Q2 2019, -but we will keep the option of using scheduler v1 for at least two more release -cycles. - +These plugins are used to bind a pod to a Node. Bind plugins will not be called +until all pre-bind plugins. Each bind plugin is called in the configured order. +A bind plugin may choose whether or not to handle the given Pod. If a bind +plugin chooses to handle a Pod, **the remaining bind plugins are skipped**. + +### Post-bind + +This is an informational extension point. Post-bind plugins are called after a +pod is successfully bound. This is the end of a scheduling cycle, and can be +used to clean up associated resources. + +### Un-reserve + +This is an informational extension point. If a pod was reserved and then +rejected in a later phase, then un-reserve plugins will be notified. Un-reserve +plugins should clean up state associated with the reserved Pod. + +Plugins that use this extension point usually should also use +[Reserve](#reserve). + +## Plugin API + +There are two steps to the plugin API. First, plugins must register and get +configured, then they use the extension point interfaces. Extension point +interfaces have the following form. + +```go +type Plugin interface { + Name() string +} + +type QueueSortPlugin interface { + Plugin + Less(*v1.Pod, *v1.Pod) bool +} + +type PreFilterPlugin interface { + Plugin + PreFilter(PluginContext, *v1.Pod) error +} + +// ... +``` + +### PluginContext + +Most* plugin functions will be called with a `PluginContext` argument. A +`PluginContext` represents the current scheduling cycle. + +A `PluginContext` provides read-only APIs for accessing the scheduler's cache of +cluster state. This is the preferred way for plugins to iterate over nodes, +iterate over pods on one node, check available resources, and other tasks. The +scheduler will provide a consistent view of the cluster through these APIs, even +if the data is a little stale. Since two scheduling cycles can overlap in time, +plugins should not assume that they will see the same data from two different +`PluginContext`s. + +The `PluginContext` also provides an API similar to +[`context.WithValue`](https://godoc.org/context#WithValue) that can be used to +pass data between plugins at different extension points. Multiple plugins can +share the state or communicate via this mechanism. The state is preserved only +during a single scheduling cycle. It is worth noting that plugins are assumed to +be **trusted**. The scheduler does not prevent one plugin from accessing or +modifying another plugin's state. + +\* *The only exception is for [queue sort](#queue-sort) plugins.* + +**WARNING**: The data available through a `PluginContext` is not valid after a +scheduling cycle ends, and plugins should not hold references to that data +longer than necessary. + +### PluginHandle + +While the `PluginContext` provides APIs relevant to a single scheduling cycle, +the `PluginHandle` provides APIs relevant to the lifetime of a plugin. +Specifically, `PluginHandle` provides a client (`kubernetes.Interface`) and +`SharedInformerFactory`. The handle will also provide APIs to list and approve +or reject [waiting pods](#permit). + +**WARNING**: `PluginHandle` provides access to both the kubernetes API server +and the scheduler's internal cache. The two are **not guaranteed to be in sync** +and extreme care should be taken when writing a plugin that uses data from both +of them. + +Providing plugins access to the API server is necessary to implement useful +features, especially when those features consume object types that the scheduler +does not normally consider. Providing a `SharedInformerFactory` allows plugins +to share caches safely. + +### Plugin Registration + +Each plugin must define a constructor and add it to the hard-coded registry. For +more information about constructor args, see [Optional Args](#optional-args). + +Example: + +```go +type PluginFactory = func(json.RawMessage, PluginHandle) (Plugin, error) + +type Registry map[string]PluginFactory + +func NewRegistry() Registry { + return Registry{ + fooplugin.Name: fooplugin.New, + barplugin.Name: barplugin.New, + // New plugins are registered here. + } +} +``` + +It is also possible to add plugins to a `Registry` object and inject that into a +scheduler. See [Custom Scheduler Plugins](#custom-scheduler-plugins-out-of-tree) + +## Plugin Lifecycle + +### Initialization + +There are two steps to plugin initialization. First, +[plugins are registered](#plugin-registration). Second, the scheduler uses its +configuration to decide which plugins to instantiate. If a plugin registers for +multiple extension points, *it is instantiated only once*. + +When a plugin is instantiated, it is passed [config args](#optional-args) and a +[`PluginHandle`](#pluginhandle). + +### Concurrency + +There are two types of concurrency that plugin writers should consider. A plugin +might be invoked several times concurrently when evaluating multiple nodes, and +a plugin may be called concurrently from *different +[scheduling cycles](#scheduling-cycle)*. + +In the main thread of the scheduler, only one scheduling cycle is processed at a +time. Any extension point up to and including [reserve](#reserve) will be +finished before the next scheduling cycle begins*. After the reserve phase, the +[permit](#permit) and [bind](#bind) phases are executed asynchronously. This +means that a plugin could be called concurrently from two different scheduling +cycles, provided that at least one of the calls is to an extension point after +reserve. Stateful plugins should take care to handle these situations. + +Finally, [un-reserve](#un-reserve) plugins may be called from either the Permit +thread or the Bind thread, depending on how the pod was rejected. + +\* *The queue sort extension point is a special case. It is not part of a +scheduling cycle and may be called concurrently for many pod pairs.* + +![image](20180409-scheduling-framework-threads.png) + +## Configuring Plugins + +The scheduler's component configuration will allow for plugins to be enabled, +disabled, or otherwise configured. Plugin configuration is separated into two +parts. + +1. A list of enabled plugins for each extension point (and the order they + should run in). If one of these lists is omitted, the default list will be + used. +1. An optional set of custom plugin arguments for each plugin. Omitting config + args for a plugin is equivalent to using the default config for that plugin. + +The plugin configuration is organized by extension points. A plugin that +registers with multiple points must be included in each list. + +```go +type KubeSchedulerConfiguration struct { + // ... other fields + Plugins Plugins + PluginConfig []PluginConfig +} + +type Plugins struct { + QueueSort []Plugin + PreFilter []Plugin + Filter []Plugin + PostFilter []Plugin + Score []Plugin + NormalizeScore []Plugin + Reserve []Plugin + Permit []Plugin + PreBind []Plugin + Bind []Plugin + PostBind []Plugin + UnReserve []Plugin +} + +type Plugin struct { + Name string + Weight int // Only valid for Score plugins +} + +type PluginConfig struct { + Name string + Args json.RawMessage +} +``` + +Example: + +```json +{ + "plugins": { + "preFilter": [ + { + "name": "PluginA" + }, + { + "name": "PluginB" + }, + { + "name": "PluginC" + } + ], + "score": [ + { + "name": "PluginA", + "weight": 30 + }, + { + "name": "PluginX" + }, + { + "name": "PluginY" + } + ] + }, + "pluginConfig": [ + { + "name": "PluginX", + "args": { + "favorite_color": "#326CE5", + "favorite_number": 7, + "thanks_to": "thockin" + } + } + ] +} +``` + +### Enable/Disable + +When specified, the list of plugins for a particular extension point are the +only ones enabled. If an extension point is omitted from the config, then the +default set of plugins is used for that extension point. + +### Change Evaluation Order + +When relevant, plugin evaluation order is specified by the order the plugins +appear in the configuration. A plugin that registers for multiple extension +points can have different ordering at each extension point. + +### Optional Args + +Plugins may receive arguments from their config with arbitrary structure. +Because one plugin may appear in multiple extension points, the config is in a +separate list of `PluginConfig`. + +For example, + +```json +{ + "name": "ServiceAffinity", + "args": { + "LabelName": "app", + "LabelValue": "mysql" + } +} +``` + +```go +func NewServiceAffinity(args json.RawMessage, h PluginHandle) (Plugin, error) { + var config struct { + LabelName, LabelValue string + } + if err := json.Unmarshal(args, &config); err != nil { + return nil, errors.Wrap(err, "could not parse args") + } + //... +} +``` + +### Backward compatibility + +The current `KubeSchedulerConfiguration` kind has `apiVersion: +kubescheduler.config.k8s.io/v1alpha1`. This new config format will be either +`v1alpha2` or `v1beta1`. When a newer version of the scheduler parses a +`v1alpha1`, the "policy" section will be used to construct an equivalent plugin +configuration. + +*Note: Moving `KubeSchedulerConfiguration` to `v1` is outside the scope of this +design, but see also +https://github.com/kubernetes/enhancements/blob/master/keps/sig-cluster-lifecycle/0032-create-a-k8s-io-component-repo.md +and https://github.com/kubernetes/community/pull/3008* + +## Interactions with Cluster Autoscaler + +TODO + +# USE CASES + +These are just a few examples of how the scheduling framework can be used. + +## Coscheduling + +Functionality similar to +[kube-batch](https://github.com/kubernetes-sigs/kube-batch) (sometimes called +"gang scheduling") could be implemented as a plugin. For pods in a batch, the +plugin would "accumulate" pods in the [permit](#permit) phase by using the +"wait" option. Because the permit stage happens after [reserve](#reserve), +subsequent pods will be scheduled as if the waiting pod is using those +resources. Once enough pods from the batch are waiting, they can all be +approved. + +## Dynamic Resource Binding + +[Topology-Aware Volume Provisioning](https://kubernetes.io/blog/2018/10/11/topology-aware-volume-provisioning-in-kubernetes/) +can be (re)implemented as a plugin that registers for [filter](#filter) and +[pre-bind](#pre-bind) extension points. At the filtering phase, the plugin can +ensure that the pod will be scheduled in a zone which is capable of provisioning +the desired volume. Then at the pre-bind phase, the plugin can provision the +volume before letting scheduler bind the pod. + +## Custom Scheduler Plugins (out of tree) + +The scheduling framework allows people to write custom, performant scheduler +features without forking the scheduler's code. To accomplish this, developers +just need to write their own `main()` wrapper around the scheduler. Because +plugins must be compiled with the scheduler, writing a wrapper around `main()` +is necessary in order to avoid modifying code in `vendor/k8s.io/kubernetes`. + +```go +import ( + "k8s.io/kubernetes/pkg/scheduler/plugins" + scheduler "k8s.io/kubernetes/cmd/kube-scheduler/app" +) + +func main() { + registry := plugins.NewRegistry() + registry.Add("MyPlugin", NewMyPlugin) + scheduler.Main(registry) +} +``` + +*Note: The above code is an example, and might not match the implemented API.* + +The custom plugin would be enabled in the scheduler config. + +```json +{ + "name": "MyPlugin" +} +``` + +# GRADUATION CRITERIA + +TODO + +# IMPLEMENTATION HISTORY + +TODO: write down milestones and target releases, and a plan for how we will +gracefully move to the new system + + + + + + +