scheduler调度过程:
    Predicate(预选)-->Priority(优选)-->Select(选定)
调度方式:
    1.节点亲和性调度(NodeAffinity)使用nodeSelector完成这类调度。
    2.Pod亲和性和反亲和性调度(PodAffinity、PodUnAffinity)。
    3.污点、污点容忍调度。节点上(Taints污点)、Pod上(Tolerations容忍度)。
参考:
预选策略:https://github.com/kubernetes/kubernetes/tree/master/pkg/scheduler/algorithm/predicates    
优选函数:https://github.com/kubernetes/kubernetes/tree/master/pkg/scheduler/algorithm/priorities

预选策略:(几种常用的预选策略)
    CheckNodeCondition:检查节点条件。是否可以在节点上的磁盘、网络不可用或未准备好的前提下把Pod调度到此节点。
    GeneralPredicates:通用预选策略,包含多种策略:
        HostName:检查Pod对象是否定义pod.spec.hostname
        PodFitsHostPort:检查Pod对象是否定义pod.spec.containers.ports.hostPort
        MatchNodeSelector:pods.spec.nodeSelector
        PodFitsResources:检查Pod的资源需求是否能被节点所满足。
    NoDiskConflict: 检查Pod依赖的存储卷能否能满足需求。
    PodToleratesNodeTaints:检查Pod上的spec.tolerations可容忍的污点是否完全包含节点上的污点。
    PodToleratesNodeNoExecuteTaints:Pod允许节点不执行污染;默认不启用。
    CheckNodeLabelPresence:检查节点标签;默认不启用
    CheckserviceAffinity:检查服务亲和性。默认不启用
    
    MaxEBSVolumeCount:亚马逊弹性存储卷最大数量,默认39
    MaxGCEPDVolumeCount:谷歌容器引擎最大存储卷数量,默认16
    MaxAzureDiskVolumeCount:Azure最大磁盘数量,默认16
    
    CheckVolumeBinding:检查数据卷绑定
    NoVolumeZoneConflict:没有数据卷空间冲突
    CheckNodeMemoryPressure:定义检查节点内存压力名称
    CheckNodePIDPressure:定义检查节点PID压力的名称
    CheckNodeDiskPressure:定义检查节点磁盘压力的名称
    
    MatchInterPodAffinity:定义匹配POD间关联的名称

优选函数:(几种常见的优选函数)
    LeastRequested:
        (cpu(capacity-sum(requested))*10/capacity)+(memory(capacity-sum(requested))*10/capacity)/2
    BalancedResourceAllocation:
        CPU和内存资源的被占用率相近的胜出;目的是平衡节点资源的使用率。
    NodePreferAvoidPods:
        节点注解信息"scheduler.alpha.kubernetes.io/preferAvoidPods"
    TaintToleration:
        将Pod对象的spec.tolerations与节点的taints列表项进行匹配度检查,匹配的条目越多得分越低。
    SelectorSpreading:调度器将pod分散调度。
    InterPodAffinity:根据Pod间的亲和性。
    NodeAffinity:根据节点亲和性。
    MostRequested:根据最多被请求的节点。
    NodeLabel:根据节点标签
    ImageLocality:
        根据满足当前Pod对象需求的已有镜像的体积大小之和。

k8s调度的预选策略及优选函数的更多相关文章

  1. 05-k8s调度器、预选策略、优选函数

    目录 k8s调度器.预选策略.优选函数 节点选择过程 调度器 预选策略 优选函数 高级调度设置机制 node选择器/node亲和调度 pod亲和性 污点调度 Taints 与 Tolerations ...

  2. k8s之调度器、预选策略及优选函数

    1.调度器(scheduler) 调度器的功能是调度Pod在哪个Node上运行,这些调度信息存储在master上的etcd里面,能够和etcd打交道的只有apiserver; kubelet运行在no ...

  3. K8S 调度器,预选策略,优选函数

    Kubernetes Scheduler 提供的调度流程分三步: 预选策略(predicate) 遍历nodelist,选择出符合要求的候选节点,Kubernetes内置了多种预选规则供用户选择. 优 ...

  4. K8s预选策略和优选函数简介

    调度器选择策略: 预选策略(Predicate) 1. 根据运行Pod的资源限制来排除不符合要求的Node 2. 根据运行Pod时,是否要求共享宿主机的网络名称空间来判断,如: 某Pod启动要共享宿主 ...

  5. Kubernetes 学习20调度器,预选策略及优选函数

    一.概述 1.k8s集群中能运行pod资源的其实就是我们所谓的节点,也称为工作节点.master从本质上来讲,他其实是运行整个集群的控制平面组件的比如apiserver,scheal,controlm ...

  6. k8s-调度器、预选策略及优选函数-二十

    一.简介 master上运行着三个最核心的组件,apiserver.scheduler.controller manager.此外,master还依赖于ectd存储节点,最好ectd是有冗余能力的集群 ...

  7. k8s调度器、预选策略及调度方式

    一.k8s调度流程 1.(预选)先排除完全不符合pod运行要求的节点2.(优先)根据一系列算法,算出node的得分,最高没有相同的,就直接选择3.上一步有相同的话,就随机选一个 二.调度方式 1.no ...

  8. 7.k8s.调度器scheduler 亲和性、污点

    #k8s. 调度器scheduler 亲和性.污点 默认调度过程:预选 Predicates (过滤节点) --> 优选 Priorities(优先级排序) --> 优先级最高节点 实际使 ...

  9. 图解kubernetes调度器预选设计实现学习

    Scheduler中在进行node选举的时候会首先进行一轮预选流程,即从当前集群中选择一批node节点,本文主要分析k8s在预选流程上一些优秀的筛选设计思想,欢迎大佬们指正 1. 基础设计 1.1 预 ...

随机推荐

  1. 源码分析(一) 进程cleos的命令解析

    EOS版本:4.0   一.进程cleos的作用   cleos,即为client eos.从名字就可以猜出来,它是一个标准的客户端程序,而实际上,它也确实为一个标准的client^_^   准确地说 ...

  2. Web 加入favicon

    一.点击    制作自己的favicon图标; 二.在网页head中加入: <link rel="shortcut icon" href="favicon.ico& ...

  3. redis之进阶

    redis之进阶   redis redis介绍 redis的功能特性 1,高速读写 2,数据类型丰富 3,支持持久化 4,多种内存分配及回收策略 5,支持事务 6,消息队列.redis用的多的还是发 ...

  4. Python列表与元组

    一.列表 1.列表的介绍: 列表lst = [    ] 是python的基本数据类型之一,其他编程语言也有类似的数据类型,比如JS中的数组,java中的数组等等,它是以[]括起来,每个元素用逗号隔开 ...

  5. 命令行 IRC 客户端 irssi 的基本操作

    登录与退出 启动 irssi $ irssi 登陆 IRC 服务器/connect server port 修改昵称/nick nickname 直接带昵称登录指定的服务器$ irssi -c [se ...

  6. Jmeter4.0----编写测试脚本(5)

    1.说明 以HTTP请求为例,和小伙伴门分享一下jmeter测试脚本的基本编写步骤 2.步骤说明 第一步:打开jmeter,更改测试计划名称为 Test batchSignForDir(修改计划名称, ...

  7. python HTTP 状态码

    404 Not Found 在HTTP请求的路径无法匹配任何RequestHandler类相对应的模式时返回404(Not Found)响应码. 400 Bad Request 如果你调用了一个没有默 ...

  8. 073 Set Matrix Zeroes 矩阵置零

    给定一个 m x n 的矩阵,如果一个元素为 0 ,则将这个元素所在的行和列都置零.你有没有使用额外的空间?使用 O(mn) 的空间不是一个好的解决方案.使用 O(m + n) 的空间有所改善,但仍不 ...

  9. Spark Mllib里如何建立密集向量和稀疏向量(图文详解)

    不多说,直接上干货! 具体,见 Spark Mllib机器学习实战的第4章 Mllib基本数据类型和Mllib数理统计

  10. Column 'xxx' in field list is ambiguous

    一 其实看一下ambiguous的翻译就好了 一开始我觉得是含糊什么的,后来找了下才知道应该是双关... 二 所以翻译过来就是 : 列'XX'在字段列表中双关 其实就是两张表有相同的字段,但是使用时, ...