ベンチマーク¶
CNPG kubectlプラグインは、CloudNativePGを使用してKubernetesでPostgreSQLデプロイメントをベンチマークする簡単な方法を提供します。
ベンチマークは2つの側面に焦点を当てています。
重要
pgbench および`fio` は、ステージングまたは本番前環境で実行する必要があります。データベースや、同じ共有環境で実行される他のワークロード/アプリケーションに壊滅的な結果をもたらす可能性があるため、これらのプラグインを実稼働環境で使用しないでください。
pgbench¶
kubectl CNPGプラグインコマンド pgbench
は、既存のPostgresクラスターでユーザー定義のpgbenchジョブを実行します。このコマンドは--dry-run
フラグも受け入れます。これは、ジョブマニフェストを適用せずに出力します。
使用例:
kubectl cnpg pgbench \
-n <namespace> <cluster-name> \
--pgbench-job-name <pgbench-job> \
--db-name <db-name> \
-- --time 30 --client 1 --jobs 1
pgbench 名前空間のcluster-example という名前のCluster
に対してpgbench を実行する方法の例:
kubectl cnpg pgbench \
-n pgbench cluster-example \
--pgbench-job-name pgbench-job \
-- --time 30 --client 1 --jobs 1
--db-name フラグとpgbench
名前空間を使用して、既存のデータベースでpgbench
を実行する方法の例:
kubectl cnpg pgbench \
-n pgbench cluster-example \
--db-name pgbench \
--pgbench-job-name pgbench-job \
-- --time 30 --client 1 --jobs 1
ジョブのステータスは、次を実行して取得できます。
kubectl get job/pgbench-job -n <namespace>
NAME COMPLETIONS DURATION AGE
pgbench-job-name 1/1 15s 41s
ジョブが完了したら、次を実行して結果を収集できます。
kubectl logs job/pgbench-job -n <namespace>
fio¶
kubectl CNPGプラグインコマンド fio
は、デフォルト値と読み取り操作でfioジョブを実行します。このコマンドは--dry-run
フラグも受け入れます。これは、fioマニフェストを適用せずに出力します。
注釈
kubectlプラグインコマンド fio は、 ConfigMapを使用して、事前定義されたfioジョブ値でデプロイメントを作成します。カスタムジョブ値を提供する場合は、 --dry-run フラグを使用してマニフェストを生成し、生成されたConfigMapでカスタムジョブ値を提供することをお勧めします。
使用例:
デフォルト
kubectl cnpg fio <fio-name>
```と値
```shell
kubectl cnpg fio <fio-name> \
-n <namespace> \
--storageClass <name> \
--pvcSize <size>
fio 名前空間のstandard およびpvcSize: 2Gi
という名前のStorageClass に対してfio
コマンドを実行する方法の例:
kubectl cnpg fio fio-job \
-n fio \
--storageClass standard \
--pvcSize 2Gi
展開ステータスは、次を実行して取得できます。
kubectl get deployment/fio-job -n fio
NAME READY UP-TO-DATE AVAILABLE AGE
fio-job 1/1 1 1 14s
kubectlプラグインコマンド fio を実行した後。
それはします:
1.PVCを作成する
1.fioジョブの構成を表すConfigMapを作成します
1.単一のPodで構成されるfioデプロイメントを作成します。PVCでfioを実行し、ベンチマークの完了後にグラフを作成し、生成されたファイルのWebサーバーでの提供を開始します。そのために fio-tools <https://github.com/wallnerryan/fio-tools>`__ 画像を使用します。
デプロイメントによって作成されたPodは、結果の提供を開始すると準備が整います。デプロイで作成されたポッドのポートを転送できます
kubectl port-forward -n <namespace> deployment/<fio-name> 8000
ブラウザを使用してhttp://localhost:8000/
に接続し、データを取得します。
デフォルトの8kブロックサイズは、PostgreSQLワークロードをエミュレートするために選択されています。使用可能なIOPSの量を制限するディスクは、このパラメーターを変更すると、非常に異なるスループット値を示す場合があります。
以下は、専用のKubernetesノードにマウントされたローカルディスクへのシーケンシャル書き込みの例図です(1時間のベンチマーク)。
Sequential writes bandwidth¶
すべてのテストが完了したら、次の方法でfioのデプロイとリソースを削除できます。
shell kubectl cnpg fio <fio-job-name> --dry-run | kubectl delete -f -fioデプロイメントの作成に使用したものと同じ名前を使用し、必要に応じて名前空間を追加してください。