[Umbrella] Decouple QoS Resource Manager (QRM) from kubelet
caohe opened this issue · comments
Why is this needed?
Currently, Katalyst injects resource management policies through a framework inside kubelet named QoS Resource Manager (QRM). Among various feasible solutions, the QRM solution has the most complete functions and the most reasonable design.
However, some users may find it inconvenient to use in conjunction with the KubeWharf K8s distro, so we plan to provide a solution decoupled from kubelet, which will serve as a supplement to the QRM solution and allow users to choose as needed according to their own situation.
What would you like to be added?
Add an out-of-band resource manager (ORM) module in Katalyst Agent, which includes:
- Through the asynchronous update path, ORM injects resource management strategies to a container after it starts, and dynamically adjust the resource allocation of a container when it is running. #406
- Through the NRI path, ORM injects resource management strategies synchronously when a container is created. #488, #525
- Implement an out-of-band Topology Manager, as we can no longer reuse the NUMA alignment capability provided by the native Topology Manager of kubelet. #435
- Implement an out-of-band PodResources server, because the CPU and memory information returned by the native PodResources API of kubelet is not correct. #453
- Adapt the reporter plugin that reports topology information so that it can use the out-of-band PodResources API. #453
The detailed design can be found in this doc.