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


    Kubernetes Scheduler 提供的调度流程分三步:

    1. 预选策略(predicate) 遍历nodelist,选择出符合要求的候选节点,Kubernetes内置了多种预选规则供用户选择。
    2. 优选策略(priority) 在选择出符合要求的候选节点中,采用优选规则计算出每个节点的积分,最后选择得分最高的。
    3. 选定(select) 如果最高得分有好几个节点,select就会从中随机选择一个节点。

    常用的预选策略(代码里的策略不一定都会被使用)

    • CheckNodeConditionPred 检查节点是否正常
    • GeneralPred HostName(如果pod定义hostname属性,会检查节点是否匹配。pod.spec.hostname)、PodFitsHostPorts(检查pod要暴露的hostpors是否被占用。pod.spec.containers.ports.hostPort)
    • MatchNodeSelector pod.spec.nodeSelector 看节点标签能否适配pod定义的nodeSelector
    • PodFitsResources 判断节点的资源能够满足Pod的定义(如果一个pod定义最少需要2C4G node上的低于此资源的将不被调度。用kubectl describe node NODE名称 可以查看资源使用情况)
    • NoDiskConflict 判断pod定义的存储是否在node节点上使用。(默认没有启用)
    • PodToleratesNodeTaints 检查pod上Tolerates的能否容忍污点(pod.spec.tolerations)
    • CheckNodeLabelPresence 检查节点上的标志是否存在 (默认没有启动)
    • CheckServiceAffinity 根据pod所属的service。将相同service上的pod尽量放到同一个节点(默认没有启动)
    • CheckVolumeBinding 检查是否可以绑定(默认没有启动)
    • NoVolumeZoneConflict 检查是否在一起区域(默认没有启动)
    • CheckNodeMemoryPressure 检查内存是否存在压力
    • CheckNodeDiskPressure 检查磁盘IO压力是否过大
    • CheckNodePIDPressure 检查pid资源是否过大
      源码参考:
      https://github.com/kubernetes/kubernetes/blob/master/pkg/scheduler/algorithm/predicates/predicates.go

    优选策略

    • least_requested 选择消耗最小的节点(根据空闲比率评估 cpu(总容量-sum(已使用)*10/总容量) )
    • balanced_resource_allocation 从节点列表中选出各项资源使用率最均衡的节点(CPU和内存)
    • node_prefer_avoid_pods 节点倾向
    • taint_toleration 将pod对象的spec.toleration与节点的taints列表项进行匹配度检查,匹配的条目越多,得分越低。
    • selector_spreading 与services上其他pod尽量不在同一个节点上,节点上通一个service的pod越少得分越高。
    • interpod_affinity 遍历node上的亲和性条目,匹配项越多的得分越高
    • most_requested 选择消耗最大的节点上(尽量将一个节点上的资源用完)
    • node_label 根据节点标签得分,存在标签既得分,没有标签没得分。标签越多 得分越高。
    • image_locality 节点上有所需要的镜像既得分,所需镜像越多得分越高。(根据已有镜像体积大小之和)
  • 相关阅读:
    CentOs 7.3下ELK日志分析系统搭建
    01 使用Git基本方法
    02 网页换肤
    运行代码
    01 使用JavaScript原生控制div属性
    excel 删除了自动保存的文件,如何恢复
    Eclipse错误: 找不到或无法加载主类或项目无法编译10种解决大法!
    eclipse启动错误
    centos已安装gcc 4.8.2,gcc -version 也是4.8.2 但是被其他工具调用时,显示未调用4.8.2
    centos 6.4安装cmake
  • 原文地址:https://www.cnblogs.com/klvchen/p/10024846.html
Copyright © 2020-2023  润新知