k8s k3s云容器性能测试-边端云端性能测试
被测服务器:mec16边端服务器step1 登录跳板前端地址物理机计算地址 control1 control2物理机k3s节点GPU节点engine ip地址k3s地址 k3sserver-1 k3sserver-2 k3sserver3harbor地址网关地址1. 测试CPUCPU/Memory:在MEC k3s集群里创建POD,在POD里为集群加压 e.g. memtester1.1 登录ks
感谢公司同事的指导
测试目标:验证性能监控功能的CPU/memory/网络/存储性能监控是否工作
测试思路:
- CPU/Memory: 在MEC k3s集群里创建POD,在POD里为集群加压 e.g. memtester
- 网络: 创建两个pod 分别起在两个物理节点上,使用iperf3给网络加压
- 存储: 通过MEC 创建一块大磁盘,,通过 DD或其他工具将磁盘写满(e.g. ceph存储整体约30T,创建一块盘3T,预期存储 已用量会降低10%)
被测服务器:mec16边端服务器
step1 登录跳板
前端地址
物理机计算地址 control1 control2
物理机k3s节点
GPU节点
engine ip地址
k3s地址 k3sserver-1 k3sserver-2 k3sserver3
harbor地址
网关地址
1. 测试CPU memory
CPU/Memory:在MEC k3s集群里创建POD,在POD里为集群加压 e.g. memtester
1.1 登录ks3-1服务器10.121.xx.xx,目录/tmp 或者去测试服务器下载
cpu.yaml配置如下
apiVersion: apps/v1
kind: Deployment
metadata:
name: cpu-mem-test
namespace: default
spec:
selector:
matchLabels:
name: cpu-mem-test
replicas: 1
template:
metadata:
labels:
name: cpu-mem-test
spec:
nodeSelector:
kubernetes.io/hostname: k3sagent-1
imagePullSecrets:
- name: docker-registry-secret
containers:
- name: cpu-mem-test
image: harbor.validationteam.com/library/cpu_centos:5
imagePullPolicy: IfNotPresent
securityContext:
privileged: false
resources:
limits:
memory: "1Gi"
cpu: "0.1"
requests:
memory: "1Gi"
cpu: "0.1"
ports:
- containerPort: 22
[root@k3sserver-1 tmp]#
[root@k3sserver-1 tmp]# cp cpu_mem.yaml cpu_mem1125.yaml
[root@k3sserver-1 tmp]# cp cpu_mem2.yaml cpu_mem21125.yaml
vim cpu_mem1125.yaml
批量替换 :%s/cpu-mem-test/cpu-mem-test1125/g
kubernetes.io/hostname: k3sagent-1
vim cpu_mem21125.yaml
:%s/cpu-mem-test1/cpu-mem-test21125/g
kubernetes.io/hostname: k3sagent-2
1.2 创建pod
[root@k3sserver-1 tmp]# kubectl create -f cpu_mem1125.yaml
1.3 查询pod
[root@k3sserver-1 tmp]# kubectl get pod -A |grep cpu
default cpu-mem-test-57464dcc97-jhtqt 1/1 Running 1 2d2h
default cpu-mem-test1-75b59dddd8-drz4d 1/1 Running 0 2d2h
default cpu-mem-test1125-795cd5c685-lkktt 1/1 Running 0 133m
登录到pod
[root@k3sserver-1 tmp]# kubectl exec cpu-mem-test1125-795cd5c685-lkktt -it sh
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
sh-4.4#
1. 4 使用预先安装的memtester给集群加压 . 具体命令: memtester 10M 1000000
参数介绍
memtester [-p PHYSADDR] [ITERATIONS]
MEMORY 申请测试内存的数量,单位默认是megabytes(兆),也可以是B K M G
ITERATIONS 测试的次数,默认是无限
始测试,申请10M内存,测试一次,如下图:
memtester 10M 1
sh-4.4# memtester 10M 1000000
主要想对内存进行压力测试,以上只是试用,可以申请大内存,放入后台无限测试
nohup memtester 2G > /tmp/memtest.log &
sh-4.4# nohup memtester 2G > /tmp/memtest.log &
[1] 95
sh-4.4# nohup: ignoring input and redirecting stderr to stdout
sh-4.4# ps -ef|grep mem 查看mem进程
root 26 20 0 Nov25 pts/0 00:03:03 memtester 10M 1000000
root 84 0 9 05:59 ? 00:15:48 memtester 2G
root 95 89 4 08:31 pts/2 00:00:39 memtester 2G
root 101 89 0 08:44 pts/2 00:00:00 grep mem
对应系统上可以看到智能运维 > 监控告警 > 性能监控 - [边缘容器监控]的pod容器cpu-mem-test1125-795cd5c685-lkktt的CPU利用率-CPU Utilization增高
2. 网络测试方法
2.1 同样使用该 POD(pod1), 并创建一个新的POD(e.g.pod2),在pod内安装iperf3
yum install iperf3
登录pod容器方法同1.1和1.2
2.2 Pod1 执行 iperf3 -s
2.3 Pod2 执行 iperf3 -c <pod1 ip> -t <时间>
2.4 在性能界面会看到这两个pod所在的物理节点对应的网卡出现较大流量数据
2.2 登录ks3-1服务器10.121.xx.a
登录cputest1的容器
sh-4.4# iperf3 -s
2.3 登录ks3-2服务器10.121.xx.b
登录cputest2的容器
[root@k3sserver-2 ~]# kubectl get pod -A|grep cpu
default cpu-mem-test-57464dcc97-jhtqt 1/1 Running 1 3d1h
default cpu-mem-test1-75b59dddd8-drz4d 1/1 Running 0 3d1h
default cpu-mem-test1125-795cd5c685-lkktt 1/1 Running 0 25h
default cpu-mem-test21125-65f5855456-qjxqc 1/1 Running 0 21h
[root@k3sserver-2 ~]# kubectl exec -it cpu-mem-test21125-65f5855456-qjxqc -n default sh
安装iperf3,执行
sh-4.4# yum install iperf3
点击y 直到安装完毕执行
查看容器pod1的内网ip 为10.16.0.x
ip a |grep inet
在容器pod2执行
sh-4.4# iperf3 -c pod1的内网ip -t 1000
智能运维 > 监控告警 > 性能监控 - 边缘节点监控 看到的结果,网速上升
3. 存储测试方法
准备工作:
登录mec系统,虚拟机资源 > 存储管理,创建一块很大的磁盘(T单位的,这里创建的是3T)
登录mec系统,虚拟机资源 > 虚拟机管理,创建虚拟机,添加刚刚创建的磁盘
登录mec创建好的虚拟机,mac电脑用vnc连接虚拟机的console.vv(2分钟内有效) ip:port
连接虚拟机成功需要输入root 2020的密码
step1-5在虚拟机上操作
1. mkfs -t ext4 /dev/<磁盘名>
2. mkfs -t ext4 /dev/vdb #格式化磁盘。把第二块硬盘整个格式化成ext4文件系统,同时会覆盖掉原来到分区表
3. mkdir /mnt/vdb #创建挂载文件夹
4. lsblk (可以看到/dev/vdx)
#用于列出所有可用块设备的信息,而且还能显示他们之间的依赖关系,但是它不会列出RAM盘的信息
此时MOUNTPOINT(目录是否是加载点)无内容
5. mount /dev/vdb /mnt/vdb #需要重新挂载
lsblk 此时MOUNTPOINT有挂载点,为/mnt/vdb,一定要校验创建的文件夹vdb挂载在目录/mnt/vdb了。没有没挂载上(MOUNTPOINT无value值),则会对系统盘造成压力,等于测试白测了
step6-7在mec的物理机、ceph上操作
6. 登录mec16服务器的物理计算机control1
[root@control1 ~]# mount |grep ceph
ssh 172.xx.xx.xx #登录ceph
7. ceph df #在写磁盘前检查 ceph容量 -- %USED
step8在虚拟机上操作
8. 使用dd命令将磁盘写满
参考博客dd linux 压测,使用dd命令简单测试磁盘性能
dd if=/dev/zero of=/mnt/vdb/ls bs=10M count=2048000
把创建的/dev/zero文件向/mnt/vdb/ls文件写数据,其中/mnt/vdb为刚刚创建的文件夹目录,zero和ls均为新文件
注:命令行解释:
创建一个大小为256M的文件:
#dd if=/dev/zero of=/swapfile bs=1024 count=262144
备份磁盘开始的512个字节大小的MBR信息到指定文件
#dd if=/dev/hda of=/root/image count=1 bs=512
count=1指仅拷贝一个块;bs=512指块大小为512个字节
参考Linux 下的dd命令使用详解以及dd if=/dev/zero of=的含义
step9在mec的ceph操作
9. [root@ceph-0 ~]# watch ceph df
查看ceph使用率的变化--每2s
step10在mec的ceph操作
10. 写完磁盘后,再次检查 ceph存储容量
看总的余量
11. 登录cmo系统,智能运维 > 监控告警 > 性能监控 - 存储监控
IO BW上升,IO写入
剩余容量Capacity不断下降
完结,撒花~~~~~
更多推荐
所有评论(0)