ご利用の 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 ファイルシステムのマウント
-
NAS コンソールにログインします。左側のナビゲーションウィンドウで、[ファイルシステム] > [ファイルシステムリスト] を選択します。
-
上部のナビゲーションバーで、ファイルシステムのリソースグループとリージョンを選択します。

-
対象のファイルシステムを見つけ、[操作] 列の [マウント] をクリックします。
初回使用時、NAS から AliyunServiceRoleForNasEcsHandler サービスリンクロールを割り当てるように求められます。画面の指示に従ってください。NAS のサービスリンクロールをご参照ください。
-
[マウント] パネルで、マウントオプションを設定します。
-
マウントポイントを選択し、[次へ] をクリックします。
-
ファイルシステムと同じ VPC 内の ECS インスタンスを選択し、[次へ] をクリックします。 インスタンスがリストに表示されない場合は、ページをリフレッシュします。 > 注: バッチマウントについては、「一度に複数の ECS インスタンスに NFS ファイルシステムをマウントする」をご参照ください。
-
マウントパラメーターを設定します。
パラメーター 説明 必須 デフォルト マウントパス マウントポイント用の ECS インスタンス上のローカルディレクトリ。 はい — 自動マウント ECS インスタンスの再起動時にファイルシステムを自動的に再マウントします。 いいえ 有効 プロトコルタイプ NFS プロトコルのバージョン。汎用 NAS は NFSv3 と NFSv4 をサポートし、エクストリーム NAS は NFSv3 のみをサポートします。複数のインスタンスが同じファイルに同時に書き込みを行わない場合、NFSv3 の方がパフォーマンスが向上します。 はい — NAS ディレクトリ マウントする NAS ディレクトリ。ルートの場合は /を、サブディレクトリの場合は/abcのように入力します。存在しないディレクトリの場合は、[新規ディレクトリの確認] を選択し、UID、GID、および POSIX 権限を設定します。いいえ /(ルート)マウントパラメーター NFS マウントフラグ。詳細については、「Linux ECS インスタンスに NFS ファイルシステムをマウントする」をご参照ください。 いいえ デフォルトのマウントパラメーター
-
-
[完了] をクリックします。 マウントには 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 がリストされます。
マウントの詳細を表示したり、容量を確認したりするには、mount -l または df -h を実行します。
各 NAS ファイルシステムにはマウントポイントが必要です。マウントポイントの追加や検索については、「マウントポイントの管理」をご参照ください。[マウントターゲットタイプ] を [VPC] に設定し、ACK クラスターと同じ VPC と vSwitch を選択します。
ステップ 3:PV と PVC の作成
ACK クラスターに NAS ファイルシステムを PV として登録し、Pod がアクセスするための PVC を作成します。
PV の作成
-
ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。NAS コンソール
-
[クラスター] ページで、対象のクラスターをクリックします。左側のナビゲーションウィンドウで、[ボリューム] > [永続ボリューム] を選択します。
-
[永続ボリューム] ページで、[作成] をクリックします。次のパラメーターを設定し、[OK] をクリックします。
パラメーター 説明 必須 デフォルト 例 PV タイプ [NAS] を選択します。 はい — NAS 名前 PV の名前。クラスター内で一意である必要があります。 はい — pv-nas容量 PVC とのマッチングにのみ使用されます。実際のストレージを制限するものではありません。容量制限については、「汎用 NAS ファイルシステム」および「エクストリーム NAS ファイルシステム」をご参照ください。 はい — 5 Giアクセスモード ReadWriteMany:複数のノードが読み書き可能としてマウントします。ReadWriteOnce:単一ノードのみ。 はい — ReadWriteManyCNFS の有効化 コンテナネットワークファイルシステム (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,noresvportvers=3ラベル PV のラベル。 いいえ — pv-nas
PV は[永続ボリューム] ページに表示されます。
PVC の作成
-
ナビゲーションウィンドウで、[ストレージ] > [永続ボリューム要求] を選択します。
-
[永続ボリューム要求] ページで、[作成] をクリックします。次のパラメーターを設定し、[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 を使用します。
-
次の内容で
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 -
ジョブを作成して、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 -
次の内容で
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 -
ジョブを作成して、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 の有効化をご検討ください。