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をLustreサービスとともに使用して、永続ボリューム要求(PVC)を2つの方法でプロビジョニングできます:
- 新しいストレージクラスを定義および作成し、そのストレージクラスを参照するPVCを定義および作成します。PVCを作成すると、Lustre CSIプラグインによって、新しいLustreファイル・システムと新しいファイル・システムによってバックアップされた新しい永続ボリュームの両方が動的に作成されます。「CSIボリューム・プラグインを使用した新しいLustre File SystemへのPVCのプロビジョニング」を参照してください。
- Lustreサービスを使用してファイル・ストレージにファイル・システムを手動で作成し、新しいファイル・システムに支えられた永続ボリューム(PV)を定義して作成し、最後に新しいPVCを定義します。PVCを作成すると、Kubernetes EngineはLustreサービスを使用してFile Storageによって支えられたPVにPVCをバインドします。「既存のLustre File SystemへのPVCのプロビジョニング」を参照してください
Lustre CSIドライバは、コンテナ・ストレージ・インタフェース(CSI)を介してLustreファイル・システムをKubernetesで使用できるようにする全体的なソフトウェアです。Lustre CSIプラグインは、Kubernetes APIサーバーとの対話とLustreボリュームのライフサイクルの管理を担当する、ドライバ内の特定のコンポーネントです。
次の点に注意してください:
- Lustre CSIプラグインを使用して新しいファイル・システムを動的に作成する場合は、CSIプラグインが作成する永続ボリュームまたはLustreファイル・システム・オブジェクトを手動で更新または削除しないでください。
- CSIボリューム・プラグインによって動的に作成されるLustreファイル・システムには、
csi-lustre-で始まる名前が付けられます。 - CSIボリューム・プラグインによって動的に作成されるLustreファイル・システムは、コンソールに表示されます。ただし、動的に作成されたこれらのリソースを変更するためにコンソール(またはOracle Cloud Infrastructure CLIまたはAPI)を使用しないでください。CSIボリューム・プラグインによって動的に作成されるOracle Cloud Infrastructureリソースに対する変更は、Kubernetesオブジェクトと調整されません。
- ボリューム拡張、スナップショット、クローンなどの一部の高度な機能は、現在、動的にプロビジョニングされたLustreファイル・システムでは使用できません。
- CSIボリュームプラグインによって作成されたファイルシステムによってバックアップされたPVにバインドされたPVCを削除し、リクレイムポリシーがDeleteに設定されている場合、PVと Lustreファイルシステムの両方が削除されます。リクレイムポリシーがRetainの場合、PVは削除されません。
- Lustre CSIドライバを使用して、動的に作成されたLustreファイル・システムにPVCをプロビジョニングすることは、Kubernetesバージョン1.32以降を実行しているKubernetes Engineによって作成されたクラスタでサポートされます。Lustre CSIドライバを使用して既存のLustreファイル・システムにPVCをプロビジョニングすることは、Kubernetesバージョン1.29以降を実行しているKubernetes Engineによって作成されたクラスタでサポートされます。
- Lustre CSIドライバは、Oracle Linux 8 x86およびUbuntu x86 22.04でサポートされています。
- Kubernetes Engineによって作成されたクラスタでLustreファイル・システムを使用するには、Lustreクライアント・パッケージを、ファイル・システムをマウントする必要があるワーカー・ノードにインストールする必要があります。Lustreクライアントの詳細は、Lustre File Systemのマウントおよびアクセスを参照してください。
- データは、Oracleまたはユーザーが管理する暗号化キーを使用して、リストア時に暗号化されます。
- Oracle Cloud Infrastructure File Storage with Lustreは、LustreドキュメントのFile Storageの可用性に示されているリージョンでのみ使用できます。
CSIボリューム・プラグインを使用した新しいLustre File SystemへのPVCのプロビジョニング
CSIボリューム・プラグインによって動的に作成される新しいLustreファイル・システムにPVCをプロビジョニングする場合は、次の前提条件が適用されます。
- CSIボリューム・プラグインによって動的に作成される新しいファイル・システムにPVCをプロビジョニングするには、クラスタでKubernetes 1.32以降が実行されている必要があります。
-
CSIボリューム・プラグインがLustreリソースを作成および管理できるようにするには、適切なIAMポリシーが存在する必要があります。例:
ALLOW any-user to manage lustre-file-family in compartment <compartment-name> where request.principal.type = 'cluster' ALLOW any-user to use virtual-network-family in compartment <compartment-name> where request.principal.type = 'cluster' -
ノード・プール、サブネットまたはファイル・システムが属するコンパートメントがクラスタが属するコンパートメントと異なる場合、CSIボリューム・プラグインが適切な場所にアクセスできるようにするには、IAMポリシーが存在する必要があります。例:
ALLOW any-user to manage lustre-file-family in TENANCY where request.principal.type = 'cluster'ALLOW any-user to use virtual-network-family in TENANCY where request.principal.type = 'cluster' -
Vaultサービスから特定のユーザー管理マスター暗号化キーを指定して、リストア時にデータを暗号化するには、適切なIAMポリシーが存在して、Lustreサービスでファイル・ストレージがそのマスター暗号化キーにアクセスできるようにする必要があります。Updating File System Encryptionを参照してください。
- Lustreクライアント・パッケージは、Lustreファイル・システムをマウントする必要があるすべてのワーカー・ノードにインストールする必要があります。
File Storage with LustreサービスのCSIボリューム・プラグインによって動的に作成された新しいLustreファイル・システムにPVCを動的にプロビジョニングするには:
- セキュリティ・ルールは、Lustreファイル・システムとクラスタのワーカー・ノード・サブネットの両方について、ネットワーク・セキュリティ・グループ(推奨)またはセキュリティ・リストのいずれかで作成します。
作成するセキュリティ・ルールは、次のシナリオに従って、Lustreファイル・システムの相対的なネットワークの場所と、クライアントとして機能するワーカー・ノードによって異なります。
これらのシナリオ、作成するセキュリティ・ルールおよび作成場所は、Lustreを使用したファイル・ストレージ・サービスのドキュメント(必要なVCNセキュリティ・ルールを参照)で詳しく説明されています。
lustre.csi.oraclecloud.comプロビジョナを使用する新しい記憶域クラスを定義します。- マニフェスト・ファイル(たとえば、lustre-dyn-st-class.yamlという名前のファイル)を作成し、新しいストレージ・クラスの名前を指定し、必須パラメータとオプション・パラメータの値を指定します。
kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: <storage-class-name> provisioner: lustre.csi.oraclecloud.com parameters: availabilityDomain: <ad-name> compartmentId: <compartment-ocid> # optional subnetId: <subnet-ocid> performanceTier: <value> fileSystemName: <name> # optional kmsKeyId: <key-ocid> # optional nsgIds: '["<nsg-ocid>"]' # optional rootSquashEnabled: "<true | false>" # optional rootSquashUid: "<value>" # optional rootSquashGid: "<value>" # optional rootSquashClientExceptions: '["<ip-address>"]' # optional oci.oraclecloud.com/initial-defined-tags-override: '{"<tag-namespace>": {"<tag-key>": "<tag-value>"}}' oci.oraclecloud.com/initial-freeform-tags-override: '{"<tag-key>": "<tag-value>"}' setupLnet: "<true | false>" # optional lustreSubnetCidr: "<cidr-block>" # optional lustrePostMountParameters: '[{"<parameter1>": <value>},{"<parameter2>": <value>}]' # optionalここでは:
name: <storage-class-name>: 必須。ストレージクラスに付ける名前。availabilityDomain: <ad-name>: 必須。新しいLustreファイル・システムを作成する可用性ドメインの名前。たとえば、availabilityDomain: US-ASHBURN-AD-1です。使用する可用性ドメイン名を確認するには、oci iam availability-domain listCLIコマンドを実行します(または、ListAvailabilityDomains操作を使用します)。詳細は、テナンシの可用性ドメイン名を参照してください。compartmentId: <compartment-ocid>: オプション。新しいLustreファイル・システムが属するコンパートメントのOCID。指定しない場合、デフォルトでクラスタと同じコンパートメントになります。たとえば、compartmentId: ocid1.compartment.oc1..aaa______t6qsubnetId: <subnet-ocid>: 必須。新しいLustreファイル・システムをマウントするサブネットのOCID。たとえば、subnetId: ocid1.subnet.oc1.iad.aaaa______kfaperformanceTier: <value>: 必須。Lustreファイル・システムのパフォーマンス層。指定できる値:MBPS_PER_TB_125MBPS_PER_TB_250MBPS_PER_TB_500MBPS_PER_TB_1000
fileSystemName: <name>: オプション。Lustreファイル・システム名(最大8文字)。指定しない場合、デフォルト値がランダムに生成されて使用されます。たとえば、fileSystemName: aiworkfskmsKeyId: <key-ocid>: オプション。管理するマスター暗号化キーのOCIDで、リストア時にデータを暗号化します。指定しない場合、データは、Oracleによって管理される暗号化キーを使用して、リストア時に暗号化されます。たとえば、kmsKeyId: ocid1.key.oc1.iad.ann______usjnsgIds: '["<nsg-ocid>"]': オプション。Lustreファイル・システムに関連付ける最大5つのネットワーク・セキュリティ・グループOCIDsのJSON配列。たとえば、nsgIds: '["ocid1.nsg.oc1.iad.aab______fea"]'rootSquashEnabled: "<true | false>": オプション。クライアントからのルート・アクセスを制限するには、trueに設定します。デフォルトはfalseです。rootSquashUid: "<value>": オプション。ルート・スカッシュが有効な場合、ルート操作はこのUIDにマップされます。デフォルトは65534.です。rootSquashGid: "<value>": オプション。ルート・スカッシュが有効な場合、ルート操作はこのGIDにマップされます。デフォルトは65534です。rootSquashClientExceptions: '["<ip-address>"]': オプション。ルート・スカッシュの対象とならないIPアドレスまたはCIDRブロックのJSON配列(最大10エントリ)。たとえば、rootSquashClientExceptions: '["10.0.2.4"]'です。oci.oraclecloud.com/initial-defined-tags-override: '{"<tag-namespace>": {"<tag-key>": "<tag-value>"}}'オプション。新しいファイルシステムの定義済みタグを指定します。たとえば、oci.oraclecloud.com/initial-defined-tags-override: '{"Org": {"CostCenter": "AI"}}'1つのコンパートメントに属するタグ・ネームスペースから、別のコンパートメントに属するファイルシステム・リソースに定義済のタグを適用するには、クラスタがタグ・ネームスペースを使用できるようにするポリシー・ステートメントを含める必要があります。クラスタおよびタグ・ネームスペースが異なるコンパートメントにある場合の追加IAMポリシーを参照してください。
oci.oraclecloud.com/initial-freeform-tags-override: '{"<tag-key>": "<tag-value>"}'オプション。新しいファイル・システムのフリーフォーム・タグを指定します。たとえば、oci.oraclecloud.com/initial-freeform-tags-override: '{"Project": "ML"}'setupLnet: "<true | false>": オプション。Lustre CSIドライバがマウント前にLustre Network (LNet)設定を実行する必要がある場合は、trueに設定します。setupLnetパラメータを含め、"true"を設定することを強くお薦めします。lustreSubnetCidr: "<cidr-block>": オプション。Lustreトラフィックに使用されるワーカー・ノードのソース・ネットワーク範囲に設定します。- 使用する場合:ワーカー・ノードがセカンダリVNICを使用してLustreファイル・システムに接続する場合にのみ、ネットワーク範囲を指定します。このCIDRは、そのセカンダリVNICのサブネット・ブロック(
10.0.2.0/24など)と一致する必要があります。 - 省略するタイミング:ワーカー・ノードがプライマリVNIC (デフォルト・インタフェース)をLustre接続に使用している場合は、ネットワーク範囲を指定しないでください。
- 重要:このパラメータは、Lustreファイル・システム自体の配置場所を定義するLustreファイル・システムの
subnetIdパラメータとは異なります。
- 使用する場合:ワーカー・ノードがセカンダリVNICを使用してLustreファイル・システムに接続する場合にのみ、ネットワーク範囲を指定します。このCIDRは、そのセカンダリVNICのサブネット・ブロック(
lustrePostMountParameters: '[{"<parameter1>": <value>},{"<parameter2>": <value>}]': オプション。マウント後に設定する拡張Lustreクライアント・パラメータのJSON配列。たとえば、lustrePostMountParameters: '[{"*.*.*MDT*.lru_size": 11200},{"at_history": 600}]'
例:
kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: lustre-dyn-storage provisioner: lustre.csi.oraclecloud.com parameters: availabilityDomain: US-ASHBURN-AD-1 compartmentId: ocid1.compartment.oc1..aaa______t6q # optional subnetId: ocid1.subnet.oc1.iad.aaaa______kfa performanceTier: MBPS_PER_TB_250 fileSystemName: aiworkfs # optional kmsKeyId: ocid1.key.oc1.iad.ann______usj # optional nsgIds: '["ocid1.nsg.oc1.iad.aab______fea"]' # optional oci.oraclecloud.com/initial-defined-tags-override: '{"Org": {"CostCenter": "AI"}}' oci.oraclecloud.com/initial-freeform-tags-override: '{"Project": "ML"}' setupLnet: "true" # optional - 次のように入力して、マニフェスト・ファイルから記憶域クラスを作成します。
kubectl create -f <filename>例:
kubectl create -f lustre-dyn-st-class.yaml
- マニフェスト・ファイル(たとえば、lustre-dyn-st-class.yamlという名前のファイル)を作成し、新しいストレージ・クラスの名前を指定し、必須パラメータとオプション・パラメータの値を指定します。
- 次のように、File Storage with Lustreサービスで新しいファイル・システムによってプロビジョニングされるPVCを作成します。
- PVCを定義するマニフェストファイルを作成します。
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: <pvc-name> spec: accessModes: - <ReadWriteMany|ReadOnlyOncePod> storageClassName: "<storage-class-name>" resources: requests: storage: <capacity>ここでは:
-
name: <pvc-name>: 必須。たとえば、lustre-dynamic-claim -
storageClassName: "<storage-class-name>": 必須。前に定義したストレージクラスの名前。たとえば、lustre-dyn-storageです。 -
accessModes: - <ReadWriteMany|ReadOnlyOncePod>: 必須。ファイル・システムをポッドでマウントおよび共有する方法を指定します。現在、ReadWriteManyおよびReadOnlyOncePodがサポートされています。たとえば、ReadWriteManyです。 -
storage: <capacity>: 必須。この値は、31.2T(または31200G)以上である必要があります。大容量を指定することはできますが、容量に依存する特定の増分を使用する必要があります(Increasing File System Capacityを参照)。たとえば、31.2Tです。
たとえば、次のマニフェスト・ファイル(
lustre-dyn-claim.yamlという名前)は、lustre-dyn-storageストレージ・クラスで定義されたファイル・システムによってプロビジョニングされるlustre-dynamic-claimという名前のPVCを定義します。apiVersion: v1 kind: PersistentVolumeClaim metadata: name: lustre-dynamic-claim spec: accessModes: - ReadWriteMany storageClassName: "lustre-dyn-storage" resources: requests: storage: 31.2T -
- 次のように入力して、マニフェスト・ファイルからPVCを作成します。
kubectl create -f <filename>例:kubectl create -f lustre-dyn-claim.yaml
新しいPVCが作成されます。CSIボリューム・プラグインは、Lustreサービスを使用してFile Storageに新しい永続ボリューム(PV)と新しいファイル・システムを作成します。新しいLustreファイル・システムの作成には少なくとも10分かかり、ファイル・システムのサイズによっては時間がかかる場合があります。コンソールまたはCLIを使用して、新しいLustreファイル・システムが作成されたことを確認します(ファイル・システムのリストを参照)。
新しいPVCは、新しいPVにバインドされます。データは、Oracleまたはユーザーが管理する暗号化キーを使用して、リストア時に暗号化されます。
- PVCを定義するマニフェストファイルを作成します。
-
次のように入力し、PVCが新しい永続ボリュームにバインドされていることを確認:
kubectl get pvc出力例:
NAME STATUS VOLUME CAPACITY ACCESSMODES STORAGECLASS AGE lustre-dynamic-claim Bound csi-lustre-<unique_ID> 30468750000Ki RWX lustre-dyn-storage 4m -
ポッドなどの他のオブジェクトを作成する場合は、新しいPVCを使用します。たとえば、次のポッド定義から新しいポッドを作成できます。
apiVersion: v1 kind: Pod metadata: name: lustre-dynamic-app spec: containers: - name: aiworkload image: busybox:latest command: ["sleep", "3600"] volumeMounts: - name: lustre-vol mountPath: /mnt/lustre volumes: - name: lustre-vol persistentVolumeClaim: claimName: lustre-dynamic-claim -
前のステップの例で説明したように、新しいポッドを作成した後、次のように入力して、ポッドが新しいPVCを使用していることを確認できます。
kubectl describe pod lustre-dynamic-app
PVCの作成時に新しいPVと新しいファイルシステムを動的に作成するという頻繁な要件が予測される場合は、作成した新しいストレージクラスを新しいPVCをプロビジョニングするためのデフォルトのストレージクラスとして使用するように指定できます。詳細については、Kubernetesのドキュメントを参照してください。
新しいLustre File Systemでのリストア時のデータの暗号化
File Storage with Lustreサービスでは、保存されているデータは常に、デフォルトでOracle管理の暗号化キーを使用して暗号化されます。ただし、Vaultサービスで自分を管理している独自のマスター暗号化キーを使用して保存中の暗号化を指定するオプションがあります。
リストア時にデータを暗号化する方法に応じて、次の適切な手順に従います。
- CSIボリューム・プラグインを使用して、Oracle管理暗号化キーを使用してリストア時にデータを暗号化する新しいLustreファイル・システムを動的に作成するには、「CSIボリューム・プラグインを使用した新しいLustre File SystemへのPVCのプロビジョニング」のステップに従って、ストレージ・クラス定義に
kmsKeyId: <key-ocid>パラメータを含めないでください。データは、Oracleによって管理される暗号化キーを使用して、リストア時に暗号化されます。 - CSIボリューム・プラグインを使用して、リストア時にデータを暗号化するために管理するマスター暗号化キーを使用する新しいLustreファイル・システムを動的に作成するには、プロビジョニングのステップに従いますCSIボリューム・プラグインを使用した新しいLustre File System上のPVCは、ストレージ・クラス定義に
kmsKeyId: <key-ocid>パラメータを含めて、Vaultサービスでマスター暗号化キーのOCIDを指定します。データは、指定した暗号化キーを使用して、リストア時に暗号化されます。
既存の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"にします。 - (オプション) Lustreトラフィックに使用されるワーカー・ノードのソース・ネットワーク範囲への
volumeAttributes.lustreSubnetCidr:- 使用する場合:ワーカー・ノードがセカンダリVNICを使用してLustreファイル・システムに接続する場合にのみ、ネットワーク範囲を指定します。このCIDRは、そのセカンダリVNICのサブネット・ブロック(
10.0.2.0/24など)と一致する必要があります。 - 省略するタイミング:ワーカー・ノードがプライマリVNIC (デフォルト・インタフェース)をLustre接続に使用している場合は、ネットワーク範囲を指定しないでください。
- 重要:このパラメータは、Lustreファイル・システム自体の配置場所を定義するLustreファイル・システムの
subnetIdパラメータとは異なります。
- 使用する場合:ワーカー・ノードがセカンダリVNICを使用してLustreファイル・システムに接続する場合にのみ、ネットワーク範囲を指定します。このCIDRは、そのセカンダリVNICのサブネット・ブロック(
- (オプション)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: 31.2T 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 30468750000Ki 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: 31.2Trequests: 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 30468750000Ki RWX 57m
PVCは、File Storage with Lustreサービス・ファイル・システムによってバックアップされたPVにバインドされます。データは、Oracleによって管理される暗号化キーを使用して、保存時に暗号化されます。
- PVCを定義するマニフェスト・ファイルを作成し、次のように設定します。
- デプロイメントなどの他のオブジェクトを作成する場合は、新しいPVCを使用します。例:
- 次のように、lustre-app-example-deployment.yamlという名前のマニフェストを作成して、
lustre-pvc-examplePVCを使用する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という名前のマニフェストを作成して、
マウント・オプションを使用した既存のLustre File SystemへのPVCのプロビジョニング
PVのマウント・オプションを指定することで、既存のLustreファイル・システムに対するパフォーマンスを最適化し、アクセスを制御できます。マウント・オプションを指定すると、ポッドがファイル・システムとどのように相互作用するかを微調整できます。
マウント・オプションを含めるには:
- まず、Provisioning a PVC on an Existing Lustre File Systemの手順に従います。
- Provisioning a PVC on an Existing Lustre File Systemで説明されているPVマニフェストに、
spec.mountOptionsフィールドを追加します。これにより、PVをポッドでマウントする方法を指定できます。たとえば、Provisioning a PVC on an Existing Lustre File Systemに示すlustre-pv-example.yamlマニフェスト・ファイルで、次のように
mountOptionsフィールドを含めることができます:apiVersion: v1 kind: PersistentVolume metadata: name: lustre-pv-example spec: capacity: storage: 31.2T 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ドキュメントの永続ボリュームを参照してください。
既存のLustre File Systemでのリストア時のデータの暗号化
File Storage with Lustreサービスは、デフォルトでOracle管理暗号化キーを使用して、リストア時にデータを常に暗号化します。ただし、Vaultサービスで自分で管理する独自のマスター暗号化キーを使用して、リストア時の暗号化を指定するオプションがあります。
Oracle管理暗号化キーを使用するLustreファイル・システムでのFile Storageまたは自分で管理する独自のマスター暗号化キーの詳細は、ファイル・システム暗号化の更新を参照してください。