このページは機械翻訳したものです。

CSIボリューム・プラグインを使用した永続ファイル・システム・ストレージの作成

Compute Cloud@Customerでは、CSIボリューム・プラグインを使用して、新しいファイル・システムにPVCをプロビジョニングできます。kubectlコマンドを使用して、ストレージ・クラスおよび永続ボリューム要求を作成します。CSIボリューム・プラグインは、PVCを新しいファイル・システムにプロビジョニングします。

VCNごとに1つのマウント・ターゲットと1つのファイル・システムのみを設定できます。クラスタごとに複数のストレージ・クラス、永続ボリュームおよび永続ボリューム要求を設定できます。クラスタ内のすべてのストレージ・クラス、永続ボリュームおよび永続ボリューム要求は、1つのNFSを共有します。

  1. fss.csi.oraclecloud.comプロビジョナを使用する新しいストレージ・クラスを作成します。

    $ kubectl create -f sc.yaml

    sc.yamlマニフェスト・ファイルの内容は次のとおりです。

    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
      name: fss-dyn-storage
    provisioner: fss.csi.oraclecloud.com
    parameters:
      availabilityDomain: AD-1
      compartmentOcid: ocid1.compartment.unique_ID
      mountTargetSubnetOcid: ocid1.subnet.unique_ID
      exportPath: AUTOSELECT
      exportOptions: "[{\"source\":\"0.0.0.0/0\",\"requirePrivilegedSourcePort\":false,\"access\":\"READ_WRITE\",\"identitySquash\":\"NONE\"}]"
      encryptInTransit: "false"
    • 新しいストレージ・クラスの名前はfss-dyn-storageです。

    • mountTargetSubnetOcidまたはmountTargetOcidのいずれかが必要です。mountTargetSubnetOcidの値は、CSIプラグインでマウント・ターゲットを作成するサブネットのOCIDです。mountTargetOcidの値は、既存のマウント・ターゲットのOCIDです。mountTargetSubnetOcidmountTargetOcidの両方を指定した場合、mountTargetOcidが使用され、mountTargetSubnetOcidは無視されます。

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

    • compartmentOcidはオプションです。この値は、新しいファイル・システム(およびmountTargetSubnetOcidが指定されている場合は新しいマウント・ターゲット)が作成されるコンパートメントのOCIDです。デフォルト値はクラスタと同じコンパートメントです。

    • AUTOSELECTexportPathの値として指定する必要があります。

    • exportOptions値は、NFSクライアントがマウント・ターゲットに接続するときに付与されるアクセス権を定義する、ファイル・システム・エクスポート内のNFSエクスポート・オプション・エントリです。sourceには、単一のIPアドレスまたはCIDRブロック範囲を指定できます。この値は、JSON形式のパラメータのセットです。

    • encryptInTransitの値は、転送中のデータを暗号化するかどうかを指定します。

  2. ファイル・ストレージ・サービスの新しいファイル・システムによってプロビジョニングされるPVCを作成します。

    $ kubectl create -f fss-dyn-claim.yaml

    fss-dyn-claim.yamlマニフェスト・ファイルの内容は次のとおりです。

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: fss-dynamic-claim
    spec:
      accessModes:
      - ReadWriteMany
      storageClassName: "fss-dyn-storage"
      resources:
        requests:
          storage: 50Gi
  3. PVCが新しい永続ボリュームにバインドされていることを確認します。

    $ kubectl get pvc
    NAME              STATUS VOLUME                                       CAPACITY ACCESS MODES STORAGECLASS    AGE
    fss-dynamic-claim Bound  csi-fss-f6823a66-8b6f-4c42-9d1f-d25723e69257 50Gi     RWX          fss-dyn-storage 6m47s
  4. ポッドなどのオブジェクトを作成する場合は、新しいPVCを使用します。

    オブジェクトの作成例を次に示します。

    $ kubectl create nginx.yaml

    nginx.yamlファイルのコンテンツは、次のとおりです。最後の行のclaimNameを参照してください。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx_image_url
            ports:
            - name: http
              containerPort: 80
            volumeMounts:
            - name: persistent-storage
              mountPath: /usr/share/nginx/html
          volumes:
          - name: persistent-storage
            persistentVolumeClaim:
              claimName: fss-dynamic-claim

    オブジェクトが作成され、デプロイされていることを確認します。

    $ kubectl get deploy
    NAME             READY UP-TO-DATE AVAILABLE AGE
    nginx-deployment 3/3   3          0         104s

この記事は役に立ちましたか。