Page 21 - 网络电信2019年6月刊上
P. 21
调度评价指标。本文增加带宽、磁盘两类指标,在Node过滤阶 为0.5。优先级f的计算公式为:
段和优先级计算阶段,四类剩余资源均作为评价指标,改进了 f=0.5×LO cpu +0.5×LO memory
K8s原生调度策略不能满足带宽型、磁盘型Pod应用调度需求的 f越高表示该Node的资源配置越适合部署该Pod,经过计
不足;(2)提出新的调度机制WSLB,本文通过部署于Node中的 算,最终选择Node4进行部署。
监控代理,采集Pod动态资源利用率,根据Pod运行过程中的资 显然,Node4并非最佳选择,体现在以下两点:
源占用率动态地、自动化地计算与调整Pod的资源权重集合,资
表 1 可选 Node 剩余资源
源权重集合衡量了该Pod的资源倾向,当创建Pod时,WSLB将首
先根据Pod的最小资源需求过滤不符合要求的Node,随后根据资
源权重集合,对候选Node的各类剩余资源利用率加权求和,得
到候选Node的优先级,选择优先级最高的Node进行部署。
WSLB保障了把某项资源需求大的应用调度到该资源剩余
较多的Node,避免Node由于某个资源被过度分配从而导致整个
Node无法再分配新容器的问题。经实验验证,WSLB可以有效提
升集群资源的均衡度,当集群负荷较大时,可以提升集群的资
源利用率,避免Node带宽、磁盘资源饱和的情况发生。
图 1 资源调度
二、Kubernetes 调度策略
在Kubernetes中,Node是执行任务的载体,以物理服务器
或虚拟机的形式存在。Pod是一个应用实例,是Kubernetes调度
的最小单位,用户在创建Pod时,Kubernetes采用的调度策略如
下 [10,11] :
第一阶段进行Node过滤,过滤掉不满足pod最小资源需求的
Node,支持的过滤策略包括:端口冲突、CPU、内存容量检测、
服务占用等。
第二阶段称为Node优先级计算,Kubernetes将剩余的Node
根据CPU和内存空闲资源率进行综合的评分,按照评分的大小排
序,选出最合适的Node。最后将Pod绑定到选出的目标Node,调
度器完成容器应用的部署 [12] 。目前支持的优先级评分函数主要
有以下几种:
a) LeastRequestedPriority函数:由Node空闲资源与Node
资源总量的比值来决定Node评分,空闲资源越多,评分越高,
CPU和内存具有相同权重值,是应用最多的评分函数。
b) Balanced Resource Allocation函数:CPU和内存使用
率越接近的Node评分越高,用于简单地调节在部署Pod应用后各 第一,Kubernetes的调度算法未考虑带宽和磁盘资源,
Node的CPU和内存资源利用率的均衡性。 Node4部署该Pod后,剩余带宽资源为0,当该Node上任意Pod遇
c) Selector Spread Priority函数:对于属于同一个 到突发流量,不仅该Pod的最小带宽需求无法得到满足,所有
Service、Replication Controller的Pod副本,尽量调度到不 Pod的性能都将受到影响。在网络边缘,并非只有CPU、内存是
同的Node上。 稀缺资源,带宽、磁盘同样非常稀缺,如果调度策略仅仅考虑
此外,调度函数还包括NodePreferAvoidPodsPriority、 CPU、内存,将无法满足视频等大带宽应用及数据库等磁盘需求
NodeAffinityPriority、TaintTolerationPriority等一系列特 较大应用的调度需求,影响此类应用的性能。
殊的评分函数。 第二,即使仅考虑CPU、内存,Kubernetes的默认调度算
图1为Kubernetes默认资源调度策略示例,令资源集合 法仍有弊端:部署该Pod后,Node4将剩余1个CPU,15.5G内存,
R={CPU,内存(GB),带宽(Gbps),磁盘(TB)},待部署 资源使用的过度倾斜,导致本Node剩余资源不均衡,使该Node
Pod的资源最小需求量r表示部署该Pod所需的上述四类资源的 无法再创建更多的容器,从而造成过剩资源的浪费。问题出在
最小值,r={4,0.5,0.1,0.01},Node的资源总量指该Node的 LeastRequestedPriority函数对于任何应用,CPU、内存权重都
CPU、内存、带宽、磁盘的总量,Node1-Node4的资源总量均为 相同,完全没有考虑应用对于某种资源的需求倾向。
{16, 32, 1, 1},每个Node剩余资源如表1所示。对于待创建的 该Pod是一个CPU密集型应用,内存需求较小,调度策略应
Pod1,第一阶段过滤掉剩余资源不满足需求的Node3,第二阶段 该将其部署在剩余CPU较为丰富,而内存余量较少的Node,这样
采用LeastRequestedPriority评分函数计算各Node的优先级。 有两点优势,其一、为应用留有较多的冗余资源,Kubernetes
LO cpu 、LO memory 分别表示Node剩余CPU、内存的比例,二者权重均 根据用户申明的最小资源过滤Node,实际占有资源可能超过最
网络电信 二零二零年六月 39