There's a new way to integrate plugins with the scheduling framework using wasm. WASM modules loaded at runtime via URL; it's in-process so no latency or cache issues. WASI-compatible languages (currently only Go).
Ok we're all done.
But wait! In the title of the talk it says something about wasm.... when are we talking about wasm, exactly??
Recall that you can make your pods (or whatever) to use a different/custom scheduler by setting a field in the podspec.
Scheduler extenders became the scheduling framework, which is a set of pluggable APIs that are compiled directly into kube-scheduler -- lots more extension points. There are a number of in-tree plugins that you can use, but if you want to write your own you have to recompile kube-scheduler.
We're writing a scheduler extender demo in Python that does some regex filtering.
Now we are going to talk about how you better control kube-scheduler. Scheduler extenders give you a network webhook to control the scheduler. Imposes higher latency and the extenders can get out of sync with the kube-scheduler caches. You can set extenders at Filter, Preempt, Prioritize, and Bind extension points.
Currently looking at all the scheduling lifecycle hooks. Enqueue -> Filter -> Score -> Bind (skipping a few steps in there).
Today we're going to demystify kube-scheduler and build a plugin!