k8s k3s云容器性能测试-边端云端性能测试

感谢公司同事的指导



 

测试目标:验证性能监控功能的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增高

k8s k3s云容器性能测试-边端云端性能测试_第1张图片

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 -t <时间>

2.4 在性能界面会看到这两个pod所在的物理节点对应的网卡出现较大流量数据

2.2 登录ks3-1服务器10.121.xx.a

登录cputest1的容器

sh-4.4# iperf3 -s

k8s k3s云容器性能测试-边端云端性能测试_第2张图片

 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

智能运维 > 监控告警 > 性能监控 - 边缘节点监控 看到的结果,网速上升

k8s k3s云容器性能测试-边端云端性能测试_第3张图片

 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值),则会对系统盘造成压力,等于测试白测了

k8s k3s云容器性能测试-边端云端性能测试_第4张图片

step6-7在mec的物理机、ceph上操作

6. 登录mec16服务器的物理计算机control1

[root@control1 ~]# mount |grep ceph

ssh 172.xx.xx.xx  #登录ceph 

7. ceph df  #在写磁盘前检查 ceph容量 -- %USED

k8s k3s云容器性能测试-边端云端性能测试_第5张图片

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  

k8s k3s云容器性能测试-边端云端性能测试_第6张图片

k8s k3s云容器性能测试-边端云端性能测试_第7张图片

step10在mec的ceph操作

10. 写完磁盘后,再次检查 ceph存储容量

k8s k3s云容器性能测试-边端云端性能测试_第8张图片

看总的余量

 

11. 登录cmo系统,智能运维 > 监控告警 > 性能监控 - 存储监控

IO BW上升,IO写入

剩余容量Capacity不断下降

k8s k3s云容器性能测试-边端云端性能测试_第9张图片

完结,撒花~~~~~

你可能感兴趣的:(云存储,云计算,中间件)