すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:ごみ箱機能を使用してNASデータを復元する

最終更新日:Dec 11, 2024

Container Network File System (CNFS) は、誤って削除されたNASファイルを復元するために使用されるごみ箱機能をサポートしています。 このトピックでは、CNFSのごみ箱機能を使用して削除されたNASファイルを復元する方法について説明します。 インターネットアクセスを有するNGINXアプリケーションが、例として使用される。

背景情報

この例では、CNFS StorageClassを使用してボリュームを要求し、ボリュームをNGINXアプリケーションのポッドにマウントしてから、ボリュームに格納されているindex.htmlファイルを削除します。 index.htmlファイルを削除すると、NGINXウェルカムページにアクセスできなくなります。 NGINXウェルカムページを復元するには、CNFSのごみ箱機能を使用してindex.htmlファイルを復元します。

使用上の注意

  • 課金

    ごみ箱機能の有効化には課金されません。 ただし、ごみ箱に一時的に保存されたファイルが占有するストレージスペースに対して課金されます。 ストレージ料金は、ファイルが削除される前のファイルのストレージタイプに基づいて計算されます。 ストレージコストを削減するために、ファイルの保存期間を指定することを推奨します。 詳細については、「汎用NASファイルシステムの課金」および「IAストレージクラスの課金」をご参照ください。

  • 権限

    ごみ箱機能を使用できるのは、ファイルシステムの所有者または許可されたRAM (Resource Access Management) ユーザーのみです。 詳細については、「RAMポリシーに基づくアクセス制御の実行」をご参照ください。

前提条件

  • ACKクラスターが作成されます。 Container Storage Interface (CSI) プラグインがボリュームプラグインとして使用されます。 詳細については、「ACK管理クラスターの作成」をご参照ください。

    • 新しいクラスターを使用する場合は、クラスターの作成時にCSIボリュームプラグインと [デフォルトのNASファイルシステムとCNFSを使用して動的にボリュームをプロビジョニング] を選択します。

    • クラスターの作成時に [デフォルトのNASファイルシステムとCNFSを使用したボリュームの動的プロビジョニング] を選択しない場合、CNFSを使用してNASファイルシステムを管理できます。 詳細については、「CNFSを使用したNASファイルシステムの管理」をご参照ください。

  • クラスターはインターネット経由でアクセスできます。

  • csi-pluginとcsi-provisionerのバージョンは1.20.5 ff6490f-aliyun以降です。 詳細については、「CSIプラグインのインストールとアップグレード」をご参照ください。

  • storage-operatorのバージョンは1.18.8.56-2aa33ba-aliyun以降です。 詳細については、「コンポーネントの管理」をご参照ください。

ステップ1: 永続ボリュームクレーム (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を作成します。

    重要

    CNFS StorageClassは、PVCのstorageClassNameフィールドで参照されます。 この例では、PVCの名前はcnfs-nas-pvcで、storageClassNameフィールドで参照されるStorageClassは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
  3. 次のYAMLテンプレートを使用してデプロイを作成します。

    重要

    展開は、前の手順で作成したPVCを参照するために使用されます。 この例では、Deploymentの名前はcnfs-nas-deploymentで、参照先のPVCの名前はcnfs-nas-pvcです。 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テンプレートを使用して、デプロイ用のサービスを作成します。

    説明

    次のYAMLテンプレートを使用してLoadBalancerサービスを作成します。 Server Load Balancer (SLB) インスタンスは、パブリックIPアドレスを介してサービスを公開するために使用されます。 この例では、nginx-defaultという名前のLoadBalancerサービスが作成されます。 サービスは、インターネットからapp:nginxラベルが追加されたポッドにHTTPリクエストを転送するために使用されます。

    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ウェルカムページファイルを、[実行中] 状態のポッドの /appパスに書き込みます。

    1. 次のコマンドを実行してポッドを照会します。

      kubectl get pod 

      期待される出力:

      NAME                                   READY   STATUS    RESTARTS   AGE
      cnfs-nas-deployment-597bc9fb45-cmkss   1/1     Running   0          3h23m
    2. 次のコマンドを実行して、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. 次のコマンドを実行してポッドを終了します。

      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の Welcome ページが表示されます。

    この例では、パブリックIPアドレスは47.115.XX.XXです。访问nginx

ステップ2: CNFSのごみ箱機能を確認する

CNFSが管理するNASボリュームのごみ箱から削除したファイルをリストアする例を次に示します。

  1. 次のコマンドを実行して、index.htmlファイルを削除します。

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

    ブラウザでNGINXウェルカムページを更新します。 403禁止エラーが表示されます。nginx403

  2. ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  3. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、[ボリューム] > [ボリューム] を選択します。

  4. [永続ボリューム] ページで、永続ボリューム (PV) を見つけ、[操作] 列の [ごみ箱] をクリックします。

    デフォルトでは、CNFSによって管理されるNASファイルシステムのごみ箱機能が有効になっています。 NASコンソールでindex.htmlファイルを復元できます。

    この例では、PVの名前はnas-ecaf6018-5250-4e19-b570-5d9e657d2 3bcです。NAS存储卷Nginx

  5. NASファイルシステムの [ごみ箱] タブで、[削除されたファイルとディレクトリ] タブをクリックし、[操作] 列の [復元] をクリックします。

    恢复删除文件

    [元のパスに復元] をクリックし、[OK] をクリックします。恢复至原路径

  6. ブラウザでNGINXウェルカムページを更新します。 NGINXの Welcome ページが表示されます。

    NGINXアプリケーションのindex.htmlファイルが復元されたことを示します。访问nginx

関連ドキュメント

ごみ箱を無効にして空にする方法については、「ごみ箱」をご参照ください。