加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_开封站长网 (http://www.0378zz.com/)- 科技、AI行业应用、媒体智能、低代码、办公协同!
当前位置: 首页 > 云计算 > 正文

这应该是最全的K8s-Pod调度方案了

发布时间:2022-07-18 12:45:50 所属栏目:云计算 来源:互联网
导读:API Server接受客户端提交Pod对象创建请求后的操作过程中,有一个重要的步骤就是由调度器程序kube-scheduler从当前集群中选择一个可用的最佳节点来接收并运行它,通常是默认的调度器kube-scheduler负责执行此类任务。 Pod调度策略除了系统默认的kube-schedul
  API Server接受客户端提交Pod对象创建请求后的操作过程中,有一个重要的步骤就是由调度器程序kube-scheduler从当前集群中选择一个可用的最佳节点来接收并运行它,通常是默认的调度器kube-scheduler负责执行此类任务。
 
  Pod调度策略除了系统默认的kube-scheduler调度器外还有以下几种实现方式:
 
  1.nodeName(直接指定Node主机名)
 
  2.nodeSelector (节点选择器,为Node打上标签,然后Pod中通过nodeSelector选择打上标签的Node)
 
  3.污点taint与容忍度tolerations
 
  4.NodeAffinity 节点亲和性
 
  5.PodAffinity Pod亲和性
 
  6.PodAntAffinity Pod反亲和性
 
  以下几章节内容主要讲解上面几种调度策略以及kube-scheduler调度器的调度原理。
 
  Pod调度之kube-scheduler
  官方文档:
  https://kubernetes.io/zh/docs/concepts/scheduling-eviction/kube-scheduler/
 
 
  在一个集群中,满足一个Pod调度请求的所有Node称之为可调度节点。如果没有任何一个Node能满足Pod的资源请求,那么这个Pod将一直停留在未调度状态直到调度器能够找到合适的Node。
 
  调度器先在集群中找到一个Pod的所有可调度节点,然后根据一系列函数对这些可调度节点打分,然后选出其中得分最高的Node来运行Pod。之后,调度器将这个调度决定通知给kube-apiserver,这个过程叫做绑定。
 
  在做调度决定是需要考虑的因素包括:单独和整体的资源请求、硬件/软件/策略限制、亲和以及反亲和要求、数据局域性、负载间的干扰等等。
 
  kube-scheduler 调度流程
  kube-scheduler 给一个 pod 做调度选择包含两个步骤:
 
  1.过滤(Predicates 预选策略)2.打分(Priorities 优选策略)
 
  过滤阶段:过滤阶段会将所有满足 Pod 调度需求的 Node 选出来。例如,PodFitsResources 过滤函数会检查候选 Node 的可用资源能否满足 Pod 的资源请求。在过滤之后,得出一个 Node 列表,里面包含了所有可调度节点;通常情况下,这个 Node 列表包含不止一个 Node。如果这个列表是空的,代表这个 Pod 不可调度。
 
  打分阶段:在过滤阶段后调度器会为 Pod 从所有可调度节点中选取一个最合适的 Node。根据当前启用的打分规则,调度器会给每一个可调度节点进行打分。最后,kube-scheduler 会将 Pod 调度到得分最高的 Node 上。如果存在多个得分最高的 Node,kube-scheduler 会从中随机选取一个。

(编辑:开发网_开封站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读