Kubernetes的Scheduler是如何工作的

云计算 云原生
Scheduler不会立即将Pod调度到一个节点上,而是会将Pod调度到一个未绑定(unbound)状态(如果一个Pod是unbound状态,那么它的状态将被列为"Pending")。这样,kubelet就可以在后续的时间里为该Pod绑定一个节点。

Kubernetes的scheduler是一个独立的组件,它负责监视集群中新建的未调度的Pod,根据预定义的调度策略和集群资源的可用性,选择最佳的节点进行调度。

Scheduler不会立即将Pod调度到一个节点上,而是会将Pod调度到一个未绑定(unbound)状态(如果一个Pod是unbound状态,那么它的状态将被列为"Pending")。这样,kubelet就可以在后续的时间里为该Pod绑定一个节点。

下面是Kubernetes Scheduler的工作流程:

  1. 监听API Server:Kubernetes Scheduler监听API Server的调度事件,包括新建的未调度的Pod以及已调度但未运行的Pod。
  2. 获取调度信息:Scheduler通过API Server获取未调度的Pod的调度信息,包括Pod的资源需求和节点亲和性/反亲和性约束等信息。
  3. 选择节点:Scheduler使用调度算法根据节点资源的可用性和约束条件,选择最佳的节点进行调度。调度算法通常考虑节点资源的负载情况、节点和Pod的亲和性/反亲和性约束等因素。具体如下:

Scheduler的工作可以分为三个阶段:预选(preemption)、优选(prioritization)和选择(selection)。

  • 预选阶段

在预选阶段,Scheduler会对当前集群中所有的节点进行评分,计算每个节点可以分配给待调度的Pod的资源是否足够。如果某个节点的资源不足以满足Pod的需求,那么Scheduler会尝试从该节点上迁移一些低优先级的Pod,以便为高优先级的Pod腾出足够的资源。

  • 优选阶段

在预选阶段完成之后,Scheduler会对所有可用的节点进行优选,选出最适合待调度的Pod的节点。在这个阶段,Scheduler会为每个节点计算一个优先级值,优先级值越高的节点越有可能被选中。优选的算法可以由用户自定义,Kubernetes提供了一些默认的算法。

  • 选择阶段

在优选阶段完成之后,Scheduler会将Pod绑定到被选中的节点上,完成Pod的调度工作。如果调度失败,Scheduler会继续尝试调度,直到成功为止。

总体来说,Scheduler的工作流程可以用以下几个步骤概括:

  • 获取所有待调度的Pod
  • 针对每个Pod进行预选操作,以确定是否需要迁移其他Pod来释放资源
  • 针对每个Pod进行优选操作,以确定最适合的节点
  • 将Pod绑定到被选中的节点上

4.更新Pod状态:Scheduler将调度好的Pod的信息更新到API Server中,同时将Pod的调度信息发送到kubelet,让kubelet启动Pod所在的容器。

Kubernetes的Scheduler是一个高度可扩展的系统,用户可以自定义调度算法和插件来满足自己的需求。

责任编辑:武晓燕 来源: 今日头条
相关推荐

2021-02-26 14:40:16

Kubernetes调度器

2023-03-03 11:12:34

Kubernetes控制器后端

2017-08-23 11:10:44

Kubernetes 调度详解

2021-05-10 17:20:55

AIOps开发人员人工智能

2011-08-08 13:45:58

jQuery

2023-11-29 09:29:48

Kuberneteskube

2010-08-02 16:56:03

ICMP协议

2023-04-18 14:53:48

2023-04-18 15:09:50

2021-08-03 14:29:30

ARPANET互联网协议TCP

2017-11-17 09:13:31

Java注解

2022-09-16 00:11:45

PyTorch神经网络存储

2022-08-12 07:00:00

NFC安全性RFID

2022-02-11 10:27:28

面部识别算法人工智能

2023-11-24 17:20:41

无人机无人驾驶飞行器

2020-09-11 08:41:50

域名系统DNS网络

2023-03-21 10:20:20

2018-12-14 08:00:00

2022-05-18 08:00:00

JavaScriptFetch数据

2024-02-22 08:00:00

SoraOpenAI
点赞
收藏

51CTO技术栈公众号