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

Container Service for Kubernetes:CNFS を使用した共有 NAS ボリュームの管理 (推奨)

最終更新日:Jan 06, 2026

Container Service for Kubernetes (ACK) では、Container Network File System (CNFS) を共有 NAS ボリュームとしてマウントして使用できます。CNFS を使用すると、NAS ファイルシステムの同じディレクトリを複数のアプリケーションまたは Pod にマウントできます。これにより、Pod 間のデータ共有の問題が解決されます。このトピックでは、StatefulSet アプリケーションを例に、CNFS を使用して共有 NAS ボリュームを管理する方法について説明します。

前提条件

  • NAS が有効化されていること。

    初めてNAS の製品ページにアクセスする場合は、画面の指示に従って NAS サービスを有効化してください。

  • Kubernetes 1.20 以降を実行する Container Service for Kubernetes (ACK) クラスターが作成されていること。ボリュームプラグインとして Container Storage Interface (CSI) プラグインが使用されていること。詳細については、「ACK マネージドクラスターの作成」をご参照ください。

  • csi-plugin と csi-provisioner のバージョンが v1.24.11-5221f79-aliyun 以降であること。csi-plugin と csi-provisioner の更新方法の詳細については、「CSI コンポーネントのインストールと更新」をご参照ください。

  • storage-operator のバージョンが v1.24.105-825188d-aliyun 以降であること。storage-operator の更新方法の詳細については、「コンポーネントの管理」をご参照ください。

  • kubectl クライアントがクラスターに接続されていること。詳細については、「kubeconfig を使用して kubectl でクラスターに接続する」をご参照ください。

    説明

    CNFS の詳細については、「CNFS」をご参照ください。

    CNFS を使用した NAS ファイルシステムの管理方法の詳細については、「CNFS を使用した NAS ファイルシステムの管理 (推奨)」をご参照ください。

ステップ 1:共有ボリューム用のワークロードの作成

  • cnfs-nas-static-pv という名前の永続ボリューム (PV) を作成します。PV は、既存の NAS ファイルシステムを表す cnfs-nas-filesystem という名前の CNFS オブジェクトを参照する必要があります。

  • cnfs-nas-static-pvc という名前の永続ボリューム要求 (PVC) を作成し、PV にバインドします。

  • cnfs-nas-static-sts という名前の StatefulSet を作成します。StatefulSet では、busybox イメージを使用して PVC をマウントし、1G.tmpfile という名前の 1 GB の一時ファイルをマウントポイントに書き込みます。

クリックしてワークロード作成用の YAML ファイルを表示

cat << EOF | kubectl apply -f -
apiVersion: v1
kind: PersistentVolume
metadata:
  name: cnfs-nas-static-pv
spec:
  accessModes:
  - ReadWriteOnce
  capacity:
    storage: 50Gi
  csi:
    driver: nasplugin.csi.alibabacloud.com
    fsType: nfs
    volumeAttributes:
      containerNetworkFileSystem: cnfs-nas-filesystem # cnfs-nas-filesystem という名前の CNFS オブジェクトを参照します。
      mountProtocol: nfs
      path: /
      volumeAs: subpath
      volumeCapacity: "true"
    volumeHandle: cnfs-nas-static-pv
  mountOptions:
  - nolock,tcp,noresvport
  - vers=3
  persistentVolumeReclaimPolicy: Retain
  storageClassName: cnfs-nas-sc
  volumeMode: Filesystem
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: cnfs-nas-static-pvc
  namespace: default
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 50Gi
  storageClassName: cnfs-nas-sc
  volumeMode: Filesystem
  volumeName: cnfs-nas-static-pv # cnfs-nas-static-pv という名前の PV オブジェクトを参照します。
status:
  accessModes:
  - ReadWriteOnce
  capacity:
    storage: 50Gi
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: cnfs-nas-static-sts
  labels:
    app: busybox
spec:
  serviceName: "busybox"
  replicas: 2
  selector:
    matchLabels:
      app: busybox
  template:
    metadata:
      labels:
        app: busybox
    spec:
      containers:
      - name: busybox
        image: busybox
        command: ["/bin/sh"]
        args: ["-c", "sleep 3600;"]
        volumeMounts:
        - mountPath: "/data"
          name: cnfs-nas-static-pvc
      volumes:
      - name: cnfs-nas-static-pvc
        persistentVolumeClaim:
          claimName: cnfs-nas-static-pvc # cnfs-nas-static-pvc という名前の PVC オブジェクトを参照します。
EOF

ステップ 2:マウントステータスの表示

次のコマンドを実行して、マウントステータスを表示します。

kubectl exec cnfs-nas-static-sts-0 -- mount |grep nfs

期待される出力:

971134b0e8-****.cn-zhangjiakou.nas.aliyuncs.com:/ on /data type nfs (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other)

期待される出力にはマウントポイントが表示されます。これは、ボリュームが正常にマウントされたことを示します。

ステップ 3:永続データが正常に書き込まれたかの確認

次のコマンドを実行して、1 GB の一時ファイルを書き込みます。

kubectl exec cnfs-nas-static-sts-0 -ti -- sh -c 'dd if=/dev/zero of=/data/1G.tmpfile bs=1G count=1;'

以下のコマンドを実行して、1 GB の一時ファイルが作成されたことを確認します。

kubectl exec cnfs-nas-static-sts-0 -- ls -arlth /data

出力結果:

total 1G
-rw-r--r--    1 root     root        1.0G Dec 15 12:11 1G.tmpfile

期待される出力は、1 GB の一時ファイル 1G.tmpfile/data ディレクトリに正常に書き込まれたことを示しています。

ステップ 4:書き込まれたデータが他の Pod で共有されているかの確認

次のコマンドを実行して、1 GB の一時ファイルが他の Pod (cnfs-nas-static-sts-1) と共有されているかを確認します。

kubectl exec cnfs-nas-static-sts-1 -- ls -arlth /data

期待される出力:

total 1G
-rw-r--r--    1 root     root        1.0G Dec 15 12:11 1G.tmpfile

期待される出力は、1 GB の一時ファイル 1G.tmpfile が Pod cnfs-nas-static-sts-0 と Pod cnfs-nas-static-sts-1 の間で共有されていることを示します。

説明

異なる Pod から共有ストレージにデータを書き込む場合、CNFS はデータ整合性を保証しません。ファイルの破損を防ぐため、複数の Pod から同じファイルに書き込むことは避けてください。

関連ドキュメント