kubestrでラズパイKubernetesクラスター上のRook/Cephで作成したブロックストレージ(RBD)に対してパフォーマンス測定してみる

 

kubenews #14で紹介されていたkubestrというツールを紹介していたのでラズパイKubernetesクラスター上で使用してみました。

 

Thumbnail

 

kubestrはKubernetesでストレージを使用するためにストレージの発見、検証、評価をおこなうことが可能なツールです。

kubestrを使用することで以下のようなことができます。

  • Kubernetesクラスター上に存在する様々なストレージを特定することができる
  • ストレージが正しく設定されているかどうか検証することができる
  • FIOといったベンチマークツールを使用し、ストレージ性能を評価することができる

 

kubestrは現状(2021年4月4日現在)、arm64アーキテクチャーに対応したリリースがないので自身でarm64用のビルドを行わないとRaspberry Piなどでは使用できません。

本稿では、kubestrをRaspberry Piで使用するためにarm64用にビルドし、ラズパイKubernetesクラスター上のRook/Cephで作成したブロックストレージ(RBD)に対してkubestrを使用してパフォーマンス測定をしてみます。

 

kubestrをarm64用にビルドする

まずはkubestrがfioを実行するために使用するPodのイメージをビルドしていきます。

下記のコマンドを実行し、kubestrをクローンします。

git clone https://github.com/kastenhq/kubestr.git
cd kubestr

 

Dockerfileを編集します。

下記のように GOARCH=amd64GOARCH=arm64 に変更します。

$ git diff
diff --git a/Dockerfile b/Dockerfile
index 34bb921..cac1ae1 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -3,7 +3,7 @@ FROM golang:alpine3.12 AS builder
 ENV GO111MODULE=on \
     CGO_ENABLED=0 \
     GOOS=linux \
-    GOARCH=amd64 \
+    GOARCH=arm64 \
     GOBIN=/dist

 WORKDIR /app

 

Dockerイメージをビルドし、自身のDockerHubリポジトリにプッシュします。

{your_dockerhub_id} には自身のDockerHubのIDを入れて下さい。

docker build -t kubestr:arm64 .
docker tag kubestr:arm64 {your_dockerhub_id}/kubestr:arm64
docker push {your_dockerhub_id}/kubestr:arm64

 

次はkubestrコマンドをビルドしていきます。

pkg/common/common.go を下記のように編集します。

DefaultPodImage を先程作成したPodのイメージをプッシュした自身のDockerHubリポジトリ先に変更します。  

$ git diff
diff --git a/pkg/common/common.go b/pkg/common/common.go
index cbd966c..ac5263f 100644
--- a/pkg/common/common.go
+++ b/pkg/common/common.go
@@ -8,7 +8,7 @@ const (
        // VolSnapClassStableDriverKey describes the stable driver key
        VolSnapClassStableDriverKey = "driver"
        // DefaultPodImage the default pod image
-       DefaultPodImage = "ghcr.io/kastenhq/kubestr:latest"
+       DefaultPodImage = "{your_dockerhub_id}/kubestr:arm64"
        // SnapGroupName describes the snapshot group name
        SnapGroupName = "snapshot.storage.k8s.io"
        // VolumeSnapshotClassResourcePlural  describes volume snapshot classses

 

最後にkubestrコマンをビルドします。

go build -o kubestr main.go

 

kubestrコマンドを実行できるか確認します。

下図は筆者の環境上での実行結果です。

kubestr

 

kubestrを使用したブロックストレージ(RBD)に対してパフォーマンス測定

kubestrを使用したストレージのパフォーマンス測定は下記のコマンドで実行できます。

./kubestr fio -s <storage class>

下図は筆者の環境上での実行結果です。

kubestr_fio_rbd

 

最後に

本稿では、kubestrをarm64アーキテクチャー用にビルドし、kubestrを使用したブロックストレージ(RBD)に対してパフォーマンス測定を行いました。