Kubernetes Scheduler的Predicates和Priorities Policies解读

本文详细解读了Kubernetes V1.5 Scheduler的预选策略Predicates Policies(如NoDiskConflict, PodFitsResources)和优选策略Priorities Policies(如LeastRequestedPriority, BalancedResourceAllocation),分析了各种策略的逻辑和作用,旨在帮助理解Kubernetes调度器的工作原理。" 106907834,8576394,Babel快速入门与配置详解,"['前端开发', 'JavaScript', 'Webpack', 'Babel']
摘要由CSDN通过智能技术生成

本文是对Kubernetes V1.5 Scheduler 的预选策略Predicates Policies和优选策略Priorities Policies的含义解读,并附有部分样例代码代码解析。关于kubernetes调度器更全面的解析见我的其他博客:Kubernetes Scheduler源码分析, Kubernetes Scheduler原理解析

Predicates Policies分析

/plugin/pkg/scheduler/algorithm/predicates.go中实现了以下的预选策略:

  • NoDiskConflict:检查在此主机上是否存在卷冲突。如果这个主机已经挂载了卷,其它同样使用这个卷的Pod不能调度到这个主机上。GCE,Amazon EBS, and Ceph RBD使用的规则如下:

    • GCE允许同时挂载多个卷,只要这些卷都是只读的。
    • Amazon EBS不允许不同的Pod挂载同一个卷。
    • Ceph RBD不允许任何两个pods分享相同的monitor,match pool和 image。
  • NoVolumeZoneConflict:检查给定的zone限制前提下,检查如果在此主机上部署Pod是否存在卷冲突。假定一些volumes可能有zone调度约束, VolumeZonePredicate根据volumes自身需求来评估pod是否满足条件。必要条件就是任何volumes的zone-labels必须与节点上的zone-labels完全匹配。节点上可以有多个zone-labels的约束(比如一个假设的复制卷可能会允许进行区域范围内的访问)。目前,这个只对PersistentVolumeClaims支持,而且只在PersistentVolume的范围内查找标签。处理在Pod的属性中定义的volumes(即不使用PersistentVolume)有可能会变得更加困难,因为要在调度的过程中确定volume的zone,这很有可能会需要调用云提供商。

  • PodFitsResources:检查主机的资源是否满足Pod的需求。根据实际已经分配的资源量做调度,而不是使用已实际使用的资源量做调度。

  • PodFitsHostPorts:检查Pod内每一个容器所需的HostPort是否已被其它容器占用。如果有所需的HostPort不满足需求,那么Pod不能调度到这个主机上。

  • HostName:检查主机名称是不是Pod指定的HostName。

  • MatchNodeSelector:检查主机的标签是否满足Pod的nodeSelector属性需求。

  • MaxEBSVolumeCount:确保已挂载的EBS存储卷不超过设置的最大值。默认值是39。它会检查直接使用的存储卷,和间接使用这种类型存储的PVC。计算不同卷的总目,如果新的Pod部署上去后卷的数目会超过设置的最大值,那么Pod不能调度到这个主机上。

  • MaxGCEPDVolumeCount:确保已挂载的GCE存储卷不超过设置的最大值。默认值是16。规则同上。

下面是NoDiskConflict的代码实现,其他Predicates Policies实现类似,都得如下函数原型:

type FitPredicate func(pod *v1.Pod, meta interface{}, nodeInfo *schedulercache.Nod

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值