使用 FIO 對 Kubernetes 持久卷進行 Benchmark:讀/寫(IOPS)、帶寬(MB/s)和延遲
本文轉(zhuǎn)載自微信公眾號「黑客下午茶」,作者為少。轉(zhuǎn)載本文請聯(lián)系黑客下午茶公眾號。
工具
Dbench
https://github.com/leeliu/dbench
用法
1.編輯 dbench.yaml 文件中的 storageClassName 以匹配你自己的 Storage Class。
- kubectl get storageclasses
2.部署
- kubectl apply -f dbench.yaml
3.部署后,Dbench Job 將:
- 使用 storageClassName: ssd(默認)提供 1000Gi(默認)的持久卷。
- 在新配置的磁盤上運行一系列 fio 測試。
- 目前有 9 個測試,每個測試 15 秒 - 總運行時間約為 2.5 分鐘。
4.使用以下方法跟蹤基準測試進度:
- kubectl logs -f job/dbench
空輸出表示 job 尚未創(chuàng)建,或 storageClassName 無效,請參閱下面的故障排除。
5.在所有測試結束時,您將看到類似于以下內(nèi)容的摘要:
- ==================
- = 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
Dbench 摘要結果
- Random Read/Write IOPS(隨機讀寫)
- BW(帶寬)
- Average Latency (usec) Read/Write(讀/寫平均延遲)
- Sequential Read/Write(順序讀/寫)
- Mixed Random Read/Write IOPS(混合隨機讀/寫)
6.測試完成后,進行清理:
- kubectl delete -f dbench.yaml
注意事項/故障排除
- 如果持久化卷聲明(Persistent Volume Claim)卡在 Pending 上,很可能您沒有指定有效的存儲類(Storage Class)。使用 kubectl get storageclasses 進行雙重檢查。還要檢查用于配置的卷大小是否為 1000Gi(默認值)。
- 綁定持久性卷可能需要一些時間,Kubernetes Dashboard UI 將 Dbench Job 顯示為紅色,直到卷完成配置。
- 測試多種磁盤大小很有用,因為大多數(shù)云提供商按每 GB 配置的 IOPS 定價。因此,4000Gi 卷的性能可能將優(yōu)于 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 集群生產(chǎn)實戰(zhàn)
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