kubernetes-sigs / kube-scheduler-wasm-extension

All the things to make the scheduler extendable with wasm.
Apache License 2.0
110 stars 22 forks source link

make it possible to load multiple wasm plugin #23

Closed sanposhiho closed 1 year ago

sanposhiho commented 1 year ago

What would you like to be added:

Currently, the host scheduler has one wasm plugin, and it can load one wasm guest. Meaning, basically people can have only one wasm. It'd be great if users can use multiple wasm guest.

Why is this needed:

Completion requirements:

This enhancement requires the following artifacts:

The artifacts should be linked in subsequent comments.

codefromthecrypt commented 1 year ago

I have a question on this also. In the docs I see the word "plugins" used, I mean in plural. Is there existing ordering concerns with plugins in general, or any collaboration between them now?

I assume this issue is to support multiple guests in one plugin, as opposed to multiple instances of the wasm plugin which I assume would work anyway?

kerthcet commented 1 year ago

Is there existing ordering concerns with plugins in general

Yes, actually scheduler plugins are ordered with the configuration file.

support multiple guests in one plugin, as opposed to multiple instances of the wasm plugin which I assume would work anyway

So the essential question is can we support multi scheduling plugins which implement different extension points, then what's the architecture looks like? Based on my understanding up to now, seems we have to implement different hosts, another approach is we can support the ordering with a new args like wasm-plugin1, wasm-plugin2,... passed to the wasm plugin, and running them sequentially inside, is this possible? But the Cons is we can't order them mixed with kubernetes in-tree plugins.

codefromthecrypt commented 1 year ago

I agree with @kerthcet that nesting plugins inside the wasm plugin has the problem of assuming there's only wasm plugins, or there's no need for native plugins between them. I haven't seen any plugin system yet nest wasm together for reasons like this. So, one thing I think we should do is assess if the first version of this feature really needs to do this or not, as it will add complexity and we are already adding a lot of complexity without any tests.

kerthcet commented 1 year ago

I think we're just discussing here not target for the first release. /priority important-longterm

sanposhiho commented 1 year ago

agree that it's not a priority for now. I think there can be some options and eventually, it's needed to compare them through design doc or something.