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を動的にプロビジョニングするには:

  1. セキュリティ・ルールは、Lustreファイル・システムとクラスタのワーカー・ノード・サブネットの両方について、ネットワーク・セキュリティ・グループ(推奨)またはセキュリティ・リストのいずれかで作成します。

    作成するセキュリティ・ルールは、次のシナリオに従って、Lustreファイル・システムの相対的なネットワークの場所と、クライアントとして機能するワーカー・ノードによって異なります。

    これらのシナリオ、作成するセキュリティ・ルールおよび作成場所は、Lustreを使用したファイル・ストレージ・サービスのドキュメント(必要なVCNセキュリティ・ルールを参照)で詳しく説明されています。

  2. lustre.csi.oraclecloud.comプロビジョナを使用する新しい記憶域クラスを定義します。
    1. マニフェスト・ファイル(たとえば、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 list CLIコマンドを実行します(または、ListAvailabilityDomains操作を使用します)。詳細は、テナンシの可用性ドメイン名を参照してください。
      • compartmentId: <compartment-ocid>: オプション。新しいLustreファイル・システムが属するコンパートメントのOCID。指定しない場合、デフォルトでクラスタと同じコンパートメントになります。たとえば、compartmentId: ocid1.compartment.oc1..aaa______t6q
      • subnetId: <subnet-ocid>: 必須。新しいLustreファイル・システムをマウントするサブネットのOCID。たとえば、subnetId: ocid1.subnet.oc1.iad.aaaa______kfa
      • performanceTier: <value>: 必須。Lustreファイル・システムのパフォーマンス層。指定できる値:
        • MBPS_PER_TB_125
        • MBPS_PER_TB_250
        • MBPS_PER_TB_500
        • MBPS_PER_TB_1000
      • fileSystemName: <name>: オプション。Lustreファイル・システム名(最大8文字)。指定しない場合、デフォルト値がランダムに生成されて使用されます。たとえば、fileSystemName: aiworkfs
      • kmsKeyId: <key-ocid>: オプション。管理するマスター暗号化キーのOCIDで、リストア時にデータを暗号化します。指定しない場合、データは、Oracleによって管理される暗号化キーを使用して、リストア時に暗号化されます。たとえば、kmsKeyId: ocid1.key.oc1.iad.ann______usj
      • nsgIds: '["<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パラメータとは異なります。
      • 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
    2. 次のように入力して、マニフェスト・ファイルから記憶域クラスを作成します。
      kubectl create -f <filename>

      例:

      kubectl create -f lustre-dyn-st-class.yaml
  3. 次のように、File Storage with Lustreサービスで新しいファイル・システムによってプロビジョニングされるPVCを作成します。
    1. 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
    2. 次のように入力して、マニフェスト・ファイルから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またはユーザーが管理する暗号化キーを使用して、リストア時に暗号化されます。

  4. 次のように入力し、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
  5. ポッドなどの他のオブジェクトを作成する場合は、新しい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
  6. 前のステップの例で説明したように、新しいポッドを作成した後、次のように入力して、ポッドが新しいPVCを使用していることを確認できます。

    kubectl describe pod lustre-dynamic-app
ヒント

PVCの作成時に新しいPVと新しいファイルシステムを動的に作成するという頻繁な要件が予測される場合は、作成した新しいストレージクラスを新しいPVCをプロビジョニングするためのデフォルトのストレージクラスとして使用するように指定できます。詳細については、Kubernetesのドキュメントを参照してください。

新しいLustre File Systemでのリストア時のデータの暗号化

File Storage with Lustreサービスでは、保存されているデータは常に、デフォルトでOracle管理の暗号化キーを使用して暗号化されます。ただし、Vaultサービスで自分を管理している独自のマスター暗号化キーを使用して保存中の暗号化を指定するオプションがあります。

リストア時にデータを暗号化する方法に応じて、次の適切な手順に従います。

既存のLustre File SystemへのPVCのプロビジョニング

File Storage with Lustreサービスの既存のファイル・システムにPVCを作成するには(Oracle管理の暗号化キーを使用して保存データを暗号化します):

  1. File Storage with Lustreサービスでファイル・システムを作成し、「Oracle管理キーを使用した暗号化」暗号化オプションを選択します。Lustre File Systemの作成を参照してください。
  2. ネットワーク・セキュリティ・グループ(推奨)またはLustreファイル・システムとクラスタのワーカー・ノード・サブネットの両方のセキュリティ・リストのいずれかで、セキュリティ・ルールを作成します。
    作成するセキュリティ・ルールは、次のシナリオに従って、Lustreファイル・システムの相対ネットワークの場所とクライアントとして機能するワーカー・ノードによって異なります。

    これらのシナリオ(作成するセキュリティ・ルールおよびその作成場所)については、Lustreサービス・ドキュメントのファイル・ストレージ(必要なVCNセキュリティ・ルールを参照)で詳しく説明されています。

  3. 次のように、File Storage with Lustreサービスでファイル・システムによってバックアップされたPVを作成します。
    1. 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パラメータとは異なります。
      • (オプション)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"
    2. 次のように入力して、マニフェスト・ファイルからPVを作成します。
      kubectl apply -f <filename>

      例:

      kubectl apply -f lustre-pv-example.yaml
    3. 次のように入力して、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
      
  4. 次のように、作成したPVによってプロビジョニングされるPVCを作成します。
    1. 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.2T

      requests: storage:要素はPVCのマニフェスト・ファイルに存在する必要があり、その値はPVのマニフェスト・ファイルのcapacity: storage:要素に指定された値と一致する必要があります。それ以外に、requests: storage:要素の値は無視されます。

    2. 次のように入力してマニフェスト・ファイルからPVCを作成します。
      kubectl apply -f <filename>
      例:
      kubectl apply -f lustre-pvc-example.yaml
    3. 次のように入力して、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によって管理される暗号化キーを使用して、保存時に暗号化されます。

  5. デプロイメントなどの他のオブジェクトを作成する場合は、新しいPVCを使用します。例:
    1. 次のように、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
    2. 次のように入力して、マニフェスト・ファイルからデプロイメントを作成します。
      kubectl apply -f lustre-app-example-deployment.yaml
    3. 次のように入力して、デプロイメント・ポッドが正常に作成され、実行されていることを確認します:
      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 File SystemへのPVCのプロビジョニング

PVのマウント・オプションを指定することで、既存のLustreファイル・システムに対するパフォーマンスを最適化し、アクセスを制御できます。マウント・オプションを指定すると、ポッドがファイル・システムとどのように相互作用するかを微調整できます。

マウント・オプションを含めるには:

  1. まず、Provisioning a PVC on an Existing Lustre File Systemの手順に従います。
  2. 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または自分で管理する独自のマスター暗号化キーの詳細は、ファイル・システム暗号化の更新を参照してください。