使用 FIO 对 Kubernetes 持久卷进行 Benchmark:读/写(IOPS)、带宽(MB/s)和延迟

开发 前端
如果持久化卷声明(Persistent Volume Claim)卡在 Pending 上,很可能您没有指定有效的存储类(Storage Class)。使用 kubectl get storageclasses 进行双重检查。还要检查用于配置的卷大小是否为 1000Gi(默认值)。

 [[425602]]

本文转载自微信公众号「黑客下午茶」,作者为少。转载本文请联系黑客下午茶公众号。

工具

Dbench

https://github.com/leeliu/dbench

用法

1.编辑 dbench.yaml 文件中的 storageClassName 以匹配你自己的 Storage Class。

  1. kubectl get storageclasses 

2.部署

  1. kubectl apply -f dbench.yaml 

3.部署后,Dbench Job 将:

  • 使用 storageClassName: ssd(默认)提供 1000Gi(默认)的持久卷。
  • 在新配置的磁盘上运行一系列 fio 测试。
  • 目前有 9 个测试,每个测试 15 秒 - 总运行时间约为 2.5 分钟。

4.使用以下方法跟踪基准测试进度:

  1. kubectl logs -f job/dbench 

空输出表示 job 尚未创建,或 storageClassName 无效,请参阅下面的故障排除。

5.在所有测试结束时,您将看到类似于以下内容的摘要:

  1. ================== 
  2. = Dbench Summary = 
  3. ================== 
  4. Random Read/Write IOPS: 75.7k/59.7k. BW: 523MiB/s / 500MiB/s 
  5. Average Latency (usec) Read/Write: 183.07/76.91 
  6. Sequential Read/Write: 536MiB/s / 512MiB/s 
  7. Mixed Random Read/Write IOPS: 43.1k/14.4k 

Dbench 摘要结果

  • Random Read/Write IOPS(随机读写)
  • BW(带宽)
  • Average Latency (usec) Read/Write(读/写平均延迟)
  • Sequential Read/Write(顺序读/写)
  • Mixed Random Read/Write IOPS(混合随机读/写)

6.测试完成后,进行清理:

  1. kubectl delete -f dbench.yaml 

注意事项/故障排除

  • 如果持久化卷声明(Persistent Volume Claim)卡在 Pending 上,很可能您没有指定有效的存储类(Storage Class)。使用 kubectl get storageclasses 进行双重检查。还要检查用于配置的卷大小是否为 1000Gi(默认值)。
  • 绑定持久性卷可能需要一些时间,Kubernetes Dashboard UI 将 Dbench Job 显示为红色,直到卷完成配置。
  • 测试多种磁盘大小很有用,因为大多数云提供商按每 GB 配置的 IOPS 定价。因此,4000Gi 卷的性能可能将优于 1000Gi 卷。重新测试,只需编辑 yaml,kubectl delete -f dbench.yaml 并在 deprovision/delete 完成后再次运行 kubectl apply -f dbench.yaml。
  • 所有 fio 测试的项都在 docker-entrypoint.sh 中。
  • Testing Read IOPS...
  • Testing Write IOPS...
  • Testing Read Bandwidth...
  • Testing Write Bandwidth...
  • Testing Read Latency...
  • Testing Write Latency...
  • Testing Read Sequential Speed...
  • Testing Write Sequential Speed...
  • Testing Read/Write Mixed...

腾讯云 K8S 集群生产实战

1.kubectl get storageclass

2.vi dbench.yaml

3.kubectl apply -f dbench.yaml

4.kubectl logs -f job/dbench

5.kubectl delete -f dbench.yaml

 

责任编辑:武晓燕 来源: 黑客下午茶
相关推荐

2021-06-15 20:59:14

Kubernetes调试容器

2022-10-08 00:05:00

HammerDB自动化测试

2017-11-17 08:48:18

IOPSSSD性能

2023-12-11 18:15:46

AnsibleMinikubeKubernetes

2021-05-06 09:33:32

OperatorKubernetes开源

2013-11-18 10:32:37

SQL Server 资源调控器对IOPS控制

2020-07-29 14:46:35

NVMeSSD

2020-03-16 11:31:10

Memblaze

2011-04-02 10:13:12

云计算宽带WAN

2020-08-27 19:25:01

边缘计算云计算安全

2022-03-30 07:45:41

KyvernoAPI开源项目

2009-09-10 10:29:53

交换机背板带宽

2010-10-11 16:23:35

MYSQL BENCH

2013-03-02 18:00:38

软件加密软件授权WinLicense

2021-02-02 09:37:33

软件定义存储SDS

2021-05-09 22:48:40

SQL数据库变量

2023-12-12 07:30:54

IstioWasm前端

2023-03-28 08:12:06

优化系统IOPS

2021-04-21 13:48:22

MySQL优化Redis

2023-10-10 07:33:30

Kubernetes容器
点赞
收藏

51CTO技术栈公众号