企业的 IT 环境通常运行两大类进程,一类是在线服务,一类是离线作业。
在线任务:运行时间长,服务流量及资源利用率有潮汐特征,时延敏感,对服务SLA 要求高,如电商交易服务等。
离线任务:运行时间分区间,运行期间资源利用率较高,时延不敏感,容错率高,中断一般允许重运行,如大数据处理等。
混部主要的形式是通过将在线和离线任务部署在相同节点的方式来提高资源利用率,比如某节点之前部署3个高服务SLA的在线任务,现在混合部署3个在线任务和3个离线任务,离线服务把在线服务各个时段的空闲资源利用起来而不影响在线服务的服务质量。
在容器混部层面主要涉及: 1)调度层面实现节点调度资源超分,在、离线任务混合调度到相同节点; 2)CPU层面实现在线任务抢占、压制离线任务;3)内存层面本文不做介绍。通过混部技术CPU部分能力,可以实现在运行过程中,系统会根据在、离线任务资源使用情况,自动完成在线“抢占”、“压制”离线任务资源以保障在线资源的资源诉求。以一台4核机器为例:
- 当在线任务需要3核CPU资源,那么需要系统“压制”离线任务最多只能使用1核CPU资源;
- 在线任务当时处于业务低峰,仅使用1核CPU资源,离线任务可以短期使用剩余CPU资源;当在线任务业务上涨时,系统保障在线业务可以“抢占”离线业务CPU资源;
环境准备
环境要求
集群版本:- v1.19集群:v1.19.16-r4及以上版本
- v1.21集群:v1.21.7-r0及以上版本
- v1.23集群:v1.23.5-r0及以上版本
- v1.25及以上版本
集群类型:CCE Standard集群或CCE Turbo集群。
节点OS:EulerOS 2.9 (内核kernel-4.18.0-147.5.1.6.h729.6.eulerosv2r9.x86_64)或者Huawei Cloud EulerOS 2.0
节点类型:弹性虚拟机。
Volcano插件版本:1.7.0及以上版本。
环境信息
CCE集群部署kube-prometheus-stack、grafana和volcano插件
CPU压制、抢占演示
压测基线
创建演示需要的工作负载,且保证两个工作负载调度至同一节点(由于dashboard中普罗表达式与pod名称关联,建议不要工作负载名称,否则影响dashboard正常显示)
使用redis-benchmark命令压测redis;
192.168.1.159
为redis的Pod ip
在grafana页面观察redis指标和cpu使用率,可以作为在无干扰情况下的基线参考数据
非混部场景
创建节点池用作混合部署,同时重新部署以上工作负载,使其调度至新节点
再次使用redis-benchmark命令压测redis;
192.168.1.172
为redis的Pod ip
进入stress容器内,待redis指标达到基线且平稳后,执行命令提升CPU使用率
在grafana页面观察redis指标和cpu使用率,发现stress容器压测过程中,redis的性能数据急速退化
混部场景
更新节点池,在高级配置中为节点配置混部标签:
volcano.sh/colocation="true"