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
   16   17   18   19   20   21   22   23   24   25   26