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

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 使用 FIO 对 Kubernetes 持久卷进行 Benchmark:读/写(IOPS)、带宽(MB/s)和延迟

工具



Dbench


用法



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


kubectl get storageclasses


  1. 部署


kubectl apply -f dbench.yaml


  1. 部署后,Dbench Job 将:


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


kubectl logs -f job/dbench


  1. 空输出表示 job 尚未创建,或 storageClassName 无效,请参阅下面的故障排除。
  2. 在所有测试结束时,您将看到类似于以下内容的摘要:


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


  1. Dbench 摘要结果


  • Random Read/Write IOPS(随机读写)
  • BW(带宽)
  • Average Latency (usec) Read/Write(读/写平均延迟)
  • Sequential Read/Write(顺序读/写)
  • Mixed Random Read/Write IOPS(混合随机读/写)
  1. 测试完成后,进行清理:


kubectl delete -f dbench.yaml


注意事项/故障排除



  • 如果持久化卷声明(Persistent Volume Claim)卡在 Pending 上,很可能您没有指定有效的存储类(Storage Class)。使用 kubectl get storageclasses 进行双重检查。还要检查用于配置的卷大小是否为 1000Gi(默认值)。
  • 绑定持久性卷可能需要一些时间,Kubernetes Dashboard UIDbench Job 显示为红色,直到卷完成配置。
  • 测试多种磁盘大小很有用,因为大多数云提供商按每 GB 配置的 IOPS 定价。因此,4000Gi 卷的性能可能将优于 1000Gi 卷。重新测试,只需编辑 yamlkubectl 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


微信图片_20220612233338.png


  1. vi dbench.yaml


  1. kubectl apply -f dbench.yaml


  1. kubectl logs -f job/dbench

微信图片_20220612233406.png

  1. kubectl delete -f dbench.yaml
相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
3月前
|
Prometheus Kubernetes 监控
在K8S中,Pod请求另一个pod偶尔出现超时或延迟,如何排查?
在K8S中,Pod请求另一个pod偶尔出现超时或延迟,如何排查?
|
Kubernetes 调度 Perl
k8s中的PVC为何需要延迟绑定?(WaitForFirstConsumer)
有一个pod, 使用的pvc叫pvc-1, 我们希望它只运行在node-2上,在当前的集群中存在两台主机符合pod的pvc的要求, 假如node-1上是pv-1, node-2上是pv-2,这两个完全一样.
421 0
|
Kubernetes Perl 容器
K8S集群优化之修复ServiceEndpoint更新的延迟
几个月前,我在更新 Kubernetes 集群中的 Deployment 时发现了一个很奇怪的连接超时现象,在更新 Deployment 之后的 30 秒到两分钟左右,所有与以该 Deployment作为服务后端的 Service 的连接都会超时或失败。
2069 0
|
25天前
|
JSON Kubernetes 容灾
ACK One应用分发上线:高效管理多集群应用
ACK One应用分发上线,主要介绍了新能力的使用场景
|
26天前
|
Kubernetes 持续交付 开发工具
ACK One GitOps:ApplicationSet UI简化多集群GitOps应用管理
ACK One GitOps新发布了多集群应用控制台,支持管理Argo CD ApplicationSet,提升大规模应用和集群的多集群GitOps应用分发管理体验。
|
1月前
|
Kubernetes Cloud Native 云计算
云原生之旅:Kubernetes 集群的搭建与实践
【8月更文挑战第67天】在云原生技术日益成为IT行业焦点的今天,掌握Kubernetes已成为每个软件工程师必备的技能。本文将通过浅显易懂的语言和实际代码示例,引导你从零开始搭建一个Kubernetes集群,并探索其核心概念。无论你是初学者还是希望巩固知识的开发者,这篇文章都将为你打开一扇通往云原生世界的大门。
122 17
|
1月前
|
Kubernetes 应用服务中间件 nginx
搭建Kubernetes v1.31.1服务器集群,采用Calico网络技术
在阿里云服务器上部署k8s集群,一、3台k8s服务器,1个Master节点,2个工作节点,采用Calico网络技术。二、部署nginx服务到k8s集群,并验证nginx服务运行状态。
505 1
|
1月前
|
Kubernetes Cloud Native 微服务
微服务实践之使用 kube-vip 搭建高可用 Kubernetes 集群
微服务实践之使用 kube-vip 搭建高可用 Kubernetes 集群
107 1
|
1月前
|
负载均衡 应用服务中间件 nginx
基于Ubuntu-22.04安装K8s-v1.28.2实验(二)使用kube-vip实现集群VIP访问
基于Ubuntu-22.04安装K8s-v1.28.2实验(二)使用kube-vip实现集群VIP访问
51 1