すべてのプロダクト
Search
ドキュメントセンター

File Storage NAS:動的にプロビジョニングされたNASボリュームのマウント

最終更新日:Jul 30, 2024

Apsara File Storage NAS (NAS) ファイルシステムにサブディレクトリを作成し、そのサブディレクトリをアプリケーション用に動的にプロビジョニングされた永続ボリューム (PV) にマッピングできます。 このトピックでは、動的にプロビジョニングされたNASボリュームをマウントする方法について説明します。

始める前に

  • Container Service for Kubernetes (ACK) クラスターが作成され、FlexVolumeプラグインがクラスターにインストールされます。 詳細については、「マネージド Kubernetes クラスターの作成」をご参照ください。

  • alicloud-nas-controllerコンポーネントがクラスターにデプロイされます。 詳細については、「プラグインのインストール」をご参照ください。

注意事項

アプリケーションテンプレートでsecurityContext.fsgroupパラメーターが設定されている場合、ボリュームのマウント後にkubeletがchmodまたはchown操作を実行するため、時間の消費が増加します。

説明

securityContext.fsgroupパラメーターが設定されている場合のマウントプロセスを高速化する方法の詳細については、「NASボリュームのマウントに時間がかかるのはなぜですか?」をご参照ください。

動的にプロビジョニングされたNASボリュームの作成

  1. StorageClassを設定します。

    サンプルコード:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: alicloud-nas
    mountOptions:
    - nolock,tcp,noresvport
    - vers=3
    parameters:
      server: "23a9649583-i****.cn-shenzhen.nas.aliyuncs.com:/nasroot1/"
      driver: flexvolume
    provisioner: alicloud/nas
    reclaimPolicy: Delete

    パラメーター

    説明

    mountOptions

    PVのマウントオプション。 NASボリュームは、指定されたマウントオプションに基づいてマウントされます。

    サーバー

    PVのプロビジョニングに使用されるマウントターゲットのリスト。 形式はnfsurl1:/path1,nfsurl2:/path2です。 複数のサーバーが指定されている場合、このStorageClassによってプロビジョニングされたPVは、ラウンドロビン方式でサーバーを使用します。 Extreme NASファイルシステムの場合、パスは /shareで始まる必要があります。

    ドライバー

    FlexVolumeとNFSがサポートされています。 デフォルトのドライバはNFSです。

    reclaimPolicy

    PVの再利用ポリシー。 値を [保持] に設定することを推奨します。

    • 値をDeleteに設定すると、PVにマップされたサブディレクトリの名前は、PVの削除後に自動的に変更されます。 たとえば、path-namearchived-path-nameに変更されます。

    • NASファイルシステムのサブディレクトリを削除する場合は、StorageClass設定でarchiveOnDeletefalseに設定します。

  2. StatefulSetで動的にプロビジョニングされたNASボリュームを使用します。

    次のサンプルコードを使用して、サービスとStatefulSetを作成します。

    apiVersion: v1
    kind: Service
    metadata:
      name: nginx
      labels:
        app: nginx
    spec:
      ports:
      - port: 80
        name: web
      clusterIP: None
      selector:
        app: nginx
    ---
    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: web
    spec:
      selector:
        matchLabels:
          app: nginx
      serviceName: "nginx"
      replicas: 5
      volumeClaimTemplates:
      - metadata:
          name: html
        spec:
          accessModes:
            - ReadWriteOnce
          storageClassName: alicloud-nas
          resources:
            requests:
              storage: 2Gi
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:alpine
            volumeMounts:
            - mountPath: "/data"
              name: html