ストレージ構成
ネットアップポートフォリオの各ストレージプラットフォームには、コンテナ化されたアプリケーションやそうでないアプリケーションに役立つ独自の機能があります。
プラットフォームの概要
Trident は ONTAP や Element と連携1 つのプラットフォームが他のプラットフォームよりもすべてのアプリケーションとシナリオに適しているわけではありませんが、プラットフォームを選択する際には、アプリケーションのニーズとデバイスを管理するチームを考慮する必要があります。
使用するプロトコルに対応したホストオペレーティングシステムのベースラインベストプラクティスに従う必要があります。必要に応じて、アプリケーションのベストプラクティスを適用する際に、バックエンド、ストレージクラス、 PVC の設定を利用して、特定のアプリケーションのストレージを最適化することもできます。
ONTAP と Cloud Volumes ONTAP のベストプラクティス
Trident 向けに ONTAP と Cloud Volumes ONTAP を設定するためのベストプラクティスをご確認ください。
次に示す推奨事項は、 Trident によって動的にプロビジョニングされたボリュームを消費するコンテナ化されたワークロード用に ONTAP を設定する際のガイドラインです。それぞれの要件を考慮し、環境内で適切かどうかを評価する必要があります。
Trident 専用の SVM を使用
Storage Virtual Machine ( SVM )を使用すると、 ONTAP システムのテナントを分離し、管理者が分離できます。SVM をアプリケーション専用にしておくと、権限の委譲が可能になり、リソース消費を制限するためのベストプラクティスを適用できます。
SVM の管理には、いくつかのオプションを使用できます。
-
バックエンド構成でクラスタ管理インターフェイスを適切なクレデンシャルとともに指定し、 SVM 名を指定します。
-
ONTAP System Manager または CLI を使用して、 SVM 専用の管理インターフェイスを作成します。
-
NFS データインターフェイスで管理ロールを共有します。
いずれの場合も、インターフェイスは DNS にあり、 Trident の設定時には DNS 名を使用する必要があります。これにより、ネットワーク ID を保持しなくても SVM-DR などの一部の DR シナリオが簡単になります。
専用の管理 LIF または共有の管理 LIF を SVM に使用する方法は推奨されませんが、ネットワークセキュリティポリシーを選択した方法と一致させる必要があります。いずれにせよ、最大限の柔軟性を確保するためには、管理LIFにDNS経由でアクセスできるようにする必要があります。これをTridentと組み合わせて使用する必要があります "SVM-DR"。
最大ボリューム数を制限します
ONTAP ストレージシステムの最大ボリューム数は、ソフトウェアのバージョンとハードウェアプラットフォームによって異なります。正確な制限を確認するには、使用しているプラットフォームおよびONTAPバージョンに対応したを参照してください "NetApp Hardware Universe"。ボリューム数を使い果たした場合、 Trident のプロビジョニング処理だけでなく、すべてのストレージ要求に対してプロビジョニング処理が失敗します。
Tridentの `ontap-nas`ドライバと `ontap-san`ドライバは、作成されるKubernetes永続ボリューム(PV)ごとにFlexVolをプロビジョニングします。 `ontap-nas-economy`ドライバは、200 PVSごとに約1つのFlexVolumeを作成します(50~300の間で設定可能)。 `ontap-san-economy`ドライバは、100 PVSごとに約1つのFlexVolumeを作成します(50~200の間で設定可能)。Trident がストレージシステム上の使用可能なボリュームをすべて消費しないようにするには、 SVM に制限を設定する必要があります。コマンドラインから実行できます。
vserver modify -vserver <svm_name> -max-volumes <num_of_volumes>
の値 `max-volumes`は、環境に固有のいくつかの条件によって異なります。
-
ONTAP クラスタ内の既存のボリュームの数
-
他のアプリケーション用に Trident 外部でプロビジョニングするボリュームの数
-
Kubernetes アプリケーションで消費されると予想される永続ボリュームの数
`max-volumes`この値は、個 々 のONTAPノードではなく、ONTAPクラスタ内のすべてのノードにプロビジョニングされたボリュームの合計です。その結果、 ONTAP クラスタノードの Trident でプロビジョニングされたボリュームの数が、別のノードよりもはるかに多い、または少ない場合があります。
たとえば、 2 ノードの ONTAP クラスタでは、最大 2 、 000 個の FlexVol をホストできます。最大ボリューム数を 1250 に設定していると、非常に妥当な結果が得られます。ただし、SVMに1つのノードからしか割り当てられていない場合や、一方のノードから割り当てられたアグリゲートを(容量などの理由で)プロビジョニングできない場合は "アグリゲート"、Tridentでプロビジョニングされるすべてのボリュームのターゲットにもう一方のノードがなります。つまり、の値に達する前にそのノードのボリューム制限に達する可能性があり、その結果、Tridentとそのノードを使用するその他のボリューム処理の両方に影響が及ぶ可能性があり `max-volumes`ます。* クラスタ内の各ノードのアグリゲートを、 Trident が使用する SVM に同じ番号で確実に割り当てることで、この状況を回避できます。 *
Trident で作成できるボリュームの最大サイズを制限
Tridentで作成できるボリュームの最大サイズを設定するには、定義でパラメータを `backend.json`使用し `limitVolumeSize`ます。
ストレージアレイでボリュームサイズを制御するだけでなく、 Kubernetes の機能も利用する必要があります。
Tridentで作成されるFlexVolの最大サイズを制限する
ONTAPドライバSAN-EconomyドライバおよびONTAP NAS-Economyドライバのプールとして使用されるFlexVolの最大サイズを設定するには、 limitVolumePoolSize
`backend.json`定義でパラメータを使用します。
双方向 CHAP を使用するように Trident を設定します
バックエンド定義で CHAP イニシエータとターゲットのユーザ名とパスワードを指定し、 Trident を使用して SVM で CHAP を有効にすることができます。バックエンド構成のパラメータを使用して useCHAP
、TridentはCHAPを使用してONTAPバックエンドのiSCSI接続を認証します。
SVM QoS ポリシーを作成して使用します
SVM に適用された ONTAP QoS ポリシーを使用すると、 Trident でプロビジョニングされたボリュームが使用できる IOPS の数が制限されます。これにより、コンテナがTrident SVMの外部のワークロードに影響を及ぼすのを防ぎ、制御不能にすることができます "Bully を防止します"。
SVM の QoS ポリシーはいくつかの手順で作成します。正確な情報については、ご使用の ONTAP バージョンのマニュアルを参照してください。次の例は、 SVM で使用可能な合計 IOPS を 5000 に制限する QoS ポリシーを作成します。
# create the policy group for the SVM qos policy-group create -policy-group <policy_name> -vserver <svm_name> -max-throughput 5000iops # assign the policy group to the SVM, note this will not work # if volumes or files in the SVM have existing QoS policies vserver modify -vserver <svm_name> -qos-policy-group <policy_name>
また、使用しているバージョンの ONTAP でサポートされている場合は、最小 QoS を使用してコンテナ化されたワークロードへのスループットを保証することもできます。アダプティブ QoS は SVM レベルのポリシーには対応していません。
コンテナ化されたワークロード専用の IOPS は、さまざまな要素によって異なります。その中には、次のようなものがあります。
-
ストレージアレイを使用するその他のワークロード。Kubernetes 環境とは関係なく、ストレージリソースを利用するほかのワークロードがある場合は、それらのワークロードが誤って影響を受けないように注意する必要があります。
-
想定されるワークロードはコンテナで実行されます。IOPS 要件が高いワークロードをコンテナで実行する場合は、 QoS ポリシーの値が低いとエクスペリエンスが低下します。
SVM レベルで割り当てた QoS ポリシーを使用すると、 SVM にプロビジョニングされたすべてのボリュームで同じ IOPS プールが共有されることに注意してください。コンテナ化されたアプリケーションの 1 つまたは少数のに高い IOPS が必要な場合、コンテナ化された他のワークロードに対する Bully になる可能性があります。その場合は、外部の自動化を使用したボリュームごとの QoS ポリシーの割り当てを検討してください。
ONTAP バージョン 9.8 より前の場合は、 QoS ポリシーグループを SVM * only * に割り当ててください。 |
Trident の QoS ポリシーグループを作成
Quality of Service ( QoS ;サービス品質)は、競合するワークロードによって重要なワークロードのパフォーマンスが低下しないようにします。ONTAP の QoS ポリシーグループには、ボリュームに対する QoS オプションが用意されており、ユーザは 1 つ以上のワークロードに対するスループットの上限を定義できます。QoSの詳細については、を参照してください "QoSによるスループットの保証"。QoS ポリシーグループはバックエンドまたはストレージプールに指定でき、そのプールまたはバックエンドに作成された各ボリュームに適用されます。
ONTAP には、従来型とアダプティブ型の 2 種類の QoS ポリシーグループがあります。従来のポリシーグループは、最大スループット(以降のバージョンでは最小スループット)がフラットに表示されます。アダプティブ QoS では、ワークロードのサイズの変更に合わせてスループットが自動的に調整され、 TB または GB あたりの IOPS が一定に維持されます。これにより、何百何千という数のワークロードを管理する大規模な環境では大きなメリットが得られます。
QoS ポリシーグループを作成するときは、次の点に注意してください。
-
キーはバックエンド構成のブロックに
defaults`設定する必要があります `qosPolicy
。次のバックエンド設定例を参照してください。
--- version: 1 storageDriverName: ontap-nas managementLIF: 0.0.0.0 dataLIF: 0.0.0.0 svm: svm0 username: user password: pass defaults: qosPolicy: standard-pg storage: - labels: performance: extreme defaults: adaptiveQosPolicy: extremely-adaptive-pg - labels: performance: premium defaults: qosPolicy: premium-pg
-
ボリュームごとにポリシーグループを適用して、各ボリュームがポリシーグループの指定に従ってスループット全体を取得するようにします。共有ポリシーグループはサポートされません。
QoSポリシーグループの詳細については、を参照してください "ONTAP 9.8 QoS コマンド"。
ストレージリソースへのアクセスを Kubernetes クラスタメンバーに制限する
Trident によって作成される NFS ボリュームと iSCSI LUN へのアクセスを制限することは、 Kubernetes 環境のセキュリティ体制に欠かせない要素です。これにより、 Kubernetes クラスタに属していないホストがボリュームにアクセスしたり、データが予期せず変更されたりすることを防止できます。
ネームスペースは Kubernetes のリソースの論理的な境界であることを理解することが重要です。ただし、同じネームスペース内のリソースは共有可能であることが前提です。重要なのは、ネームスペース間に機能がないことです。つまり、 PVS はグローバルオブジェクトですが、 PVC にバインドされている場合は、同じネームスペース内のポッドからのみアクセス可能です。* 適切な場合は、名前空間を使用して分離することが重要です。 *
Kubernetes 環境でデータセキュリティを使用する場合、ほとんどの組織で最も懸念されるのは、コンテナ内のプロセスがホストにマウントされたストレージにアクセスできることですが、コンテナ用ではないためです。 "ネームスペース"この種の侵害を防ぐように設計されています。ただし、特権コンテナという例外が 1 つあります。
権限付きコンテナは、通常よりもホストレベルの権限で実行されるコンテナです。これらの機能はデフォルトでは拒否されないため、を使用して無効にして "ポッドセキュリティポリシー"ください。
Kubernetes と外部ホストの両方からアクセスが必要なボリュームでは、 Trident ではなく管理者が導入した PV で、ストレージを従来の方法で管理する必要があります。これにより、 Kubernetes と外部ホストの両方が切断され、ボリュームを使用していない場合にのみ、ストレージボリュームが破棄されます。また、カスタムエクスポートポリシーを適用して、 Kubernetes クラスタノードおよび Kubernetes クラスタの外部にあるターゲットサーバからのアクセスを可能にすることもできます。
専用のインフラノード(OpenShiftなど)や、ユーザアプリケーションをスケジュールできない他のノードを導入する場合は、ストレージリソースへのアクセスをさらに制限するために別 々 のエクスポートポリシーを使用する必要があります。これには、これらのインフラノードに導入されているサービス( OpenShift Metrics サービスや Logging サービスなど)のエクスポートポリシーの作成と、非インフラノードに導入されている標準アプリケーションの作成が含まれます。
専用のエクスポートポリシーを使用します
Kubernetes クラスタ内のノードへのアクセスのみを許可するエクスポートポリシーが各バックエンドに存在することを確認する必要があります。Tridentはエクスポートポリシーを自動的に作成、管理できます。これにより、 Trident はプロビジョニング対象のボリュームへのアクセスを Kubernetes クラスタ内のノードに制限し、ノードの追加や削除を簡易化します。
また、エクスポートポリシーを手動で作成し、各ノードのアクセス要求を処理する 1 つ以上のエクスポートルールを設定することもできます。
-
ONTAP CLIコマンドを使用し `vserver export-policy create`て、エクスポートポリシーを作成します。
-
ONTAP CLIコマンドを使用して、エクスポートポリシーにルールを追加します
vserver export-policy rule create
。
これらのコマンドを実行すると、データにアクセスできる Kubernetes ノードを制限できます。
アプリケーションSVMで無効にする showmount
この showmount`機能を使用すると、NFSクライアントがSVMに照会して使用可能なNFSエクスポートのリストを確認できます。Kubernetesクラスタに導入されたポッドは、データLIFに対してコマンドを実行し、使用可能なマウント(アクセスできないマウントを含む)のリストを受け取ることができます `showmount -e
。これだけではセキュリティ上の妥協ではありませんが、権限のないユーザが NFS エクスポートに接続するのを阻止する可能性のある不要な情報が提供されます。
SVMレベルのONTAP CLIコマンドを使用して無効にする必要があり `showmount`ます。
vserver nfs modify -vserver <svm_name> -showmount disabled
SolidFire のベストプラクティス
Trident に SolidFire ストレージを設定するためのベストプラクティスをご確認ください。
SolidFire アカウントを作成します
各 SolidFire アカウントは固有のボリューム所有者で、 Challenge Handshake Authentication Protocol ( CHAP ;チャレンジハンドシェイク認証プロトコル)クレデンシャルのセットを受け取ります。アカウントに割り当てられたボリュームには、アカウント名とその CHAP クレデンシャルを使用してアクセスするか、ボリュームアクセスグループを通じてアクセスできます。アカウントには最大 2 、 000 個のボリュームを関連付けることができますが、 1 つのボリュームが属することのできるアカウントは 1 つだけです。
QoS ポリシーを作成する
標準的なサービス品質設定を作成して保存し、複数のボリュームに適用する場合は、 SolidFire のサービス品質( QoS )ポリシーを使用します。
QoS パラメータはボリューム単位で設定できます。QoS を定義する 3 つの設定可能なパラメータである Min IOPS 、 Max IOPS 、 Burst IOPS を設定することで、各ボリュームのパフォーマンスが保証されます。
4KB のブロックサイズの最小 IOPS 、最大 IOPS 、バースト IOPS の値を次に示します。
IOPSパラメータ | 定義 | 最小値 | デフォルト値 | 最大値(4KB) |
---|---|---|---|---|
最小 IOPS |
ボリュームに対して保証されたレベルのパフォーマンス。 |
50 |
50 |
15000 |
最大 IOPS |
パフォーマンスはこの制限を超えません。 |
50 |
15000 |
200,000 |
バースト IOPS |
短時間のバースト時に許容される最大 IOPS 。 |
50 |
15000 |
200,000 |
Max IOPS と Burst IOPS は最大 200 、 000 に設定できますが、実際のボリュームの最大パフォーマンスは、クラスタの使用量とノードごとのパフォーマンスによって制限されます。 |
ブロックサイズと帯域幅は、 IOPS に直接影響します。ブロックサイズが大きくなると、システムはそのブロックサイズを処理するために必要なレベルまで帯域幅を増やします。帯域幅が増えると、システムが処理可能な IOPS は減少します。QoSとパフォーマンスの詳細については、を参照してください "SolidFire のサービス品質"。
SolidFire 認証
Element では、認証方法として CHAP とボリュームアクセスグループ( VAG )の 2 つがサポートされています。CHAP は CHAP プロトコルを使用して、バックエンドへのホストの認証を行います。ボリュームアクセスグループは、プロビジョニングするボリュームへのアクセスを制御します。CHAP はシンプルで拡張性に制限がないため、認証に使用することを推奨します。
Trident と強化された CSI プロビジョニングツールは、 CHAP 認証の使用をサポートします。VAG は、従来の CSI 以外の動作モードでのみ使用する必要があります。 |
CHAP 認証(イニシエータが対象のボリュームユーザであることの確認)は、アカウントベースのアクセス制御でのみサポートされます。認証に CHAP を使用している場合は、単方向 CHAP と双方向 CHAP の 2 つのオプションがあります。単方向 CHAP は、 SolidFire アカウント名とイニシエータシークレットを使用してボリュームアクセスを認証します。双方向の CHAP オプションを使用すると、ボリュームがアカウント名とイニシエータシークレットを使用してホストを認証し、ホストがアカウント名とターゲットシークレットを使用してボリュームを認証するため、ボリュームを最も安全に認証できます。
ただし、 CHAP を有効にできず VAG が必要な場合は、アクセスグループを作成し、ホストのイニシエータとボリュームをアクセスグループに追加します。アクセスグループに追加した各 IQN は、 CHAP 認証の有無に関係なく、グループ内の各ボリュームにアクセスできます。iSCSI イニシエータが CHAP 認証を使用するように設定されている場合は、アカウントベースのアクセス制御が使用されます。iSCSI イニシエータが CHAP 認証を使用するように設定されていない場合は、ボリュームアクセスグループのアクセス制御が使用されます。
詳細情報の入手方法
ベストプラクティスのドキュメントの一部を以下に示します。で最新バージョンを検索し "NetApp ライブラリ"ます。
-
ONTAP *
-
"SANアドミニストレーションガイド"(iSCSIの場合)
-
Element ソフトウェア *
-
NetApp HCI *
-
アプリケーションのベストプラクティス情報 *
すべてのアプリケーションに特定のガイドラインがあるわけではありません。NetAppチームと協力し、を使用して最新のドキュメントを見つけることが重要 "NetApp ライブラリ"です。