コントローラーのスケーラビリティ
Tridentは、複数のストレージドライバ間での並行処理を改善することで、コントローラのスケーラビリティを向上させます。お客様は、どの Trident ドライバが一般提供時にコントローラのスケーラビリティをサポートし、どのドライバが Trident 26.02 でテクニカルプレビューとして利用可能かを確認できます。これにより、スケーラブルな Kubernetes 環境において、十分な情報に基づいた導入の意思決定と適切なリスク管理が可能になります。
主要な概念と定義
コントローラーのスケーラビリティ
コントローラーのスケーラビリティとは、Trident コントローラーが、複数のストレージ操作を単一のロックの背後で直列化するのではなく、並列に処理できる能力を指します。これらの操作には、ボリュームの作成、削除、サイズ変更、スナップショットの作成と削除、ボリュームの公開と非公開、およびバックエンド管理が含まれます。
コントローラーのスケーラビリティが有効になっている場合、異なるボリュームおよびバックエンドに対する操作が同時に実行されます。これにより、スループットが向上し、PersistentVolumeClaim および VolumeSnapshot の同時操作数が多い環境でのエンドツーエンドの操作時間が短縮されます。
コントローラーのスケーラビリティサポート
Tridentは、ストレージドライバに応じて異なる成熟度レベルでコントローラのスケーラビリティをサポートします。
一般提供
以下のドライバは、Trident 26.02 の一般提供開始時点でコントローラのスケーラビリティをサポートしています:
-
ontap-san -
ontap-nas -
google-cloud-netapp-volumes
|
|
`google-cloud-netapp-volumes`と `google-cloud-netapp-volumes-san`のドライバは異なります。 `google-cloud-netapp-volumes`のみがサポートされています。バックエンド構成または例では `google-cloud-netapp-volumes-san`を使用しないでください。 |
コントローラーのスケーラビリティを有効にする
コントローラーのスケーラビリティは、 `enableConcurrency`設定オプションによって制御されます。このオプションは、Trident のインストール時または既存のデプロイメントを更新することで、明示的に有効にする必要があります。
Tridentオペレーターの配置
Tridentオペレータでコントローラのスケーラビリティを有効にするには、 `TridentOrchestrator`カスタムリソースで `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}}'
設定が適用されたことを確認します。
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`ベースのデプロイメントでコントローラーのスケーラビリティを有効にするには、アンインストールしてからフラグを使用して再インストールしてください:
tridentctl uninstall -n trident
tridentctl install -n trident --enable-concurrency
コントローラーのスケーラビリティが有効になっていることを確認します
コントローラーのスケーラビリティを有効にした後、コントローラーポッドのログを確認して、Trident コントローラーが同時実行を有効にした状態で動作していることを確認します:
kubectl logs -n trident deploy/trident-controller | grep -i concurrency
同時実行が有効になっていることを示すログエントリが表示されるはずです。
技術プレビュー
以下のドライバーは、Trident 26.02 においてコントローラーのスケーラビリティをテクニカルプレビューとしてサポートしています:
-
nas-eco -
san-eco
これらのドライバーについて:
-
コントローラーの並行処理は評価およびテストに利用可能です。
-
今後のリリースでは動作が変わる可能性があります
-
本番環境での使用は推奨されません
並行動作
コントローラーのスケーラビリティが有効になっている場合:
-
Tridentは、単一のグローバルロックをリソースごとのきめ細かいロックに置き換えます
-
同じリソースを変更する操作は、データの一貫性を維持するために直列化されます。
-
リソースから読み取りのみを行う操作は、そのリソースに対する他の読み取り操作と同時に実行できます。
-
Trident は、バックエンドストレージシステムへの過負荷を防ぐため、管理 LIF ごとの同時 ONTAP API リクエスト数を 20 件に制限します。
-
複数のバックエンドが同じ管理 LIF を共有する場合、この 20 リクエストの制限も共有されます。
既知の制限事項と考慮事項
コントローラーのスケーラビリティに関しては、以下の点を考慮する必要があります。
-
並行処理はTridentコントローラによって内部的に管理されます
-
このリリースでは、ユーザーが設定可能な同時実行制限はありません。
-
全体のスループットは以下によって異なります:
-
使用中のストレージドライバ
-
バックエンドの応答性
-
Kubernetes APIサーバーのパフォーマンス
-
-
高い同時実行性はバックエンドストレージシステムへの負荷を増加させる可能性があります
注意点と制限事項
以下の制限が Trident 26.02 に適用されます:
-
コントローラの拡張性動作は、すべてのドライバで同一ではありません。
-
テクニカルプレビュー版ドライバーでは、以下の現象が発生する可能性があります。
-
高負荷時の性能が不安定
-
リリース間の動作の変化
-
-
並列実行のため、同時実行操作のデバッグはより複雑になる可能性があります。
-
メトリクスとログには、インターリーブされた操作出力が表示される場合があります
推奨
-
高い拡張性を必要とする本番環境では、一般提供版(GA)ドライバーを使用してください。
-
非本番環境でテクニカルプレビュー版ドライバーを評価する
-
大規模運用時のバックエンドとコントローラーのパフォーマンスを監視する
-
自動化スクリプトでは、操作の順序を仮定しないようにしてください。