全部产品
Search
文档中心

Container Service for Kubernetes:Gunakan CNFS untuk mengelola volume NAS terisolasi (direkomendasikan)

更新时间:Jul 06, 2025

Container Service for Kubernetes (ACK) memungkinkan Anda mengonfigurasi dan menggunakan volume File Storage NAS (NAS) terisolasi yang dikelola oleh Container Network File System (CNFS). Dalam skenario multi-penyewa atau lainnya yang memerlukan isolasi data, Anda dapat memetakan setiap direktori dalam sistem file NAS ke volume NAS yang dikelola oleh CNFS dan memasang volume tersebut ke aplikasi atau pod. Hal ini memungkinkan Anda untuk memasang direktori berbeda ke aplikasi atau pod yang berbeda karena volume-volume tersebut independen dan saling terisolasi. Dalam topik ini, StatefulSets digunakan sebagai contoh untuk menjelaskan cara menggunakan CNFS dalam mengelola volume NAS terisolasi.

Prasyarat

Langkah 1: Buat beban kerja untuk volume NAS terisolasi

  • Buat StorageClass bernama cnfs-nas-sc dan referensikan objek CNFS bernama cnfs-nas-filesystem dalam volume persisten (PV).

  • Buat StatefulSet bernama cnfs-nas-dynamic-sts.

    • Dalam StatefulSet, gunakan volumeClaimTemplates untuk membuat klaim volume persisten (PVC) bernama pvc-cnfs-nas-dynamic-sts-0.

    • Dalam StatefulSet, gunakan image BusyBox untuk memasang PV dan menulis file sementara bernama 1G.tmpfile (berukuran 1 GB) ke target pemasangan.

cat << EOF | kubectl apply -f -
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: cnfs-nas-sc
mountOptions:
  - nolock,tcp,noresvport
  - vers=3
parameters:
  volumeAs: subpath
  containerNetworkFileSystem: cnfs-nas-filesystem # Referensikan objek CNFS bernama cnfs-nas-filesystem. 
  path: "/"
  archiveOnDelete: "false"
provisioner: nasplugin.csi.alibabacloud.com
reclaimPolicy: Delete
allowVolumeExpansion: true
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: cnfs-nas-dynamic-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: pvc
  volumeClaimTemplates:
  - metadata:
      name: pvc
    spec:
      accessModes: [ "ReadWriteOnce" ]
      storageClassName: "cnfs-nas-sc" # Referensikan StorageClass bernama cnfs-nas-sc. 
      resources:
        requests:
          storage: 50Gi
EOF

Langkah 2: Lihat hasil pemasangan

Jalankan perintah berikut untuk melihat hasil pemasangan:

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

Output yang diharapkan:

971134b0e8-****.cn-zhangjiakou.nas.aliyuncs.com:/nas-95115c94-2ceb-4a83-b4f4-37bd35df**** on /data type nfs (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other)

Output menunjukkan bahwa volume telah dipasang.

Langkah 3: Periksa apakah data disimpan ke volume

Jalankan perintah berikut untuk menulis file sementara:

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

Jalankan perintah berikut untuk memeriksa apakah file sementara ditulis ke target pemasangan:

kubectl exec cnfs-nas-dynamic-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 menunjukkan bahwa file 1G.tmpfile ditulis ke direktori /data.

Langkah 4: Periksa apakah file ditulis ke volume NAS terisolasi dari pod lain

Jalankan perintah berikut untuk memeriksa apakah file sementara ada di pod bernama cnfs-nas-dynamic-sts-1:

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

Output yang diharapkan:

sh-4.4# ls -arlth
total 8.0K
drwxr-xr-x 1 root root 4.0K Dec 15 18:07 ..
drwxr-xr-x 2 root root 4.0K Dec 15 18:07 .

Output menunjukkan bahwa file 1G.tmpfile hanya ada di pod bernama cnfs-nas-dynamic-sts-0. File tersebut tidak dapat ditemukan di pod bernama cnfs-nas-dynamic-sts-1.

Referensi