如何理解kubernetes scheduler架构设计

2023-04-14 00:16:00 架构 设计 理解

Kubernetes scheduler是Kubernetes中的一个核心组件,它负责将Pod分配到Node节点上。它的设计目标是尽可能有效地使用集群中的资源,同时尽可能避免资源竞争。

Scheduler的工作原理是:当一个Pod被创建时,Scheduler会接收到一个event,然后开始寻找一个合适的Node节点来运行这个Pod。为了找到合适的Node节点,Scheduler会使用一系列的策略和过滤器来对Node节点进行评估。最终,Scheduler会选择一个合适的Node节点来运行Pod,并将Pod的状态设置为“Running”。

Scheduler的设计目标之一是尽可能避免资源竞争,因此它会评估每个Node节点上运行的Pod,并试图避免将新的Pod分配到那些已经使用较多资源的Node节点上。另一个设计目标是尽可能有效地使用集群中的资源,因此它会评估每个Node节点上可用的资源,并试图将新的Pod分配到那些资源较为充足的Node节点上。

为了评估Node节点,Scheduler使用一系列的策略和过滤器。策略是用于评估Node节点的函数,过滤器是用于排除不符合要求的Node节点的函数。策略和过滤器都可以自定义,因此用户可以根据自己的需要来调整Scheduler的行为。

除了使用策略和过滤器来评估Node节点之外,Scheduler还会考虑Pod的要求。例如,一个Pod可能会指定它希望运行在特定的Node节点上,或者希望运行在具有特定资源的Node节点上。这些要求会作为约束条件,在Scheduler选择Node节点的过程中起到重要作用。

最后,Scheduler会选择一个合适的Node节点来运行Pod,并将Pod的状态设置为“Running”。如果没有找到合适的Node节点,则Pod会一直处于“Pending”状态,等待Scheduler的再次尝试。

相关文章