k8s系列(十八:概念)调度器、预选策略、优选函数

schduler

1、 predicate预选排除完全不符合 predicate,检查所有预选策略,反对法则,一票否决

      https://github.com/kubernetes/kubernetes/blob/master/pkg/scheduler/algorithm/predicates/predicates.go

       预选策略:

               1、CheckNodeCondition:

               2、GeneralPredicates

                     HostName:检查Pod对象是否定义了pod.spec.hostname

                     PodFitsHostPorts:pods.spec.containers.ports.hostPort

                     MahchNodeSelector:pods.spec.nodeSelector

                     PodFitsResources:pod的需求节点是否满足(kubectl describe nodes node      

                3、NoDiskConflict:检查pod依赖的存储卷是否满足需求 (默认未启用)

                4、PodToleratesNodeTaints:检查pod上的spec.tolerations可容忍的污点是否完全包含节点上的污点

                5、PodToleratesNodeNoExecuteTaints:接纳NoExecute类型的污点,node会驱离(未启用)

                6、CheckNodelabelPresence:检查节点标签存在(未启用)

                7、ChenkServiceAffinity:跟随service下的pod(未启用)

                8、MaxEBSVolumeCountPred(亚马逊弹性块存储)CNCF

                9、MaxGCEPDVolumeCountPred(谷歌云环境)CNCF

                10、MaxAzureDiskVolumeCountPred(AzureDisk)CNCF

                11、CheckVolumeBinding:

                12、NoVolumeZoneConflict:区域限制

                13、CheckNodeMemoryPressure:检查节点内存压力

                14、CheckNodePIDPressure:检查PID数量

                15、CheckNodeDiskPressure:

                16、MatchInterPodAffinity:pod亲和性

2、 priority;全部评估,得分相加,得分最高优选https://github.com/kubernetes/kubernetes/tree/master/pkg/scheduler/algorithm/priorities

      1、least_requested:最少请求(节点剩余容量/节点总容量)

               cpu((capacity-sum(requested))*10/capacity)

               memory((capacity-sum(requested))*10/capacity)

      2、balanced_resource_allocation:cpu与内存均衡资源分配,越接近越好

      3、node_prefer_avoid_pods:得分占用比例高,根据节点注解信息来判定

                节点注解信息"scheduler.alpha.kubernetes.io/preferAvlidPods"

      4、taint_toleration:将pod对象的spec.tolerations列表项与节点的taints列表项匹配的条目越多、得分越低

      5、selector_spreading:被同一个标签匹配到的pod散开到各节点上

      6、interpod_affinity:用pod去匹配节点,匹配项多得分多

      7、node_affinity:节点亲和性

      8、most_requested:尽可能把几点资源用完

      9、node_label:有标签就得分

      10、image_locality:根据节点上是否拥有此pod所需要的镜像来判定,而且是根据镜像的体积之和来判定不是数量

3、 select选定,多个随机选择

调度方式:

       1、节点倾向性

       2、pod倾向性、反倾向性(pod倾向的pod所在的节点)还有反倾向性如一个pod绑定http,这个pod要绑定nginx,那么他两排               斥安全性、pod运行数据机密要隔离开

       3、Taints(node),Tolerations(pod)污点和污点容忍,给节点打上污点标识,给pod定义容忍那些污点的能力,pod仅会运               行在具有这些污点子集的node上

 

 

你可能感兴趣的:(k8s)