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
NAS telah diaktifkan.
Jika ini adalah pertama kalinya Anda mengunjungi halaman produk NAS, ikuti petunjuk di layar untuk mengaktifkan layanan NAS.
Sebuah kluster Container Service for Kubernetes (ACK) yang menjalankan Kubernetes 1.20 atau lebih baru telah dibuat. Plug-in Container Storage Interface (CSI) digunakan sebagai plug-in volume. Untuk informasi lebih lanjut, lihat Buat kluster ACK yang dikelola.
Versi csi-plugin dan csi-provisioner adalah v1.24.11-5221f79-aliyun atau lebih baru. Untuk informasi lebih lanjut tentang cara memperbarui csi-plugin dan csi-provisioner, lihat Instal dan perbarui komponen CSI.
Versi storage-operator adalah v1.24.105-825188d-aliyun atau lebih baru. Untuk informasi lebih lanjut tentang cara memperbarui storage-operator, lihat Kelola komponen.
Klien kubectl terhubung ke kluster Anda. Untuk informasi lebih lanjut, lihat Dapatkan file kubeconfig dari kluster dan gunakan kubectl untuk terhubung ke kluster.
CatatanUntuk informasi lebih lanjut tentang CNFS, lihat CNFS.
Untuk informasi lebih lanjut tentang cara menggunakan CNFS untuk mengelola sistem file NAS, lihat Gunakan CNFS untuk mengelola sistem file NAS (direkomendasikan).
Langkah 1: Buat beban kerja untuk volume NAS terisolasi
Buat StorageClass bernama
cnfs-nas-scdan referensikan objek CNFS bernamacnfs-nas-filesystemdalam 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
EOFLangkah 2: Lihat hasil pemasangan
Jalankan perintah berikut untuk melihat hasil pemasangan:
kubectl exec cnfs-nas-dynamic-sts-0 -- mount |grep nfsOutput 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 /dataOutput yang diharapkan:
total 1G
-rw-r--r-- 1 root root 1.0G Dec 15 12:11 1G.tmpfileOutput 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 /dataOutput 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
Untuk informasi lebih lanjut tentang cara mengonfigurasi beberapa aplikasi atau pod untuk berbagi direktori yang sama dalam sistem file NAS, lihat Gunakan CNFS untuk mengelola volume NAS bersama (direkomendasikan).
Untuk informasi lebih lanjut tentang cara secara otomatis memperluas volume NAS ketika penggunaan volume NAS melebihi ambang batas, lihat Gunakan CNFS untuk memperluas volume NAS secara otomatis.