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

Container Service for Kubernetes:共有 NAS ボリュームの設定

最終更新日:Sep 04, 2026

NAS ファイルシステムを Container Service for Kubernetes (ACK) クラスターで共有の PersistentVolume (PV) および PersistentVolumeClaim (PVC) として設定して、Arena トレーニングデータを保存します。

事前準備

以下の要件を満たしていることを確認してください。

  • 稼働中の ACK クラスター

  • NAS ファイルシステムを作成して、ACK ストレージリソースを管理するための権限

  • NAS ファイルシステムのマウントとデータの配置に使用する、ACK クラスターと同じ Virtual Private Cloud (VPC) 内の Elastic Compute Service (ECS) インスタンス

注意事項

以下の制約事項に注意してください。

  • 同一 VPC 内に配置する必要があります。NAS ファイルシステム、そのマウントターゲット、および ACK クラスターは、すべて同じ VPC 内に存在する必要があります。

  • プロトコルタイプは同時書き込みのパフォーマンスに影響します。複数の ECS インスタンスが同じファイルに同時に書き込まない場合、NFSv3 の方がパフォーマンスが優れています。Extreme NAS は NFSv3 のみをサポートします。

  • PV 容量はマッチングにのみ使用されます。容量値は実際のストレージを制限しません。実際の制限は、NAS ファイルシステムの仕様によって決まります。

  • 静的 PV は archiveOnDelete をサポートしません。静的 PV に Delete を設定しても、実際には PV や NAS データは削除されません。動的にプロビジョニングされた NAS ボリュームを使用する場合を除き、Retain (デフォルト) を使用してください。

背景情報

Arena ジョブ環境用に共有ストレージボリュームを設定することで、データサイエンティストの作業 (コードとデータ) がコンテナの削除時に失われることを防いで、共有トレーニングデータへのアクセスを容易にします。チーム開発では、共有ストレージプールを割り当てることで、データとコードをチーム全体で共有できます。

Arena ジョブを送信する際、--data パラメーターを使用して共有ストレージとマウントパスを指定できます。共有ストレージは指定されたディレクトリにマウントされ、後続の Job でこのデータやコードを再利用できます。

Kubernetes では、ストレージオブジェクトは PersistentVolume (PV) と PersistentVolumeClaim (PVC) で定義されます。クラスター管理者として環境を割り当てる際は、各データサイエンティストに個別の PVC を作成します。たとえば、ユーザー A とユーザー B の PVC は、同じ NAS または CPFS バックエンドをマウントできますが、作業環境を分離するために異なるサブディレクトリを指す必要があります。

ステップ 1: NAS インスタンスの作成

ACK クラスターと同じリージョンおよび VPC 内に General-purpose NAS ファイルシステムを作成します。

詳細については、「コンソールを使用して汎用 NAS ファイルシステムを作成する」をご参照ください。

以下の値を使用してください。

パラメーター

必須値

[ファイルシステムタイプ]

General-purpose NAS

[リージョン]

ACK クラスターと同じリージョン

[VPC]

ACK クラスターと同じ VPC

[プロトコルタイプ]

NFS

ステップ 2: ファイルシステムを ECS インスタンスにマウント

後でトレーニングデータを入力できるように、NAS ファイルシステムを ECS インスタンスにマウントします。 この手順では、ワンクリックマウント機能を使用します。 その他の方法については、「ファイルシステムをマウントするシナリオ」をご参照ください。

NAS ファイルシステムのマウント

  1. NAS コンソールにログインします。左側のナビゲーションペインで、ファイルシステム > ファイルシステムリストを選択します。

  2. 上部のナビゲーションバーで、ファイルシステムのリソースグループとリージョンを選択します。

    画像

  3. ファイルシステムを見つけて、マウント 列で [マウント] をクリックします。

    初回使用時、NAS は AliyunServiceRoleForNasEcsHandler サービスにリンクされたロールを割り当てるように要求します。画面の指示に従ってください。詳細については、「NAS のサービスにリンクされたロール」をご参照ください。
  4. マウント パネルで、マウントオプションを設定します。

    1. マウントターゲットを選択して、次へ をクリックします。

    2. ファイルシステムと同じ VPC 内の ECS インスタンスを選択して、次へ をクリックします。インスタンスがリストに表示されない場合は、ページを更新してください。

      説明

      この設定では、単一の ECS インスタンスにのみアタッチできます。一括マウントについては、「複数の ECS インスタンスに NFS ファイルシステムを一括マウントする」をご参照ください。

    3. マウントパラメーターを設定します。

      パラメーター

      説明

      必須

      デフォルト

      [マウントパス]

      マウントポイント用の ECS インスタンス上のローカルディレクトリ。

      はい

      —

      [自動マウント]

      ECS インスタンスの再起動時にファイルシステムを自動的に再マウントします。

      いいえ

      有効

      [プロトコルタイプ]

      NFS プロトコルのバージョン。General-purpose NAS は NFSv3 と NFSv4 をサポートし、Extreme NAS は NFSv3 のみをサポートします。複数のインスタンスが同じファイルに同時に書き込まない場合、NFSv3 の方がパフォーマンスが優れています。

      はい

      —

      [NAS ディレクトリ]

      マウントする NAS ディレクトリ。ルートの場合は / を、サブディレクトリの場合は /abc のように入力します。存在しないディレクトリの場合は、[新しいディレクトリの確認] を選択し、UID、GID、および POSIX 権限を設定します。

      いいえ

      / (ルート)

      [マウントパラメーター]

      NFS マウントフラグ。詳細については、「Linux ECS インスタンスに NFS ファイルシステムをマウントする」をご参照ください。

      いいえ

      デフォルトのマウントパラメーター

  5. [完了] をクリックします。 マウントには 1~2 分かかります。 ステータスが [マウント済み] と表示されたら、ファイルシステムの準備は完了です。 [失敗] と表示された場合は、「Linux ECS インスタンスに NFS ファイルシステムをマウントする」を参照してトラブルシューティングを行ってください。

    画像

マウントの確認

ECS インスタンスに接続し、これらのコマンドを実行してアクセスを検証します:

mkdir /mnt/dir1
mkdir /mnt/dir2
touch /mnt/file1
echo 'some file content' > /mnt/file2
ls /mnt

出力には dir1、dir2、file1、file2 が一覧表示されます:

dir1  dir2  file1  file2

マウントの詳細を表示したり、容量を確認したりするには、 mount -l または df -h を実行します。

各 NAS ファイルシステムにはマウントターゲットが必要です。ターゲットを追加または検索するには、「マウントターゲットの管理」をご参照ください。[マウントターゲットタイプ] を [VPC] に設定し、ACK クラスターと同じ VPC と vSwitch を選択します。

ステップ 3: PV と PVC の作成

NAS ファイルシステムを ACK クラスターに PV として登録し、Pod アクセス用の PVC を作成します。

PV の作成

  1. ACK コンソールにログインします。左側のナビゲーションペインで、[クラスター]をクリックします。NAS コンソール

  2. [クラスター] ページで、対象のクラスターをクリックします。左側のナビゲーションペインで、[ストレージ] > [Persistent Volumes] を選択します。

  3. [Persistent Volumes] ページで、[作成] をクリックします。以下のパラメーターを設定して、[OK] をクリックします。

    パラメーター

    説明

    必須

    デフォルト

    例

    [PV タイプ]

    [NAS] を選択します。

    はい

    —

    NAS

    [名前]

    PV 名。クラスター内で一意である必要があります。

    はい

    —

    pv-nas

    [容量]

    PVC のマッチングにのみ使用されます。実際のストレージに上限は適用されません。容量制限については、「汎用 NAS ファイルシステム」および「Extreme NAS ファイルシステム」をご参照ください。

    はい

    —

    5 Gi

    [アクセスモード]

    ReadWriteMany: 複数のノードで読み書き用にマウントします。ReadWriteOnce: 単一のノードでのみマウントします。

    はい

    —

    ReadWriteMany

    [CNFS を有効化]

    Container Network File System (CNFS) を有効にすることで、自動 O&M、キャッシュアクセラレーション、およびパフォーマンスモニタリングが可能になります。 既存のファイルシステムを管理するには、「CNFS を作成して NAS ファイルシステムを管理する (推奨)」をご参照ください。

    いいえ

    無効

    無効

    [マウントターゲットドメイン名]

    CNFS が無効な場合に利用できる NAS マウントターゲットのアドレスです。既存のターゲットを選択するか、カスタムドメインを入力します。アドレスを検索するには、「マウントターゲットの管理」をご参照ください。

    はい (CNFS が無効の場合)

    —

    0c47****-mpk25.cn-shenzhen.nas.aliyuncs.co

    [マウントパス] (詳細)

    マウントする NAS サブディレクトリです。Extreme NAS の場合、/share から始まる必要があります(例:/share/data)。存在しないディレクトリは自動的に作成されます。

    いいえ

    /(ルート)

    /data

    [リクレイムポリシー]

    保持 (デフォルト): PVC が削除されても、PV と NAS のデータは保持されます。手動でのクリーンアップが必要です。 削除: archiveOnDelete が必要です。 静的 PV は archiveOnDelete をサポートしていないため、設定にかかわらず PV とデータは保持されます。 archiveOnDelete の設定については、「動的にプロビジョニングされた NAS ボリュームを使用する」をご参照ください。

    いいえ

    Retain

    保持

    [マウントオプション]

    NFS プロトコルのバージョンとマウントフラグ。同時書き込みを伴わない ML トレーニングの読み取りでは、NFSv3 の方がパフォーマンスが向上します。

    いいえ

    —

    nolock,tcp,noresvport vers=3

    [ラベル]

    PV のラベル。

    いいえ

    —

    pv-nas

PV が [Persistent Volumes] ページに表示されます。

PVC の作成

  1. ナビゲーションペインで、[ストレージ] > [Persistent Volume Claims] を選択します。

  2. [Persistent Volume Claims] ページで、[作成] をクリックします。以下のパラメーターを設定して、[OK] をクリックします。

    パラメーター

    説明

    必須

    デフォルト

    例

    [PVC タイプ]

    [NAS] を選択します。

    はい

    —

    NAS

    [名前]

    PVC 名。名前空間内で一意である必要があります。

    はい

    —

    pvc-nas

    [割り当てモード]

    [既存の PersistentVolume を使用]: 上記の PV にバインドします。[ボリュームの作成]: 新しい PV をインラインでプロビジョニングします。

    はい

    —

    既存の PersistentVolume を使用

    [既存のボリューム]

    上記で作成した PV。

    はい (既存の PV を使用する場合)

    —

    pv-nas

    [容量]

    要求するストレージ容量。PVC と PV のマッチングにのみ使用されます。

    はい

    —

    5

PV と PVC の確認

PVC が PV にバインドされていることを確認します。 ACK クラスターの任意のノードに接続し、次のコマンドを実行します。

kubectl get pvc pvc-nas

出力には、PVC が Bound 状態であることが示されています。

NAME       STATUS   VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE
pvc-nas    Bound    pv-nas   5Gi        RWX                           1m

Pending の場合、PV 名とアクセスモードが一致することを確認してください。

ステップ 4: PVC にデータを配置

Kubernetes クラスターは、ステップ 1 で作成された NAS インスタンスを指す PVC を介して共有データにアクセスするため、PVC のバッキングストレージである NAS にデータを格納するだけで済みます。次の手順では、サンプルのコンテナイメージから PyTorch および TensorFlow の MNIST データセットを NAS の指定されたディレクトリにコピーする 2 つの Kubernetes ジョブを作成します。この例では、ステップ 3 の PVC pvc-nas を使用します。

  1. 次の内容で prepare-pytorch-mnist-data.yaml という名前のファイルを作成します。

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: prepare-pytorch-mnist-data
      namespace: default
    spec:
      completions: 1
      parallelism: 1
      backoffLimit: 3
      ttlSecondsAfterFinished: 3600
      template:
        spec:
          containers:
          - name: pytorch-mnist-example
            image: kube-ai-registry.cn-shanghai.cr.aliyuncs.com/kube-ai/pytorch-mnist-example:2.5.1-cuda12.4-cudnn9-runtime
            imagePullPolicy: Always
            command:
            - /bin/bash
            - -c
            args:
            - |
              set -eux
              mkdir -p /mnt/pytorch_data/MNIST/raw
              cp -r /data/MNIST/raw/* /mnt/pytorch_data/MNIST/raw || { echo "コピーに失敗しました"; exit 1; }
              echo "/mnt/pytorch_data/MNIST/raw に MNIST データを正常に準備しました。"
            resources:
              requests:
                cpu: 100m
                memory: 128Mi
              limits:
                cpu: 100m
                memory: 128Mi
            volumeMounts:
            - name: training-data
              mountPath: /mnt
          volumes:
          - name: training-data
            persistentVolumeClaim:
              claimName: pvc-nas
          restartPolicy: Never
  2. PyTorch MNIST データセットを NAS 上の /pytorch_data にコピーするジョブを作成します:

    # ジョブを作成
    kubectl create -f prepare-pytorch-mnist-data.yaml
    
    # ジョブが完了するまで待機
    kubectl wait --for=condition=complete --namespace=default --timeout=300s job/prepare-pytorch-mnist-data

    Job が正常に完了すると、以下が出力されます。

    job.batch/prepare-pytorch-mnist-data 条件が満たされました
  3. 次の内容で prepare-tensorflow-mnist-data.yaml という名前のファイルを作成します。

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: prepare-tensorflow-mnist-data
      namespace: default
    spec:
      completions: 1
      parallelism: 1
      backoffLimit: 3
      ttlSecondsAfterFinished: 3600
      template:
        spec:
          containers:
          - name: tensorflow-mnist-example
            image: kube-ai-registry.cn-shanghai.cr.aliyuncs.com/kube-ai/tensorflow-mnist-example:2.15.0-gpu
            imagePullPolicy: Always
            command:
            - /bin/bash
            - -c
            args:
            - |
              set -eux
              mkdir -p /mnt/tf_data
              cp -r /data/mnist.npz /mnt/tf_data/mnist.npz || { echo "コピーに失敗しました"; exit 1; }
              echo "MNIST データは /mnt/tf_data/mnist.npz に正常に準備されました。"
            resources:
              requests:
                cpu: 100m
                memory: 128Mi
              limits:
                cpu: 100m
                memory: 128Mi
            volumeMounts:
            - name: training-data
              mountPath: /mnt
          volumes:
          - name: training-data
            persistentVolumeClaim:
              claimName: pvc-nas
          restartPolicy: Never
  4. TensorFlow MNIST データセットを NAS 上の /tf_data にコピーするジョブを作成します:

    # ジョブを作成
    kubectl create -f prepare-tensorflow-mnist-data.yaml
    
    # ジョブが完了するまで待機
    kubectl wait --for=condition=complete --namespace=default --timeout=300s job/prepare-tensorflow-mnist-data

    Job が正常に完了すると、以下が出力されます。

    job.batch/prepare-tensorflow-mnist-data 条件が満たされました
この例では、default namespace の pvc-nas という名前の PVC を使用します。お使いの PVC の名前が異なる場合や、別の namespace にある場合は、マニフェストを適宜調整してください。

/tf_data には TensorFlow MNIST データが、/pytorch_data には PyTorch MNIST データが格納されています。どちらのディレクトリも、pvc-nas をマウントするポッドからアクセスできます。

次のステップ

  • --data を指定して Arena トレーニングジョブを提出し、pvc-nas をマウントします。

  • ユーザー環境を分離するには、同じ NAS ファイルシステムの異なるサブディレクトリを指す個別の PVC を作成します。

  • 本番ワークロードでは、CNFS を有効にすることをご検討ください。