容器網路檔案系統CNFS支援NAS檔案資源回收筒功能,避免檔案誤刪除。本文以公網可訪問的Nginx應用為例,介紹如何通過CNFS資源回收筒恢複被刪除的NAS檔案。
背景資訊
通過使用CNFS的StorageClass建立樣本目錄並綁定Nginx,然後在樣本目錄上刪除index.html檔案,此時Nginx無法訪問歡迎頁面。然後可以通過控制台的資源回收筒功能恢複index.html檔案,同時也恢複了Nginx的歡迎頁面。
使用說明
費用說明
資源回收筒功能本身不收取任何費用,但是暫存在資源回收筒中的檔案將按照刪除前的儲存類型收取儲存費用。為節省不必要的儲存費用,請您合理設定檔保留時間。計費詳情,請參見通用型NAS計費和低頻介質計費說明。
許可權說明
只有檔案系統的擁有者及授予了檔案系統資源回收筒使用許可權的RAM使用者才能使用資源回收筒功能。更多資訊,請參見授予RAM使用者對檔案系統資源回收筒的系統管理權限。
前提條件
已建立Kubernetes叢集,且儲存外掛程式選擇為CSI。具體操作,請參見建立Kubernetes託管版叢集。
若需要建立叢集,選擇CSI儲存外掛程式時請同時選中建立預設NAS檔案系統和CNFS容器網路檔案系統動態儲存裝置類型。
若已建立叢集,但未選中建立預設NAS檔案系統和CNFS容器網路檔案系統動態儲存裝置類型,請使用CNFS託管NAS檔案系統。具體操作,請參見通過CNFS方式使用NAS檔案系統。
叢集已開啟公網訪問。
關於建立叢集時如何開啟公網訪問,請參見建立叢集時綁定EIP。
關於已有叢集如何開啟訪問,請參見建立叢集後綁定公網IP。
csi-plugin和csi-provisioner組件版本不低於v1.20.5-ff6490f-aliyun。關於如何升級CSI-Plugin和CSI-Provisioner組件,請參見升級CSI-Plugin和CSI-Provisioner。
storage-operator組件版本不低於v1.18.8.56-2aa33ba-aliyun。關於如何升級storage-operator組件,請參見管理組件。
步驟一:建立PVC並綁定到公網可訪問的Nginx
查看CNFS對象的狀態。
需要確保CNFS對象的狀態為Available。
執行以下命令查看CNFS對象。
kubectl get cnfs
預期輸出:
NAME AGE default-cnfs-nas-7938cef-20210907193713 21h
執行以下命令查看CNFS對象的狀態。
kubectl get cnfs default-cnfs-nas-7938cef-20210907193713 -o yaml | grep Available
預期輸出:
status: Available
使用以下YAML樣本建立PVC。
重要PVC對象的storageClassName引用CNFS的StorageClass。本例中PVC名稱為cnfs-nas-pvc,storageClassName為alibabacloud-cnfs-nas。
cat << EOF | kubectl apply -f - kind: PersistentVolumeClaim apiVersion: v1 metadata: name: cnfs-nas-pvc spec: accessModes: - ReadWriteMany storageClassName: alibabacloud-cnfs-nas resources: requests: storage: 30Gi EOF
使用以下YAML樣本建立Deployment。
重要Deployment對象引用上個步驟建立的PVC。本樣本Deployment名稱為cnfs-nas-deployment,引用的PVC名稱為cnfs-nas-pvc,映射到容器的路徑為/app,並開啟名稱為
http
的容器連接埠8080。cat << EOF | kubectl apply -f - apiVersion: apps/v1 kind: Deployment metadata: name: cnfs-nas-deployment labels: app: nginx spec: selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: securityContext: runAsUser: 0 containers: - name: nginx image: docker.io/bitnami/nginx:1.16.1-debian-9-r56 volumeMounts: - mountPath: "/app" name: cnfs-nas-pvc ports: - containerPort: 8080 name: http volumes: - name: cnfs-nas-pvc persistentVolumeClaim: claimName: cnfs-nas-pvc EOF
使用以下YAML樣本為Deployment對象建立Service。
說明建立Loadbalancer類型的Service,SLB會暴露公網IP,可通過SLB的公網IP訪問Deployment。本樣本建立名為nginx-default的Service,類型為LoadBalancer,該Service將公網暴露的HTTP請求轉寄到label為app:nginx的Pod上。
cat << EOF | kubectl apply -f - apiVersion: v1 kind: Service metadata: name: nginx-default labels: app: nginx spec: type: LoadBalancer externalTrafficPolicy: "Cluster" ports: - name: http port: 80 targetPort: http selector: app: nginx EOF
將Nginx的歡迎頁面加入到啟動狀態的Pod的/app路徑下。
執行以下命令查看Pod。
kubectl get pod
預期輸出:
NAME READY STATUS RESTARTS AGE cnfs-nas-deployment-597bc9fb45-cmkss 1/1 Running 0 3h23m
執行以下命令進入Pod
cnfs-nas-deployment-597bc9fb45-cmkss
的/app路徑。kubectl exec cnfs-nas-deployment-597bc9fb45-cmkss -ti sh cd /app
執行以下命令將index.html寫入到/app路徑下。
cat << EOF >> index.html <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> html { color-scheme: light dark; } body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> <p>For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br/> Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p> </body> </html> EOF
執行以下命令退出Pod。
exit
執行以下命令擷取SLB的公網IP。
kubectl get svc
預期輸出:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE nginx-default LoadBalancer 192.168.XX.XX 47.115.XX.XX 80:30989/TCP 20h
在瀏覽器地址欄輸入公網IP,可以看到Nginx的歡迎頁面。
本樣本中公網IP為
47.115.XX.XX
。
步驟二:驗證CNFS資源回收筒的恢複功能
以下樣本介紹在刪除檔案的情境下,如何通過CNFS託管的NAS儲存卷的資源回收筒恢複檔案。
執行以下命令刪除index.html檔案。
kubectl exec cnfs-nas-deployment-597bc9fb45-cmkss -- rm -rf /app/index.html
重新整理瀏覽器再次查看Nginx的歡迎頁面,可以看到頁面提示403 Forbidden。
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
在儲存卷頁面,在目標儲存卷右側操作列單擊資源回收筒。
CNFS託管的NAS預設開啟資源回收筒,可以在控制台恢複Nginx的index.html檔案。
本樣本的PV名稱為nas-ecaf6018-5250-4e19-b570-5d9e657d23bc。
在目標檔案系統資源回收筒頁簽,單擊已刪除檔案和目錄頁簽,在目標刪除路徑的右側操作列單擊恢複。
選擇恢複至原路徑,並單擊確定。
重新整理瀏覽器可以看到Nginx的歡迎頁面已恢複正常。
表示Nginx的index.html檔案已恢複。
相關文檔
如需關閉並清空資源回收筒,請參見更多操作。