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

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

最終更新日:Jun 19, 2026

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

事前準備

以下が準備できていることを確認してください。

  • 実行中の ACK クラスター

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

  • NAS ファイルシステムをマウントしてデータを入力するために、ACK クラスターと同じ Virtual Private Cloud (VPC) 内にある Elastic Compute Service (ECS) インスタンス

注意事項

以下の制約にご注意ください。

  • VPC のコロケーションが必須です。NAS ファイルシステム、そのマウントポイント、および ACK クラスターは、すべて同じ VPC 内に存在する必要があります。

  • プロトコルタイプはマルチライターパフォーマンスに影響します。複数の ECS インスタンスが同じファイルに同時に書き込みを行わない場合、NFSv3 の方がパフォーマンスが向上します。エクストリーム NAS は NFSv3 のみをサポートします。

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

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

背景情報

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

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

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

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

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

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

以下の値を使用します。

パラメーター 必須の値
ファイルシステムタイプ 汎用 NAS
リージョン ACK クラスターと同じリージョン
VPC ACK クラスターと同じ VPC
プロトコルタイプ NFS

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

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

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

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

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

    image

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

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

    1. マウントポイントを選択し、[次へ] をクリックします。

    2. ファイルシステムと同じ VPC 内の ECS インスタンスを選択し、[次へ] をクリックします。 インスタンスがリストに表示されない場合は、ページをリフレッシュします。 > 注: バッチマウントについては、「一度に複数の ECS インスタンスに NFS ファイルシステムをマウントする」をご参照ください。

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

      パラメーター 説明 必須 デフォルト
      マウントパス マウントポイント用の ECS インスタンス上のローカルディレクトリ。 はい
      自動マウント ECS インスタンスの再起動時にファイルシステムを自動的に再マウントします。 いいえ 有効
      プロトコルタイプ NFS プロトコルのバージョン。汎用 NAS は NFSv3 と NFSv4 をサポートし、エクストリーム NAS は NFSv3 のみをサポートします。複数のインスタンスが同じファイルに同時に書き込みを行わない場合、NFSv3 の方がパフォーマンスが向上します。 はい
      NAS ディレクトリ マウントする NAS ディレクトリ。ルートの場合は / を、サブディレクトリの場合は /abc のように入力します。存在しないディレクトリの場合は、[新規ディレクトリの確認] を選択し、UID、GID、および POSIX 権限を設定します。 いいえ / (ルート)
      マウントパラメーター NFS マウントフラグ。詳細については、「Linux ECS インスタンスに NFS ファイルシステムをマウントする」をご参照ください。 いいえ デフォルトのマウントパラメーター
  5. [完了] をクリックします。 マウントには 1~2 分かかります。 ステータスが マウント済み と表示されたら、ファイルシステムは準備完了です。 失敗 と表示された場合は、「Linux ECS インスタンスに NFS ファイルシステムをマウントする」を参照してトラブルシューティングを行ってください。

    image

マウントの確認

ECS インスタンスに接続し、以下のコマンドを実行してアクセスを確認します。

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

出力には dir1dir2file1、および file2 がリストされます。

image.png

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

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

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

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

PV の作成

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

  2. [クラスター] ページで、対象のクラスターをクリックします。左側のナビゲーションウィンドウで、[ボリューム] > [永続ボリューム] を選択します。

  3. [永続ボリューム] ページで、[作成] をクリックします。次のパラメーターを設定し、[OK] をクリックします。

    パラメーター 説明 必須 デフォルト
    PV タイプ [NAS] を選択します。 はい NAS
    名前 PV の名前。クラスター内で一意である必要があります。 はい pv-nas
    容量 PVC とのマッチングにのみ使用されます。実際のストレージを制限するものではありません。容量制限については、「汎用 NAS ファイルシステム」および「エクストリーム NAS ファイルシステム」をご参照ください。 はい 5 Gi
    アクセスモード ReadWriteMany:複数のノードが読み書き可能としてマウントします。ReadWriteOnce:単一ノードのみ。 はい ReadWriteMany
    CNFS の有効化 コンテナネットワークファイルシステム (CNFS) を有効にして、O&M の自動化、キャッシュアクセラレーション、パフォーマンスモニタリングを実現します。既存のファイルシステムを管理するには、「CNFS を作成して NAS ファイルシステムを管理する (推奨)」をご参照ください。 いいえ 無効 無効
    マウントターゲットのドメイン名 CNFS が無効な場合に利用可能です。NAS マウントポイントのアドレス。既存のターゲットを選択するか、カスタムドメインを入力します。アドレスの検索については、「マウントポイントの管理」をご参照ください。 はい (CNFS が無効な場合) 0c47****-mpk25.cn-shenzhen.nas.aliyuncs.co
    マウントパス (詳細) マウントする NAS のサブディレクトリ。エクストリーム NAS の場合、/share で始まる必要があります (例:/share/data)。存在しないディレクトリは自動的に作成されます。 いいえ / (ルート) /data
    回収ポリシー 保持 (デフォルト): PVC が削除されても PV と NAS データは保持されます。手動でのクリーンアップが必要です。削除: archiveOnDelete が必要です。静的 PV は archiveOnDelete をサポートしていないため、PV とデータは設定に関係なく保持されます。archiveOnDelete の構成については、「動的にプロビジョニングされた NAS ボリュームを使用する いいえ Retain Retain
    マウントオプション NFS プロトコルのバージョンとマウントフラグ。同時書き込みのない機械学習のトレーニング読み取りには、NFSv3 の方がパフォーマンスが向上します。 いいえ nolock,tcp,noresvport vers=3
    ラベル PV のラベル。 いいえ pv-nas

PV は[永続ボリューム] ページに表示されます。

PVC の作成

  1. ナビゲーションウィンドウで、[ストレージ] > [永続ボリューム要求] を選択します。

  2. [永続ボリューム要求] ページで、[作成] をクリックします。次のパラメーターを設定し、[OK] をクリックします。

    パラメーター 説明 必須 デフォルト
    PVC タイプ [NAS] を選択します。 はい NAS
    名前 PVC の名前。クラスター内で一意である必要があります。 はい pvc-nas
    割り当てモード [既存の永続ボリュームを使用]:上記の PV にバインドします。[ボリュームの作成]:新しい PV をインラインでプロビジョニングします。 はい 既存の永続ボリュームを使用
    既存のボリューム 上記で作成した 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 クラスターは PVC (ステップ 1 で作成した NAS インスタンスを指す) を介して共有データにアクセスするため、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 "Copy failed"; exit 1; }
              echo "MNIST data prepared successfully at /mnt/pytorch_data/MNIST/raw."
            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.batch/prepare-pytorch-mnist-data condition met
  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 "Copy failed"; exit 1; }
              echo "MNIST data prepared successfully at /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.batch/prepare-tensorflow-mnist-data condition met
この例では、default 名前空間の pvc-nas という名前の PVC を使用します。PVC の名前が異なる場合や、異なる名前空間にある場合は、マニフェストを適宜調整してください。

/tf_data には TensorFlow MNIST データが、/pytorch_data には PyTorch MNIST データが含まれています。どちらも pvc-nas をマウントする任意の Pod からアクセスできます。

次のステップ

  • Arena のトレーニングジョブを --data を付けてサブミットし、pvc-nas をマウントします。

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

  • 本番ワークロードでは、CNFS の有効化をご検討ください。