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

ファイルシステムを見つけて、マウント 列で [マウント] をクリックします。
初回使用時、NAS は AliyunServiceRoleForNasEcsHandler サービスにリンクされたロールを割り当てるように要求します。画面の指示に従ってください。詳細については、「NAS のサービスにリンクされたロール」をご参照ください。
マウント パネルで、マウントオプションを設定します。
マウントターゲットを選択して、次へ をクリックします。
ファイルシステムと同じ VPC 内の ECS インスタンスを選択して、次へ をクリックします。インスタンスがリストに表示されない場合は、ページを更新してください。
説明この設定では、単一の ECS インスタンスにのみアタッチできます。一括マウントについては、「複数の ECS インスタンスに NFS ファイルシステムを一括マウントする」をご参照ください。
マウントパラメーターを設定します。
パラメーター
説明
必須
デフォルト
[マウントパス]
マウントポイント用の ECS インスタンス上のローカルディレクトリ。
はい
—
[自動マウント]
ECS インスタンスの再起動時にファイルシステムを自動的に再マウントします。
いいえ
有効
[プロトコルタイプ]
NFS プロトコルのバージョン。General-purpose NAS は NFSv3 と NFSv4 をサポートし、Extreme 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 が一覧表示されます:
dir1 dir2 file1 file2マウントの詳細を表示したり、容量を確認したりするには、 mount -l または df -h を実行します。
各 NAS ファイルシステムにはマウントターゲットが必要です。ターゲットを追加または検索するには、「マウントターゲットの管理」をご参照ください。[マウントターゲットタイプ] を [VPC] に設定し、ACK クラスターと同じ VPC と vSwitch を選択します。
ステップ 3: PV と PVC の作成
NAS ファイルシステムを ACK クラスターに PV として登録し、Pod アクセス用の PVC を作成します。
PV の作成
[クラスター] ページで、対象のクラスターをクリックします。左側のナビゲーションペインで、[ストレージ] > [Persistent Volumes] を選択します。
[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,noresvportvers=3[ラベル]
PV のラベル。
いいえ
—
pv-nas
PV が [Persistent Volumes] ページに表示されます。
PVC の作成
ナビゲーションペインで、[ストレージ] > [Persistent Volume Claims] を選択します。
[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 1mPending の場合、PV 名とアクセスモードが一致することを確認してください。
ステップ 4: PVC にデータを配置
Kubernetes クラスターは、ステップ 1 で作成された NAS インスタンスを指す PVC を介して共有データにアクセスするため、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 "コピーに失敗しました"; 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: NeverPyTorch 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-dataJob が正常に完了すると、以下が出力されます。
job.batch/prepare-pytorch-mnist-data 条件が満たされました次の内容で
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: NeverTensorFlow 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-dataJob が正常に完了すると、以下が出力されます。
job.batch/prepare-tensorflow-mnist-data 条件が満たされました
この例では、defaultnamespace のpvc-nasという名前の PVC を使用します。お使いの PVC の名前が異なる場合や、別の namespace にある場合は、マニフェストを適宜調整してください。
/tf_data には TensorFlow MNIST データが、/pytorch_data には PyTorch MNIST データが格納されています。どちらのディレクトリも、pvc-nas をマウントするポッドからアクセスできます。
次のステップ
--dataを指定して Arena トレーニングジョブを提出し、pvc-nasをマウントします。ユーザー環境を分離するには、同じ NAS ファイルシステムの異なるサブディレクトリを指す個別の PVC を作成します。
本番ワークロードでは、CNFS を有効にすることをご検討ください。