工具

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 尚未建立,或 storageClassName 無效,請參閱下面的故障排除。

  5. 在所有測試結束時,您將看到類似於以下內容的摘要:

    ==================
    = 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 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

  2. vi dbench.yaml

  3. kubectl apply -f dbench.yaml

  4. kubectl logs -f job/dbench

  5. kubectl delete -f dbench.yaml

公眾號:黑客下午茶