全部產品
Search
文件中心

Container Service for Kubernetes:使用資源回收筒功能恢複NAS檔案資料

更新時間:Apr 19, 2025

容器網路檔案系統CNFS支援NAS檔案資源回收筒功能,避免檔案誤刪除。本文介紹如何通過CNFS資源回收筒功能恢複被刪除的NAS檔案,以公網可訪問的Nginx應用為例。

使用說明

  • 費用說明

    資源回收筒功能本身不收取任何費用,但是暫存在資源回收筒中的檔案將按照刪除前的儲存類型收取儲存費用。為節省不必要的儲存費用,請您合理設定檔保留時間。計費詳情,請參見通用型NAS計費

  • 許可權說明

    只有檔案系統的擁有者及授予了檔案系統資源回收筒使用許可權的RAM使用者才能使用資源回收筒功能。更多資訊,請參見授予RAM使用者對檔案系統資源回收筒的系統管理權限

前提條件

操作步驟

使用CNFS的StorageClass建立樣本目錄並綁定Nginx。刪除index.html檔案後,Nginx無法訪問歡迎頁面。通過控制台資源回收筒恢複index.html檔案,即可恢複Nginx的歡迎頁面。

步驟一:建立PVC並綁定到公網可訪問的Nginx

  1. 查看CNFS對象的狀態。

    需要確保CNFS對象的狀態為Available

    1. 查看CNFS對象。

      kubectl get cnfs

      預期輸出:

      NAME                                      AGE
      default-cnfs-nas-7938cef-20210907193713   21h
    2. 查看CNFS對象的狀態。

      kubectl get cnfs default-cnfs-nas-7938cef-20210907193713 -o yaml | grep Available

      預期輸出:

      status: Available
  2. 使用以下YAML樣本建立PVC。

    重要

    PVC對象的storageClassName引用CNFS的StorageClass。本例中PVC名稱為cnfs-nas-pvcstorageClassNamealibabacloud-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
  3. 使用以下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
  4. 使用以下YAML樣本為Deployment對象建立Service。

    說明

    建立Loadbalancer類型的Service,SLB會暴露公網IP,可通過SLB的公網IP訪問Deployment。本樣本建立名為nginx-default的Service,類型為LoadBalancer,該Service將公網暴露的HTTP請求轉寄到labelapp: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
  5. 將Nginx的歡迎頁面加入到啟動狀態的Pod的/app路徑下。

    1. 查看Pod。

      kubectl get pod 

      預期輸出:

      NAME                                   READY   STATUS    RESTARTS   AGE
      cnfs-nas-deployment-597bc9fb45-cmkss   1/1     Running   0          3h23m
    2. 進入Pod cnfs-nas-deployment-597bc9fb45-cmkss的/app路徑。

      kubectl exec cnfs-nas-deployment-597bc9fb45-cmkss -ti sh
      cd /app
    3. 將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
    4. 退出Pod。

      exit
  6. 擷取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
  7. 在瀏覽器地址欄輸入公網IP,可以看到Nginx的歡迎頁面。

    本樣本中公網IP為47.115.XX.XX訪問nginx

步驟二:驗證CNFS資源回收筒的恢複功能

以下樣本介紹在刪除檔案的情境下,如何通過CNFS託管的NAS儲存卷的資源回收筒恢複檔案。

  1. 刪除index.html檔案,並重新整理瀏覽器查看Nginx的歡迎頁面(提示403 Forbidden)。

    kubectl exec cnfs-nas-deployment-597bc9fb45-cmkss -- rm -rf /app/index.html

    nginx403

  2. 登入Container Service管理主控台,在左側導覽列選擇叢集列表

  3. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇儲存 > 儲存卷

  4. 儲存卷頁面,在目標儲存卷右側操作列單擊資源回收筒

    CNFS託管的NAS預設開啟資源回收筒,可以在控制台恢複Nginx的index.html檔案。

    本樣本的PV名稱為nas-ecaf6018-5250-4e19-b570-5d9e657d23bcNAS儲存卷Nginx

  5. 在目標檔案系統資源回收筒頁簽,單擊已刪除檔案和目錄頁簽,在目標刪除路徑的右側操作列單擊恢複

    恢複刪除檔案

    選擇恢複至原路徑,並單擊確定恢複至原路徑

  6. 重新整理瀏覽器,確認Nginx的歡迎頁面已恢複正常。

    表示Nginx的index.html檔案已恢複。訪問nginx

相關文檔

如需瞭解更多關於NAS資源回收筒功能的資訊(例如如何關閉並清空資源回收筒),請參見資源回收筒