zoukankan      html  css  js  c++  java
  • k8s调度的预选策略及优选函数

    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对象需求的已有镜像的体积大小之和。
            
            
            
            
            
            
            
            
            
            
           

  • 相关阅读:
    java远程调用rmi入门实例
    POJ2752 Seek the Name, Seek the Fame 【KMP】
    Scala入门到精通——第十六节 泛型与注解
    js:简单的拖动效果
    Android拍照、摄像方向旋转的问题 代码具体解释
    对dispatch_async到主线程的逻辑封装成C/C++接口类型
    Oracle password expire notices
    CentOS bridge br0 kvm libvirt-xml
    国内常用ntp服务器ip地址
    C Deepin指针
  • 原文地址:https://www.cnblogs.com/Smbands/p/10939585.html
Copyright © 2011-2022 走看看