全部产品
Search
文档中心

Container Service for Kubernetes:Gunakan CNFS untuk mengelola volume NAS bersama (disarankan)

更新时间:Jan 06, 2026

Container Service for Kubernetes (ACK) memungkinkan Anda memasang dan menggunakan Container Network File System (CNFS) sebagai volume NAS bersama. Anda dapat memasang direktori yang sama dari sistem file NAS ke beberapa aplikasi atau pod menggunakan CNFS, sehingga mengatasi masalah berbagi data di antara pod. Topik ini menjelaskan cara menggunakan CNFS untuk mengelola volume NAS bersama dengan menggunakan aplikasi StatefulSet sebagai contoh.

Prasyarat

  • NAS telah diaktifkan.

    Jika ini pertama kalinya Anda mengunjungi halaman produk NAS, ikuti petunjuk di layar untuk mengaktifkan layanan NAS.

  • Kluster Container Service for Kubernetes (ACK) yang menjalankan Kubernetes versi 1.20 atau lebih baru telah dibuat. Plugin Container Storage Interface (CSI) digunakan sebagai plugin volume. Untuk informasi selengkapnya, lihat Create an ACK managed cluster.

  • Versi csi-plugin dan csi-provisioner adalah v1.24.11-5221f79-aliyun atau lebih baru. Untuk informasi selengkapnya tentang cara memperbarui csi-plugin dan csi-provisioner, lihat Install and update the CSI components.

  • Versi storage-operator adalah v1.24.105-825188d-aliyun atau lebih baru. Untuk informasi selengkapnya tentang cara memperbarui storage-operator, lihat Manage components.

  • Klien kubectl telah terhubung ke kluster Anda. Untuk informasi selengkapnya, lihat Get a cluster kubeconfig and connect to the cluster using kubectl.

    Catatan

    Untuk informasi selengkapnya tentang CNFS, lihat CNFS.

    Untuk informasi selengkapnya tentang cara menggunakan CNFS untuk mengelola sistem file NAS, lihat Use CNFS to manage NAS file systems (recommended).

Langkah 1: Buat workload untuk volume bersama

  • Buat persistent volume (PV) bernama cnfs-nas-static-pv. PV tersebut harus mereferensikan objek CNFS bernama cnfs-nas-filesystem, yang merepresentasikan sistem file NAS yang sudah ada.

  • Buat persistent volume claim (PVC) bernama cnfs-nas-static-pvc dan bind ke PV tersebut.

  • Buat StatefulSet bernama cnfs-nas-static-sts. Di dalam StatefulSet tersebut, gunakan citra busybox untuk memasang PVC dan menulis file temporary berukuran 1 GB bernama 1G.tmpfile ke titik pemasangan.

Klik untuk melihat file YAML untuk membuat workload

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 # Referensi objek CNFS bernama cnfs-nas-filesystem.
      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 # Referensi objek PV bernama cnfs-nas-static-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 # Referensi objek PVC bernama cnfs-nas-static-pvc.
EOF

Langkah 2: Lihat status pemasangan

Jalankan perintah berikut untuk melihat status pemasangan.

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

Output yang diharapkan:

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

Output yang diharapkan menunjukkan titik pemasangan, yang mengindikasikan bahwa volume berhasil dipasang.

Langkah 3: Periksa apakah data persisten berhasil ditulis

Jalankan perintah berikut untuk menulis file temporary berukuran 1 GB.

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

Jalankan perintah berikut untuk memverifikasi bahwa file temporary 1 GB telah dibuat.

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

Output yang diharapkan:

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

Output yang diharapkan menunjukkan bahwa file temporary 1 GB 1G.tmpfile telah berhasil ditulis ke direktori /data.

Langkah 4: Periksa apakah data yang ditulis dibagikan ke pod lain

Jalankan perintah berikut untuk memeriksa apakah file temporary 1 GB dibagikan ke pod lain, yaitu cnfs-nas-static-sts-1.

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

Output yang diharapkan:

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

Output yang diharapkan menunjukkan bahwa file temporary 1 GB 1G.tmpfile dibagikan antara pod cnfs-nas-static-sts-0 dan pod cnfs-nas-static-sts-1.

Catatan

Saat Anda menulis data ke penyimpanan bersama dari pod yang berbeda, CNFS tidak menjamin konsistensi data. Untuk mencegah kerusakan file, hindari menulis ke file yang sama dari beberapa pod sekaligus.

Referensi