Container Network File System (CNFS) は、File Storage NAS ボリュームから誤って削除されたファイルを復元するためのごみ箱機能をサポートしており、アプリケーションデータにシンプルで効果的なデータ保護を提供します。本チュートリアルでは、CNFS で管理される NAS ボリューム上に NGINX アプリケーションをデプロイし、ファイルを削除してからごみ箱から復元する手順を説明します。
課金
ごみ箱の有効化は無料です。ただし、ごみ箱内のファイルはストレージ容量を消費し、元のストレージタイプの料金で課金されます。ストレージコストを制限するには、保持期間を設定してください。詳細については、「汎用 NAS ファイルシステムの課金」および「IA ストレージクラスの課金」をご参照ください。
権限
ごみ箱を使用できるのは、ファイルシステムの所有者または権限を付与された RAM ユーザーのみです。詳細については、「RAM ポリシーに基づくアクセス制御の実行」をご参照ください。
前提条件
CNFS で NAS ファイルシステムを管理しているクラスターが必要です。詳細については、「CNFS を使用した NAS ファイルシステムの管理」をご参照ください。
クラスターの API サーバーへのインターネットアクセスが有効になっている必要があります。詳細については、「API サーバーに対するインターネットアクセスの有効化」をご参照ください。
以下の最小バージョン要件を満たす Container Storage Interface (CSI) コンポーネントが必要です。
コンポーネント
最小バージョン
参照
csi-pluginおよびcsi-provisioner1.20.5-ff6490f-aliyun
storage-operator1.18.8.56-2aa33ba-aliyun
ステップ 1: CNFS で管理されている NAS ボリュームを使用した NGINX アプリケーションのデプロイ
PersistentVolumeClaim (PVC)、Deployment、および LoadBalancer Service を作成します。次に、NAS ボリュームに index.html ファイルを書き込み、ブラウザーを通じてアクセスできることを確認します。
CNFS オブジェクトのステータスの確認
クラスター内の CNFS オブジェクトを一覧表示します。
kubectl get cnfsNAME AGE default-cnfs-nas-7938cef-20210907193713 21hCNFS オブジェクトのステータスを確認します。続行する前に、CNFS オブジェクトが [Available] ステータスになっている必要があります。
kubectl get cnfs default-cnfs-nas-7938cef-20210907193713 -o yaml | grep Availablestatus: Available
PVC の作成
次のコマンドを実行して、[alibabacloud-cnfs-nas] StorageClass を参照する [cnfs-nas-pvc] という名前の PVC を作成します。
storageClassName フィールドには、CNFS StorageClass を指定する必要があります。
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
EOFDeployment の作成
次のコマンドを実行して、[cnfs-nas-deployment] という名前の Deployment を作成します。この Deployment は PVC を /app にマウントし、コンテナーポート 8080 (http という名前) を公開します。
この Deployment は、前のステップで作成した PVC を参照します。
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
EOFLoadBalancer Service の作成
次のコマンドを実行して、[nginx-default] という名前の LoadBalancer Service を作成します。Server Load Balancer (SLB) インスタンスがパブリック IP アドレスを通じて Service を公開し、app: nginx ラベルを持つ Pod に 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
EOFNGINX ウェルカムページの書き込み
Pod 名を取得します。
kubectl get podNAME READY STATUS RESTARTS AGE cnfs-nas-deployment-597bc9fb45-cmkss 1/1 Running 0 3h23mPod 内でシェルを開き、
/appに移動します。kubectl exec cnfs-nas-deployment-597bc9fb45-cmkss -ti -- sh cd /appindex.htmlファイルを書き込みます。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> EOFPod を終了します。
exit
NGINX ウェルカムページへのアクセスの確認
SLB インスタンスのパブリック IP アドレスを取得します。
kubectl get svcNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE nginx-default LoadBalancer 192.168.XX.XX 47.115.XX.XX 80:30989/TCP 20hブラウザーでパブリック IP アドレス (例:
47.115.XX.XX) を開きます。NGINX ウェルカムページが表示されます。
ステップ 2: ファイルの削除とごみ箱からの復元
index.html を削除してデータ損失をシミュレートし、Container Service for Kubernetes (ACK) コンソールのごみ箱からファイルを復元します。
ファイルの削除
Pod から
index.htmlファイルを削除します。kubectl exec cnfs-nas-deployment-597bc9fb45-cmkss -- rm -rf /app/index.htmlブラウザーを更新します。NGINX ウェルカムページにアクセスできなくなり、403 エラーが返されます。
403 Forbidden nginx/1.16.1
ごみ箱からのファイルの復元
CNFS は、管理対象の NAS ファイルシステムで、デフォルトでごみ箱を有効にします。
ACK コンソールにログインします。左側のナビゲーションペインで、[クラスター] をクリックします。
[クラスター] ページで、お使いのクラスターを見つけ、その名前をクリックします。左側のペインで、[ボリューム] > [永続ボリューム] を選択します。
[永続ボリューム] ページで、永続ボリューム (PV) を見つけ、[操作] 列の [ごみ箱] をクリックします。 この例では、PV 名は [nas-ecaf6018-5250-4e19-b570-5d9e657d23bc] です。
NAS ファイルシステムページの [ごみ箱] タブで [削除されたファイルとディレクトリ] タブをクリックし、削除されたファイルを見つけ、[操作] 列の [復元] をクリックします。
[元のパスに復元] をクリックし、次に [OK] をクリックします。
ブラウザーを更新します。NGINX ウェルカムページが再び表示され、
index.htmlが復元されたことが確認できます。
関連ドキュメント
NAS ごみ箱機能の詳細については、「ごみ箱」をご参照ください。