既存のファイル・システムを使用した永続ファイル・システム・ストレージの作成

このプロシージャは、既存のファイル・システムにPVCをプロビジョニングします。 Private Cloud Applianceにマウント・ターゲット、ファイル・システムおよびファイル・システムのエクスポートを作成します。 次に、kubectlコマンドを使用して、ストレージ・クラス、永続ボリュームおよび永続ボリューム要求を作成します。

  1. マウント・ターゲットを作成します。

    重要:

    ワーカー・ノードからマウント・ターゲットに到達できるようにするには、「OKEネットワーク・リソースの作成」で説明されているworkerサブネットのような構成を持つサブネットにマウント・ターゲットを作成します。 NFSサーバーへのTCPポート2049が、そのサブネット上で開いていることを確認します。

    「Oracle Private Cloud Applianceユーザー・ガイド」「ファイル・システム・ストレージ」の章のマウント・ターゲットの作成に関する項および「Oracle Private Cloud Appliance概要ガイド」「ファイル・ストレージの概要」の章の「ファイル・ストレージ・ネットワーク・ポート」に関する項を参照してください。

    エクスポート・セットのOCIDおよびマウント・ターゲットのOCIDに注意してください。 ファイル・システム・エクスポートを作成するにはエクスポート・セットOCIDが必要であり、ストレージ・クラスの作成にはマウント・ターゲットOCIDが必要です。 ステップ3と4を参照してください。

    VCNごとにマウント・ターゲットを1つのみ持つことができます。

  2. ファイル・システムを作成します。

    「Oracle Private Cloud Applianceユーザーズ・ガイド」「ファイル・システム・ストレージ」の章の「ファイル・システムの作成」に関する項を参照してください。

    VCNごとに作成できるファイル・システムは1つのみです。 クラスタごとに複数のストレージ・クラス、永続ボリューム、および永続ボリューム要求を持つことができ、それらはすべて1つのNFSを共有します。

  3. ファイル・システム・エクスポートを作成して、マウント・ターゲットをファイル・システムに関連付けます。

    「Oracle Private Cloud Applianceユーザーズ・ガイド」「ファイル・システム・ストレージ」の章の「ファイル・システムのエクスポートの作成」に関する項を参照してください。

    • マウント・ターゲットの作成からの出力からエクスポート・セットOCIDを指定します。

    • 「OKEネットワーク・リソースの作成」の説明に従って、workerサブネットの作成時に指定したCIDR範囲内で最長のCIDR (最小ネットワーク)を指定します。

    エクスポート・パスとマウント・ターゲットのIPアドレスを書き留めます。

  4. ストレージ・クラスを作成し、マウント・ターゲットの作成ステップの出力からマウント・ターゲットOCIDを指定します。

    $ kubectl create -f sc.yaml

    次に、sc.yamlファイルの内容を示します:

    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
      name: pca-fss
    provisioner: fss.csi.oraclecloud.com
    parameters:
      mntTargetId: ocid1.mounttarget.unique_ID

    apiVersionおよびprovisionerプロパティの値は標準です。 メタデータ・セクションのストレージ・クラス名の値は、ユーザー指定です。 マウント・ターゲットごとに複数のストレージ・クラスを作成でき、次のステップでストレージ・クラス名を使用して永続ボリュームおよび永続ボリューム要求を作成します。

    get scサブコマンドを使用して、新しいストレージ・クラスの情報を表示します:

    $ kubectl get sc
  5. ストレージ・クラス名、エクスポート・パスおよびマウント・ターゲットのIPアドレスを指定して、永続ボリュームを作成します。

    ストレージ・クラス名は、前のステップのsc.yamlファイルのメタデータにあります。 エクスポート・パスおよびマウント・ターゲットのIPアドレスは、ファイル・システムの作成エクスポート・ステップから出力されます。 前述のステップ3を参照してください。

    $ kubectl create -f pv.yaml

    次に、pv.yamlファイルの内容を示します:

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: fss-pv
    spec:
      storageClassName: pca-fss
      capacity:
        storage: 200Gi
      accessModes:
        - ReadWriteMany
      mountOptions:
        - nosuid
      nfs:
        server: mount_target_IP_address
        path: "/export/unique_ID"
        readOnly: false

    metadataセクションの永続ボリューム名は、ユーザー指定です。 1つのストレージ・クラスに複数の永続ボリュームを設定できます。

    nfsセクションで、server値はマウント・ターゲットのIPアドレス、path値はエクスポート・パスです。

    get pvサブコマンドを使用して、新しい永続ボリュームに関する情報を表示します:

    $ kubectl get pv
    NAME    CAPACITY  ACCESS MODES  RECLAIM POLICY  STATUS  CLAIM            STORAGECLASS  REASON  AGE
    fss-pv  200Gi     RWX           Retain          Bound   default/fss-pvc  pca-fss               20h
  6. 永続ボリューム名とストレージ・クラス名を指定して、永続ボリューム要求を作成します。

    永続ボリューム名とストレージ・クラス名は、get pvコマンドの出力に含まれます。

    このストレージを使用する前に、PVCステータスが「バウンド」になるのを待ちます。

    kubectl create -f pvc.yaml

    次に、pvc.yamlファイルの内容を示します:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: fss-pvc
    spec:
      storageClassName: pca-fss
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 200Gi
      volumeName: fss-pv

    metadataセクションの永続ボリューム要求名は、ユーザー指定です。 永続ボリュームに対して複数の永続ボリューム要求を設定できます。

    accessModesプロパティの値は、ReadWriteManyである必要があります。

    storageプロパティの値は、50ギガバイト以上である必要があります。

    次のコマンドを実行して、新しい永続ボリューム要求に関する情報を表示します:

    $ kubectl get pvc
    NAME      STATUS   VOLUME   CAPACITY   ACCESSMODES   STORAGECLASS   AGE
    fss-pvc   Bound    fss-pv   200Gi      RWX           pca-fss        2h
  7. ポッドなどの他のオブジェクトを作成する場合、PVCを使用します。

    たとえば、次のポッド定義から新しいポッドを作成し、fss-pvc PVCをnginxボリュームとして使用するようにシステムに指示できます。このボリュームは、ポッドによって/persistent-storageにマウントされます:

    apiVersion: v1
    kind: Pod
    metadata:
      name: fss-dynamic-app
    spec:
      containers:
        - name: nginx
          image: nginx:latest
          ports:
            - name: http
              containerPort: 80
          volumeMounts:
            - name: persistent-storage
              mountPath: /usr/share/nginx/html
      volumes:
      - name: persistent-storage
        persistentVolumeClaim:
          claimName: fss-pvc

    次のコマンドを実行して、ポッドが新しいPVCを使用していることを確認します:

    $ kubectl describe pod fss-dynamic-app