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对象需求的已有镜像的体积大小之和。
k8s调度的预选策略及优选函数的更多相关文章
- 05-k8s调度器、预选策略、优选函数
目录 k8s调度器.预选策略.优选函数 节点选择过程 调度器 预选策略 优选函数 高级调度设置机制 node选择器/node亲和调度 pod亲和性 污点调度 Taints 与 Tolerations ...
- k8s之调度器、预选策略及优选函数
1.调度器(scheduler) 调度器的功能是调度Pod在哪个Node上运行,这些调度信息存储在master上的etcd里面,能够和etcd打交道的只有apiserver; kubelet运行在no ...
- K8S 调度器,预选策略,优选函数
Kubernetes Scheduler 提供的调度流程分三步: 预选策略(predicate) 遍历nodelist,选择出符合要求的候选节点,Kubernetes内置了多种预选规则供用户选择. 优 ...
- K8s预选策略和优选函数简介
调度器选择策略: 预选策略(Predicate) 1. 根据运行Pod的资源限制来排除不符合要求的Node 2. 根据运行Pod时,是否要求共享宿主机的网络名称空间来判断,如: 某Pod启动要共享宿主 ...
- Kubernetes 学习20调度器,预选策略及优选函数
一.概述 1.k8s集群中能运行pod资源的其实就是我们所谓的节点,也称为工作节点.master从本质上来讲,他其实是运行整个集群的控制平面组件的比如apiserver,scheal,controlm ...
- k8s-调度器、预选策略及优选函数-二十
一.简介 master上运行着三个最核心的组件,apiserver.scheduler.controller manager.此外,master还依赖于ectd存储节点,最好ectd是有冗余能力的集群 ...
- k8s调度器、预选策略及调度方式
一.k8s调度流程 1.(预选)先排除完全不符合pod运行要求的节点2.(优先)根据一系列算法,算出node的得分,最高没有相同的,就直接选择3.上一步有相同的话,就随机选一个 二.调度方式 1.no ...
- 7.k8s.调度器scheduler 亲和性、污点
#k8s. 调度器scheduler 亲和性.污点 默认调度过程:预选 Predicates (过滤节点) --> 优选 Priorities(优先级排序) --> 优先级最高节点 实际使 ...
- 图解kubernetes调度器预选设计实现学习
Scheduler中在进行node选举的时候会首先进行一轮预选流程,即从当前集群中选择一批node节点,本文主要分析k8s在预选流程上一些优秀的筛选设计思想,欢迎大佬们指正 1. 基础设计 1.1 预 ...
随机推荐
- ESQL 查询数据报 参数类型“Edm.Decimal”和“Edm.Double”不兼容
ESQL 查询数据报 参数类型“Edm.Decimal”和“Edm.Double”不兼容 System.Data.Entity.Core.Objects.ObjectQuery<TEntity& ...
- CC01:确定字符互异
题目 请实现一个算法,确定一个字符串的所有字符是否全都不同.这里我们要求不允许使用额外的存储结构. 给定一个string iniString,请返回一个bool值,True代表所有字符全都不同,Fal ...
- Netty(4-1)factorial~总结
本节大纲: 1.Handler的执行顺序2.自定义二进制协议(每条完整数据的组成),从而解决拆包和粘包.3.通过为每个channel创建新的handler,从而解决即使handler中使用全局变量,也 ...
- 转Keil 中使用 STM32F4xx 硬件浮点单元
Keil 中使用 STM32F4xx 硬件浮点单元一.前言有工程师反应说 Keil 下无法使用 STM32F4xx 硬件浮点单元, 导致当运算浮点时运算时间过长,还有 一些人反应不知如何使用芯片芯片内 ...
- HDU 1160 FatMouse's Speed LIS DP
http://acm.hdu.edu.cn/showproblem.php?pid=1160 同样是先按它的体重由小到大排,相同就按speed排就行. 这样做的好处是,能用O(n^2)枚举,因为前面的 ...
- 选择控件js插件和使用方法
记录一下 选择控件js插件 /* * 滚动控件,包含地址选择.时间选择.自定义单选 */ //js_inputbox input 输入框 //js_pickviewselect 下拉单项选择 //js ...
- Mysql中WHERE IN,UNION 用法详解
WHERE IN 用法 这里分两种情况来介绍 1.in 后面是记录集,如: select * from table where uname in(select uname from ...
- centos 离线安装 mysql 5.7
1 . 安装新版mysql前,需将系统自带的mariadb-lib卸载. rpm -qa|grep mariadb mariadb-libs--.el7.centos.x86_64 rpm -e -- ...
- fpathconf
http://pubs.opengroup.org/onlinepubs/009695399/functions/pathconf.html
- CentOS 7安装Docker服务详细过程
---恢复内容开始--- Docker 简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟 ...