kubewharf / katalyst-core

Katalyst aims to provide a universal solution to help improve resource utilization and optimize the overall costs in the cloud. This is the core components in Katalyst system, including multiple agents and centralized components

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[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.