CCE云原生混部场景下的测试案例

背景

企业的 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插件

image.png

image.png

image.png

CPU压制、抢占演示

压测基线

创建演示需要的工作负载,且保证两个工作负载调度至同一节点(由于dashboard中普罗表达式与pod名称关联,建议不要工作负载名称,否则影响dashboard正常显示)

kind: Deployment 
apiVersion: apps/v1 
metadata: 
  name: redis        
spec: 
  replicas: 1 
  selector: 
    matchLabels: 
      app: redis 
  template: 
    metadata: 
      creationTimestamp: null 
      labels: 
        app: redis 
      annotations: 
        prometheus.io/path: /metrics 
        prometheus.io/port: '9121' 
        prometheus.io/scrape: 'true' 
    spec: 
      containers: 
        - name: container-1 
          image: swr.cn-north-4.myhuaweicloud.com/testapp/redis:v6 
          resources: 
            limits: 
              cpu: '1' 
            requests: 
              cpu: 250m 
        - name: container-2 
          image: bitnami/redis-exporter:latest 
          resources: 
            limits: 
              cpu: 250m 
              memory: 512Mi 
            requests: 
              cpu: 250m 
              memory: 512Mi 
      imagePullSecrets: 
        - name: default-secret 
      schedulerName: volcano 
--- 
kind: Deployment 
apiVersion: apps/v1 
metadata: 
  name: stress 
spec: 
  replicas: 1 
  selector: 
    matchLabels: 
      app: stress 
  template: 
    metadata: 
      labels: 
        app: stress 
    spec: 
      containers: 
        - name: container-1 
          image: swr.cn-north-4.myhuaweicloud.com/testapp/centos-stress:v1 
          command: 
            - /bin/bash 
          args: 
            - '-c' 
            - while true; do echo hello; sleep 10; done 
          resources: 
            limits: 
              cpu: '4' 
              memory: 4Gi 
            requests: 
              cpu: 2500m 
              memory: 1Gi 
      imagePullSecrets: 
        - name: default-secret 
      schedulerName: volcano
      affinity: 
        podAffinity: 
          requiredDuringSchedulingIgnoredDuringExecution: 
            - labelSelector: 
                matchExpressions: 
                  - key: app 
                    operator: In 
                    values: 
                      - redis 
              namespaces: 
                - default 
              topologyKey: kubernetes.io/hostname

使用redis-benchmark命令压测redis;192.168.1.159为redis的Pod ip

./redis-benchmark -h 192.168.1.159 -p 6379 -n 3000000 -c 100 –q -t SET,INCR,LPUSH,LPOP,RPOP,SADD,HSET,SPOP,ZADD,ZPOPMIN

在grafana页面观察redis指标和cpu使用率,可以作为在无干扰情况下的基线参考数据

image.png

非混部场景

创建节点池用作混合部署,同时重新部署以上工作负载,使其调度至新节点

再次使用redis-benchmark命令压测redis;192.168.1.172为redis的Pod ip

./redis-benchmark -h 192.168.1.172 -p 6379 -n 3000000 -c 100 –q -t SET,INCR,LPUSH,LPOP,RPOP,SADD,HSET,SPOP,ZADD,ZPOPMIN

进入stress容器内,待redis指标达到基线且平稳后,执行命令提升CPU使用率

stress-ng -c 4 -t 3600

在grafana页面观察redis指标和cpu使用率,发现stress容器压测过程中,redis的性能数据急速退化

image.png

混部场景

更新节点池,在高级配置中为节点配置混部标签:volcano.sh/colocation="true"

image.png

点击节点池的配置管理-kubelet组件配置-开启节点混部特性

image.png

修改节点的驱逐阈值,将阈值修改为100,避免在压测stress时cpu使用率超过阈值被直接驱逐

kubectl annotate node 192.168.0.209 volcano.sh/evicting-cpu-high-watermark

修改stress工作负载的注解,将stress标记为离线业务,redis工作负载不用修改

kind: Deployment 
apiVersion: apps/v1 
metadata: 
  name: stress 
spec: 
  replicas: 1 
  selector: 
    matchLabels: 
      app: stress 
  template: 
    metadata: 
      labels: 
        app: stress 
      annotations:          
        volcano.sh/qos-level: "-1"       # 离线作业注解 
    spec: 
      containers: 
        - name: container-1 
          image: swr.cn-north-4.myhuaweicloud.com/testapp/centos-stress:v1 
          command: 
            - /bin/bash 
          args: 
            - '-c' 
            - while true; do echo hello; sleep 10; done 
          resources: 
            limits: 
              cpu: '4' 
              memory: 4Gi 
            requests: 
              cpu: 2500m 
              memory: 1Gi 
      imagePullSecrets: 
        - name: default-secret 
      schedulerName: volcano
      affinity: 
        podAffinity: 
          requiredDuringSchedulingIgnoredDuringExecution: 
            - labelSelector: 
                matchExpressions: 
                  - key: app 
                    operator: In 
                    values: 
                      - redis 
              namespaces: 
                - default 
              topologyKey: kubernetes.io/hostname

使用redis-benchmark命令压测redis;192.168.1.172为redis的Pod ip

./redis-benchmark -h 192.168.1.172 -p 6379 -n 3000000 -c 100 –q -t SET,INCR,LPUSH,LPOP,RPOP,SADD,HSET,SPOP,ZADD,ZPOPMIN

进入stress容器内,待redis指标达到基线且平稳后,执行命令提升CPU使用率

stress-ng -c 4 -t 3600

在grafana页面观察redis指标和cpu使用率,在混合场景下,即使离线任务在尝试打爆节点CPU,操作系统依然维持在线任务CPU诉求,保障了在线任务的服务质量

image.png

文章转载自:华为云开发者联盟

原文链接:https://www.cnblogs.com/huaweiyun/p/18176460

体验地址:引迈 - JNPF快速开发平台_低代码开发平台_零代码开发平台_流程设计器_表单引擎_工作流引擎_软件架构

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/598654.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

shell脚本脚本变量

shell脚本的概念: 1.讲要执行的命令按顺序保存到一个文本文件 2.给文件可执行权限 3.可以结合各种shell控制语句以完成更复杂的操作 linux中包含shell的文件有 [rootlocalhost ~]# cat /etc/shells /bin/sh #UNIX最初使用的 shell,已经被…

AI编码时代到来?实现编程梦想的利器—Baidu Comate测评

文章目录 Comate智能编码是什么?Comate支持的环境 Comate应用安装实际操作对话式生成代码生成代码注释智能单测项目测试调优功能 总结 Comate智能编码是什么? 在如今这个拥抱AI的时代,市面上已经产出了很多Ai代码助手,如果你还没…

Java clone

Java clone 原型模式用一个已经创建的实例作为原型,通过复制(clone)该原型对象来创建一个和原型对象相同的新对象。Java中对象克隆需要重写Object.clone()方法,并实现Cloneable接口。 浅克隆 浅克隆仅仅克隆本对象,…

关于Oracle 23ai 你要知道的几件事情

1.版本生命周期 23ai发布后的Oracle版本生命周期图,可以看到23ai是长期支持版本可以到2032年。 引申 Oracle版本分为两类 Innovation Release--创新版本,一般提供至少两年技术支持 Long Term Release --长期支持版本,一般提供5年premier和…

MacOS快速安装FFmpeg,并使用FFmpeg转换视频

前言:目前正在接入flv视频流,但是没有一个合适的flv视频流地址。网上提供的flv也都不是H264AAC(一种视频和音频编解码器组合),所以想通过fmpeg来将flv文件转换为H264AAC。 一、MacOS环境 博主的MacOS环境(…

DAPP开发:揭秘DAPP软件开发的秘密

随着区块链技术的飞速发展,DAPP(去中心化应用)的开发逐渐成为了一个热门话题。在本文中,我们将探讨如何从零开始开发DAPP软件,并深入思考DAPP开发中的关键问题。 一、了解DAPP开发的基础知识 在开始开发DAPP之前&…

大数据API技术分享:使用API接口采集淘宝数据(商品详情丨关键词搜索丨店铺所有商品)

使用API接口采集淘宝数据(商品详情、关键词搜索、店铺所有商品)是大数据领域常见的应用场景。以下是一些关于如何使用API接口进行这些操作的技术分享: 1. 获取API权限 首先,你需要在淘宝开放平台注册成为开发者,并创建…

【最大公约数 并集查找 调和级数】1998. 数组的最大公因数排序

本文涉及知识点 最大公约数 并集查找 调和级数 LeetCode1998. 数组的最大公因数排序 给你一个整数数组 nums ,你可以在 nums 上执行下述操作 任意次 : 如果 gcd(nums[i], nums[j]) > 1 ,交换 nums[i] 和 nums[j] 的位置。其中 gcd(nums…

免备案香港主机会影响网站收录?

免备案香港主机会影响网站收录?前几天遇到一个做电子商务的朋友说到这个使用免备案香港主机的完整会不会影响网站的收录问题,这个问题也是站长关注较多的问题之一。小编查阅了百度官方规则说明,应该属于比较全面的。下面小编给大家介绍一下使用免备案香…

OpenAI的搜索引擎要来了!

最近的报道和业界泄露信息显示,OpenAI正秘密研发一款新的搜索引擎,可能叫SearchGPT或Sonic,目标是挑战Google的搜索霸权。预计这款搜索引擎可能在5月9日即将到来的活动中正式亮相。 SearchGPT的蛛丝马迹 尽管OpenAI对SearchGPT尚未表态&…

语音识别技术初级应用

⚠申明: 未经许可,禁止以任何形式转载,若要引用,请标注链接地址。 全文共计3077字,阅读大概需要3分钟 🌈更多学习内容, 欢迎👏关注👀【文末】我的个人微信公众号&#xf…

纹理映射技术在AI去衣应用中的关键作用

引言: 随着人工智能技术的飞速发展,其在图像处理领域中的应用也日益广泛。AI去衣,作为一种颇具争议的技术应用,指的是利用深度学习算法自动移除或替换图片中的衣物。在这一过程中,纹理映射技术扮演了不可或缺的角色。本…

《我的医养信息化之路》之三十二:中医馆

今年五一节的气候有点冷,走到小区又湿又暗的、寂静的小道上,树上的雨水滴到头上,不免感到孤独而寒冷。还好路很短,很快就回到办公室,开了电灯和电脑,刚刚的冷意已经消失了,我开始审核今天中医馆…

Go 语言基础之面向对象编程

1、OOP 首先,Go 语言并不是面向对象的语言,只是可以通过一些方法来模拟面向对象。 1.1、封装 Go 语言是通过结构体(struct)来实现封装的。 1.2、继承 继承主要由下面这三种方式实现: 1.2.1、嵌套匿名字段 //Add…

Pascal Content数据集

如果您想使用Pascal Context数据集,请安装Detail,然后运行以下命令将注释转换为正确的格式。 1.安装Detail 进入项目终端 #即 这是在我自己的项目下直接进行克隆操作: git clone https://github.com/zhanghang1989/detail-api.git $PASCAL…

Enterprise Architect(EA) 时序图

EA 中时序图中Fragment无法调整 这个地方显示的是锁的状态,单击变成下面的样子,就可以在时序图上调整了

使用Flink SQL实时入湖Hudi/Hive

文章目录 1 Hudi 简介2 COW和MOR3 接入COW模式Hudi表4 使用Flink SQL查看新接表5 使用Hive查看新接表6 总结 1 Hudi 简介 Hudi是一个流式数据湖平台,使用Hudi可以直接打通数据库与数据仓库,连通大数据平台,支持对数据增删改查。Hudi还支持同…

支持向量机:抽象难懂?看这里就明白了!

今天给大家分享的知识是关于支持向量机的内容,支持向量机算法是目前学习到的机器学习算法中最抽象、最难以理解的内容,不过支持向量机算法在实际使用过程中还是比较常见,无论是在医学研究还是经济研究中都能看到身影,所有&#xf…

4.4网安学习第四阶段第四周回顾(个人学习记录使用)

本周重点 ①Linux系统提权 ②Linux权限维持 ③Windows 提权 ④Windows权限维持 ⑤SSRF利用 ⑥内网环境 ⑦内网扫描 ⑧漏洞利用 ⑨内网代理 ⑩获取主机控制权其他方案 ⑩①vuln靶场 ⑩②CS代理与ICMP隧道 本周主要内容 ①Linux系统提权 系统提权是成功入侵系统之…

[数据概念|方案实操]清华数据大讲堂1-海南数据基础设施建设思考与实践

“ 全国最大自贸区在数据要素市场改革中都做了什么?” 如鼹鼠哥上一篇文章所介绍,4月17日,在清华公管学院,由杭州数据局局长 徐青山 给大家做了题为《数据要素市场化配置改革杭州实践与思考》的报告,鼹鼠哥自己的一点感…