Lustreサービスを使用したファイル・ストレージでのPVCのプロビジョニング
File Storage with Lustreサービスからファイル・システムをマウントすることで、Kubernetes Engine (OKE)を使用して作成したクラスタに対して永続ボリューム要求をプロビジョニングする方法をご紹介します。
Oracle Cloud Infrastructure File Storage with Lustreサービスは、AI/MLのトレーニングと推論、および高パフォーマンス・コンピューティングのニーズを満たすように設計されたフルマネージド・ストレージ・サービスです。Lustre CSIプラグインを使用して、LustreサービスでFile Storageのファイル・システムにクラスタを接続します。
File Storage with Lustreサービスを使用すると、File Storage with Lustreサービスにファイル・システムを手動で作成し、新しいファイル・システムに支えられた永続ボリューム(PV)を定義して作成し、最後に新しいPVCを定義することで、永続ボリューム要求(PVC)をプロビジョニングできます。PVCを作成すると、Kubernetes EngineはLustreサービスでFile Storageに支えられたPVにPVCをバインドします。
Lustre CSIドライバは、コンテナ・ストレージ・インタフェース(CSI)を介してLustreファイル・システムをKubernetesで使用できるようにする全体的なソフトウェアです。Lustre CSIプラグインは、Kubernetes APIサーバーとの対話とLustreボリュームのライフサイクルの管理を担当する、ドライバ内の特定のコンポーネントです。
次の点に注意してください:
- Lustre CSIドライバは、Kubernetesバージョン1.29以降を実行しているKubernetes Engineによって作成されたクラスタでサポートされています。
- Lustre CSIドライバは、Oracle Linux 8 x86およびUbuntu x86 22.04でサポートされています。
- Kubernetes Engineによって作成されたクラスタでLustreファイル・システムを使用するには、Lustreクライアント・パッケージを、ファイル・システムをマウントする必要があるワーカー・ノードにインストールする必要があります。Lustreクライアントの詳細は、Lustre File Systemのマウントおよびアクセスを参照してください。
既存のファイル・システムでのPVCのプロビジョニング
File Storage with Lustreサービスの既存のファイル・システムにPVCを作成するには(Oracle管理の暗号化キーを使用して保存データを暗号化します):
- File Storage with Lustreサービスでファイル・システムを作成し、「Oracle管理キーを使用した暗号化」暗号化オプションを選択します。Lustre File Systemの作成を参照してください。
- セキュリティ・ルールは、Lustreファイル・システムとクラスタのワーカー・ノード・サブネットの両方について、ネットワーク・セキュリティ・グループ(推奨)またはセキュリティ・リストのいずれかで作成します。作成するセキュリティ・ルールは、次のシナリオに従って、Lustreファイル・システムの相対的なネットワークの場所と、クライアントとして機能するワーカー・ノードによって異なります。
これらのシナリオ、作成するセキュリティ・ルールおよび作成場所は、Lustreを使用したファイル・ストレージ・サービスのドキュメント(必要なVCNセキュリティ・ルールを参照)で詳しく説明されています。
- 次のように、File Storage with Lustreサービスでファイル・システムによってバックアップされたPVを作成します。
-
PVを定義するマニフェスト・ファイルを作成し、
csi:
セクションで次のように設定します。driver
からlustre.csi.oraclecloud.com
volumeHandle
から<MGSAddress>@<LNetName>:/<MountName>
ここでは:
<MGSAddress>
は、Lustreサービスを含むファイル・ストレージ内のファイル・システムの管理サービス・アドレスです<LNetName>
は、Lustreサービスのファイル・ストレージ内のファイル・システムのLNetネットワーク名です。<MountName>
は、Lustreサービスを使用したファイル・ストレージでのファイル・システムの作成時に使用されるマウント名です。
たとえば:
10.0.2.6@tcp:/testlustrefs
fsType
からlustre
- (オプションですが推奨)Lustre CSIドライバで、ファイルシステムをマウントする前にlnet (Lustre Network)設定を実行する場合は、
volumeAttributes.setupLnet
を"true"
にします。 -
(オプション)ワーカー・ノードのセカンダリVNICが配置されているサブネットのCIDRブロックへの
volumeAttributes.lustreSubnetCidr
。ワーカー・ノードにLustreファイル・システムへのネットワーク接続があることを確認します。例: 10.0.2.0/24ノート
ワーカー・ノードのデフォルトのインタフェース(プライマリVNIC)を使用してLustreファイル・システムに接続する場合は、volumeAttributes.lustreSubnetCidr
を指定しないでください。 - (オプション)Lustreパラメータを設定する
volumeAttributes.lustrePostMountParameters
。例:... volumeAttributes: lustrePostMountParameters: '[{"*.*.*MDT*.lru_size": 11200},{"at_history" : 600}]'
たとえば、次のマニフェスト・ファイル(lustre-PV-example.yamlという名前)は、Lustreファイル・システムによってバックアップされる
lustre-pv-example
というPVを定義します。apiVersion: v1 kind: PersistentVolume metadata: name: lustre-pv-example spec: capacity: storage: 31Ti volumeMode: Filesystem accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain csi: driver: lustre.csi.oraclecloud.com volumeHandle: "10.0.2.6@tcp:/testlustrefs" fsType: lustre volumeAttributes: setupLnet: "true"
- 次のように入力して、マニフェスト・ファイルからPVを作成します。
kubectl apply -f <filename>
例:
kubectl apply -f lustre-pv-example.yaml
-
次のように入力して、PVが正常に作成されたことを確認します。
kubectl get pv <pv-name>
例:
kubectl get pv lustre-pv-example
出力例:
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE lustre-pv-example m31Ti RWX Retain Bound 56m
-
- 次のように、作成したPVによってプロビジョニングされるPVCを作成します。
- PVCを定義するマニフェスト・ファイルを作成し、次のように設定します。
storageClassName
から""
永続ストレージの静的プロビジョニングの場合、ストレージ・クラスを適用できない場合でも、storageClassName
には空の値を指定する必要があります。storageClassName
に空の値を指定しない場合、デフォルトのストレージ・クラス(oci-bv
)が使用され、エラーが発生します。volumeName
: 作成したPVの名前(lustre-pv-example
など)
たとえば、次のマニフェスト・ファイル(lustre-PVC-example.yamlという名前)は、
lustre-pv-example
という名前のPVにバインドするlustre-pvc-example
という名前のPVCを定義します。apiVersion: v1 kind: PersistentVolumeClaim metadata: name: lustre-pvc-example spec: accessModes: - ReadWriteMany storageClassName: "" volumeName: lustre-pv-example resources: requests: storage: 31Ti
requests: storage:
要素はPVCのマニフェスト・ファイルに存在する必要があり、その値はPVのマニフェスト・ファイルのcapacity: storage:
要素に指定された値と一致する必要があります。それ以外に、requests: storage:
要素の値は無視されます。 - 次のように入力して、マニフェスト・ファイルからPVCを作成します。
kubectl apply -f <filename>
例:kubectl apply -f lustre-pvc-example.yaml
-
次のように入力して、PVCが正常に作成され、PVにバインドされていることを確認します:
kubectl get pvc <pvc-name>
例:
kubectl get pvc lustre-pvc-example
出力例:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE lustre-pvc-example Bound lustre-pv-example 31Ti RWX 57m
PVCは、File Storage with Lustreサービス・ファイル・システムによってバックアップされたPVにバインドされます。データは、Oracleによって管理される暗号化キーを使用して、保存時に暗号化されます。
- PVCを定義するマニフェスト・ファイルを作成し、次のように設定します。
- デプロイメントなどの他のオブジェクトを作成する場合は、新しいPVCを使用します。例:
- 次のように、lustre-app-example-deployment.yamlという名前のマニフェストを作成して、
lustre-pvc-example
PVCを使用するlustre-app-example-deployment
という名前のデプロイメントを定義します。apiVersion: apps/v1 kind: Deployment metadata: name: lustre-app-example-deployment spec: selector: matchLabels: app: lustre-app-example replicas: 2 template: metadata: labels: app: lustre-app-example spec: containers: - args: - -c - while true; do echo $(date -u) >> /lustre/data/out.txt; sleep 60; done command: - /bin/sh image: busybox:latest imagePullPolicy: Always name: lustre-app-example volumeMounts: - mountPath: /lustre/data name: lustre-volume restartPolicy: Always volumes: - name: lustre-volume persistentVolumeClaim: claimName: lustre-pvc-example
- 次のように入力して、マニフェスト・ファイルからデプロイメントを作成します。
kubectl apply -f lustre-app-example-deployment.yaml
- 次のように入力して、デプロイメント・ポッドが正常に作成され、実行されていることを確認します:
kubectl get pods
出力例:
NAME READY STATUS RESTARTS AGE lustre-app-example-deployment-7767fdff86-nd75n 1/1 Running 0 8h lustre-app-example-deployment-7767fdff86-wmxlh 1/1 Running 0 8h
- 次のように、lustre-app-example-deployment.yamlという名前のマニフェストを作成して、
マウント・オプションを使用した既存のファイル・システムでのPVCのプロビジョニング
PVのマウント・オプションを指定することで、既存のLustreファイル・システムに対するパフォーマンスを最適化し、アクセスを制御できます。マウント・オプションを指定すると、ポッドがファイル・システムとどのように相互作用するかを微調整できます。
マウント・オプションを含めるには:
- 既存のファイル・システムでのPVCのプロビジョニングの手順に従って開始します。
- 「既存のファイル・システムでのPVCのプロビジョニング」で説明されているPVマニフェストで、ポッドによるPVのマウント方法を指定できる
spec.mountOptions
フィールドを追加します。たとえば、「既存のファイル・システムでのPVCのプロビジョニング」に示されているlustre-pv-example.yamlマニフェスト・ファイルでは、次のように
mountOptions
フィールドを含めることができます。apiVersion: v1 kind: PersistentVolume metadata: name: lustre-pv-example spec: capacity: storage: 31Ti volumeMode: Filesystem accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain mountOptions: - ro csi: driver: lustre.csi.oraclecloud.com volumeHandle: "10.0.2.6@tcp:/testlustrefs" fsType: lustre volumeAttributes: setupLnet: "true"
この例では、
mountOptions
フィールドがro
に設定されており、ポッドがファイル・システムへの読取り専用アクセス権を持つことを示します。PVマウント・オプションの詳細は、Kubernetesドキュメントの永続ボリュームを参照してください。
既存のファイル・システムでの保存データの暗号化
File Storage with Lustreサービスでは、保存されているデータは常に、デフォルトでOracle管理の暗号化キーを使用して暗号化されます。ただし、Vaultサービスで自分を管理している独自のマスター暗号化キーを使用して保存中の暗号化を指定するオプションがあります。
Oracle管理の暗号化キーを使用するLustreファイル・システムまたは自分で管理する独自のマスター暗号化キーを使用したファイル・ストレージの作成の詳細は、ファイル・システムの暗号化の更新を参照してください。