コントローラのスケーラビリティ
Tridentは、複数のストレージドライバ間での同時実行性を向上させることで、コントローラのスケーラビリティを改善します。コントローラのスケーラビリティを有効にすると、Tridentコントローラはストレージ操作を直列処理するのではなく並列処理するため、同時実行操作が多いKubernetes環境でのスループットが向上します。
デプロイする前に、Trident 26.06において、どの Trident ドライバーが一般提供時にコントローラのスケーラビリティをサポートし、どのドライバーがテクニカルプレビューとして利用可能かを確認してください。これにより、十分な情報に基づいたデプロイの意思決定を行い、リスクを管理することができます。コントローラのスケーラビリティは、デフォルトでは無効になっています。
主要な概念と定義
コントローラのスケーラビリティ
コントローラーのスケーラビリティとは、Trident コントローラが、複数のストレージ操作を単一のロックの背後で直列化するのではなく、並列に処理できる能力のことです。これらの操作には、ボリュームの作成、削除、サイズ変更、スナップショットの作成と削除、ボリュームの公開と非公開、およびバックエンド管理が含まれます。
コントローラーのスケーラビリティを有効にすると、異なるボリュームやバックエンドでの操作が同時に実行されます。これにより、PersistentVolumeClaimおよびVolumeSnapshotの同時操作数が多い環境でのスループットが向上し、エンドツーエンドの操作時間が短縮されます。
デフォルトの動作(シリアルモード)
デフォルトでは、Tridentコントローラーは一度に1つの操作を処理します。作成、削除、サイズ変更、またはスナップショットの各リクエストは、Tridentが次の処理を開始する前に完了します。シリアルモードはすべてのインストールでサポートされているデフォルトであり、設定は不要です。
ほとんどのワークロードでは、シリアルモードで十分です。コントローラーのスケーラビリティを有効にするのは、処理量が増加した結果、シリアル処理でバックログが発生した場合のみにしてください。
コントローラのスケーラビリティサポート
Tridentは、さまざまなストレージドライバに対して、異なる成熟度レベルでコントローラの拡張性をサポートします。
一般提供
以下のドライバは、Trident 26.06 の一般提供開始時点でコントローラのスケーラビリティをサポートしています:
-
「 ontap - san 」
-
「 ONTAP - NAS 」
-
「 ONTAP - NAS - エコノミー」
-
「 ONTAP - SAN - エコノミー」
-
google-cloud-netapp-volumes -
「 azure-NetApp-files 」と入力します
-
「 olidfire -san 」
|
|
`google-cloud-netapp-volumes`と `google-cloud-netapp-volumes-san`のドライバーは異なります。Tridentは `google-cloud-netapp-volumes`のみをサポートします。バックエンドの設定や例では `google-cloud-netapp-volumes-san`を使用しないでください。 |
テクニカルプレビュー
以下のドライバは、Trident 26.06においてテクニカルプレビュー機能としてコントローラのスケーラビリティをサポートしています:
-
asa-r2(SANおよびNVMe)
このドライバーには以下の制限があります:
-
コントローラの並行処理機能は、評価およびテスト目的でのみ利用可能です。
-
動作はリリースごとに変化する可能性があります。
-
NetApp は実稼働環境での使用を推奨しません。
enableConcurrency の仕組み
`enableConcurrency`を `true`に設定すると、Tridentはコントローラが管理するすべてのバックエンドに並行処理を適用します。この設定は、すべてのバックエンドに同時に適用されます。個々のバックエンドや個々のドライバーに対して有効にすることはできません。
設定済みのバックエンドはすべて、一般提供版またはテクニカルプレビュー版のリストに掲載されているドライバを使用する必要があります。バックエンドがサポートされていないドライバを使用している場合、Trident は起動せず、Trident はサポートされていないドライバを使用するバックエンドを追加しません。
起動を復元するには、サポートされていないドライバを使用しているバックエンドを削除または再構成するか、コントローラの拡張性を無効にしてください。
有効にする前に
|
|
コントローラーのスケーラビリティを有効にする前に、設定されているすべてのバックエンドが、一般提供版またはテクニカルプレビュー版のリストに含まれるドライバーを使用していることを確認してください。バックエンドがサポートされていないドライバーを使用している場合、この機能を有効にした後、Trident は起動しません。 |
コントローラーのスケーラビリティを有効にするかどうかは、以下の表を参考にしてください。
| お使いの環境が | 操作 |
|---|---|
サポートされているドライバーのみを使用し、コントローラー操作のバックログが発生します |
コントローラーのスケーラビリティを有効にする。 |
サポートされていないドライバーを使用する |
デフォルトのシリアルモードを維持します。コントローラーのスケーラビリティを有効にしないでください。 |
処理量が少なく、バックログなしで対応できます。 |
デフォルトのシリアルモードを維持します。 |
コントローラのスケーラビリティを有効にする
この `enableConcurrency`設定オプションは、コントローラーのスケーラビリティを制御します。このオプションは、Trident のインストール時、または既存のデプロイメントを更新する際に、明示的に有効にする必要があります。
Trident オペレータの導入
Trident operatorでコントローラの拡張性を有効にするには、 `TridentOrchestrator`カスタムリソース(CR)で `enableConcurrency`を `true`に設定します。
新規インストール
`TridentOrchestrator` CR を作成または編集し、 `enableConcurrency` を `true` に設定します:
apiVersion: trident.netapp.io/v1
kind: TridentOrchestrator
metadata:
name: trident
spec:
namespace: trident
enableConcurrency: true
CRを適用します。
kubectl apply -f tridentorchestrator_cr.yaml
既存のインストール
既存の TridentOrchestrator CR にパッチを適用してコントローラーのスケーラビリティを有効にします:
kubectl patch torc trident --type=merge -p '{"spec":{"enableConcurrency":true}}'
Trident が設定を適用したことを確認します:
kubectl get torc trident -o jsonpath='{.status.currentInstallationParams.enableConcurrency}'
Helm デプロイメント
Helmでコントローラーのスケーラビリティを有効にするには、 `enableConcurrency`の値を `true`に設定します。
新規インストール
helm install trident netapp-trident/trident-operator --namespace trident --create-namespace --set enableConcurrency=true
既存のインストール
helm upgrade trident netapp-trident/trident-operator --namespace trident --set enableConcurrency=true
または、カスタム `values.yaml`ファイルで `enableConcurrency`を `true`に設定します:
# values.yaml
enableConcurrency: true
次に、値ファイルを使用してインストールまたはアップグレードします。
helm install trident netapp-trident/trident-operator --namespace trident --create-namespace -f values.yaml
tridentctl デプロイメント
`tridentctl`でコントローラのスケーラビリティを有効にするには、インストール時に `--enable-concurrency`フラグを渡します。
新規インストール
tridentctl install -n trident --enable-concurrency
既存のインストール
既存の `tridentctl`デプロイメントでコントローラーのスケーラビリティを有効にするには、Trident をアンインストールし、次のフラグを付けて再インストールしてください:
tridentctl uninstall -n trident
tridentctl install -n trident --enable-concurrency
コントローラーのスケーラビリティが有効になっていることを確認します。
コントローラのスケーラビリティを有効にした後、Trident コントローラが同時実行を有効にして動作していることを確認してください。コントローラポッドのログを確認してください:
kubectl logs -n trident deploy/trident-controller | grep -i concurrency
出力には、並行処理が有効になっていることを確認するログエントリが含まれています。
同時実行動作
コントローラーのスケーラビリティが有効になっている場合、Tridentコントローラーは以下の動作を適用します:
-
Tridentは、単一のグローバルロックをリソースごとのきめ細かいロックに置き換えます。
-
Tridentは、同じリソースを変更する操作を直列化することで、データの一貫性を維持します。
-
リソースから読み取りのみを行う操作は、そのリソースに対する他の読み取り操作と並行して実行されます。
-
Tridentは、バックエンドストレージシステムの過負荷を防ぐため、管理LIFあたりの同時ONTAP APIリクエスト数を20に制限します。
-
複数のバックエンドが同じ管理LIFを共有している場合、この20リクエストの制限も共有されます。
注意点と制限事項
Trident 26.06 のコントローラのスケーラビリティには、以下の考慮事項が適用されます:
-
コントローラーのスケーラビリティは、一般提供版およびテクニカルプレビュー版のリストに掲載されているドライバーのみをサポートします。詳細については、有効にする前にを参照してください。
-
Tridentコントローラーは内部的に並行処理を管理します。このリリースでは、ユーザーが設定可能な同時実行制限は提供されていません。
-
全体の処理能力は、使用するストレージドライバ、バックエンドの応答性、およびKubernetes APIサーバーのパフォーマンスに依存します。
-
同時接続数が多いと、バックエンドのストレージシステムへの負荷が増加する可能性があります。
-
コントローラの拡張性に関する動作は、すべてのドライバで同一ではありません。
-
テクニカルプレビュー版のドライバーは、高負荷時にパフォーマンスが不安定になる場合があり、リリースごとに動作が変わる可能性があります。
-
並列実行のため、同時実行処理のデバッグはより複雑になる場合があります。メトリクスとログには、インターリーブされた操作出力が表示される場合があります。
推奨
コントローラーのスケーラビリティを有効にする前に、以下の手順を完了してください。
-
設定されているすべてのバックエンドが、一般提供版またはテクニカルプレビュー版のリストに掲載されているドライバを使用していることを確認してください。
-
本番環境に適用する前に、非本番環境のクラスターで変更内容をテストしてください。
-
変更を適用した後、コントローラーのスケーラビリティが有効になっていることを確認してください。
コントローラーのスケーラビリティを運用する際には、以下の一般的な推奨事項を適用してください。
-
高い拡張性が求められる本番環境では、汎用ドライバを使用してください。
-
テクニカルプレビュー版ドライバーは、本番環境以外でのみ評価してください。
-
大規模運用を行う際は、バックエンドとコントローラーのパフォーマンスを監視してください。
-
自動化スクリプトでは、操作の順序を前提としないでください。