O Container Network File System (CNFS) oferece o recurso de Lixeira para restaurar arquivos excluídos acidentalmente de volumes do File Storage NAS, funcionando como uma barreira de proteção de dados simples e eficaz para aplicações. Este tutorial demonstra como implantar uma aplicação NGINX em um volume NAS gerenciado pelo CNFS, excluir um arquivo e restaurá-lo pela Lixeira.
Faturamento
A ativação da Lixeira é gratuita. No entanto, os arquivos armazenados nela consomem espaço e são cobrados conforme a tarifa do tipo de armazenamento original. Defina um período de retenção para controlar os custos de armazenamento. Para mais detalhes, consulte Faturamento de sistemas de arquivos NAS de uso geral e Faturamento da classe de armazenamento IA.
Permissões
Somente o proprietário do sistema de arquivos ou usuários do Resource Access Management (RAM) autorizados podem usar a Lixeira. Para mais informações, consulte Realizar controle de acesso com base em políticas do RAM.
Pré-requisitos
Um cluster que use o CNFS para gerenciar sistemas de arquivos NAS. Para mais detalhes, consulte Usar o CNFS para gerenciar sistemas de arquivos NAS.
Acesso à internet habilitado para o servidor de API do cluster. Para mais detalhes, consulte Habilitar acesso à internet para o servidor de API.
-
Componentes da Container Storage Interface (CSI) que atendam aos seguintes requisitos mínimos de versão:
Componente
Versão mínima
Referência
csi-pluginecsi-provisioner1.20.5-ff6490f-aliyun
storage-operator1.18.8.56-2aa33ba-aliyun
Etapa 1: Implantar a aplicação NGINX com um volume NAS gerenciado pelo CNFS
Crie uma persistent volume claim (PVC), um Deployment e um Service do tipo LoadBalancer. Em seguida, grave um arquivo index.html no volume NAS e verifique o acesso pelo navegador.
Verifique o status do objeto CNFS
-
Liste os objetos CNFS no cluster:
kubectl get cnfsNAME AGE default-cnfs-nas-7938cef-20210907193713 21h -
Verifique o status do objeto CNFS. Saída esperada: O objeto CNFS deve estar no estado Available antes de prosseguir.
kubectl get cnfs default-cnfs-nas-7938cef-20210907193713 -o yaml | grep Availablestatus: Available
Crie uma PVC
Execute o comando a seguir para criar uma PVC chamada cnfs-nas-pvc que referencie a StorageClass alibabacloud-cnfs-nas:
O campo storageClassName deve referenciar uma StorageClass do CNFS.
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
Crie um Deployment
Execute o comando a seguir para criar um Deployment chamado cnfs-nas-deployment. O Deployment monta a PVC em /app e expõe a porta do contêiner 8080 (nomeada http):
O Deployment referencia a PVC criada na etapa anterior.
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
Crie um Service LoadBalancer
Execute o comando a seguir para criar um Service LoadBalancer chamado nginx-default. Uma instância do Server Load Balancer (SLB) expõe o Service por meio de um endereço IP público e encaminha requisições HTTP para pods com o rótulo app: nginx:
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
Gravar a página de boas-vindas do NGINX
-
Obtenha o nome do pod. Saída esperada:
kubectl get podNAME READY STATUS RESTARTS AGE cnfs-nas-deployment-597bc9fb45-cmkss 1/1 Running 0 3h23m -
Abra um shell no pod e navegue até
/app:kubectl exec cnfs-nas-deployment-597bc9fb45-cmkss -ti -- sh cd /app -
Grave o arquivo
index.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> EOF -
Saia do pod:
exit
Verifique o acesso à página de boas-vindas do NGINX
-
Obtenha o endereço IP público da instância SLB. Saída esperada:
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 -
Abra o endereço IP público (por exemplo,
47.115.XX.XX) em um navegador. A página de boas-vindas do NGINX será exibida.
Etapa 2: Exclua um arquivo e restaure-o pela Lixeira
Simule uma perda de dados excluindo o arquivo index.html e restaure-o pela Lixeira no console do ACK.
Exclua o arquivo
-
Exclua o arquivo
index.htmldo pod:kubectl exec cnfs-nas-deployment-597bc9fb45-cmkss -- rm -rf /app/index.html -
Atualize o navegador. A página de boas-vindas do NGINX não estará mais acessível e retornará um erro 403.

Restaurar o arquivo pela Lixeira
O CNFS habilita a Lixeira por padrão em sistemas de arquivos NAS gerenciados.
Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, localize seu cluster e clique no nome dele. No painel à esquerda, escolha Volumes > Persistent Volumes.
-
Na página Persistent Volumes, localize o persistent volume (PV) e clique em Recycle Bin na coluna Actions. Neste exemplo, o nome do PV é nas-ecaf6018-5250-4e19-b570-5d9e657d23bc.

-
Na aba Recycle Bin da página do sistema de arquivos NAS, clique na aba Deleted Files and Directories. Localize o arquivo excluído e clique em Restore na coluna Actions.

-
Clique em Restore to the original path e, em seguida, clique em OK.

-
Atualize o navegador. A página de boas-vindas do NGINX aparecerá novamente, confirmando a restauração do arquivo
index.html.
Referências
Para obter mais informações sobre o recurso de Lixeira do NAS, consulte Lixeira.