É possível montar e usar o CNFS do ACK como um volume de armazenamento NAS compartilhado. Conforme demonstrado por uma aplicação StatefulSet, o CNFS permite montar o mesmo diretório de um sistema de arquivos NAS em várias aplicações ou Pods para resolver problemas de compartilhamento de dados entre Pods.
Pré-requisitos
-
O NAS está ativado.
Se for a primeira vez que você acessa a página do produto NAS, siga as instruções na tela para ativar o serviço NAS.
Um cluster do Container Service for Kubernetes (ACK) que executa o Kubernetes 1.20 ou posterior foi criado. O cluster utiliza o plug-in Container Storage Interface (CSI) como plug-in de volume. Para mais informações, consulte Create an ACK managed cluster.
As versões do csi-plugin e do csi-provisioner devem ser v1.24.11-5221f79-aliyun ou superiores. Para saber mais sobre como atualizar o csi-plugin e o csi-provisioner, consulte Install and update the CSI components.
A versão do storage-operator deve ser v1.24.105-825188d-aliyun ou superior. Para obter mais detalhes sobre como atualizar o storage-operator, consulte Manage components.
-
Um cliente kubectl está conectado ao seu cluster. Para instruções de conexão, consulte Connect to an ACK cluster using kubectl.
NotaPara saber mais sobre o CNFS, consulte CNFS.
Para detalhes sobre o uso do CNFS no gerenciamento de sistemas de arquivos NAS, consulte Manage NAS file systems using CNFS.
Etapa 1: Crie uma carga de trabalho para um volume compartilhado
Crie um volume persistente (PV) chamado
cnfs-nas-static-pv. O PV referencia um CNFS chamadocnfs-nas-filesystem, correspondente ao sistema de arquivos NAS criado.Crie um persistent volume claim (PVC) chamado
cnfs-nas-static-pvce vincule o PV ao PVC.Crie um StatefulSet chamado
cnfs-nas-static-sts. O StatefulSet usa uma imagem busybox para montar o PVC e grava 1 GB de dados temporários1G.tmpfileno ponto de montagem.
Etapa 2: Visualize o resultado da montagem
Visualize o resultado da montagem:
kubectl exec cnfs-nas-static-sts-0 -- mount |grep nfs
Saída esperada:
971134b0e8-****.cn-zhangjiakou.nas.aliyuncs.com:/ on /data type nfs (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other)
A saída esperada exibe um ponto de montagem, indicando que o volume foi montado com sucesso.
Etapa 3: Verifique se os dados foram persistidos no volume
Grave um arquivo temporário de 1 GB no diretório:
kubectl exec cnfs-nas-static-sts-0 -ti -- sh -c 'dd if=/dev/zero of=/data/1G.tmpfile bs=1G count=1;'
Verifique se o arquivo temporário foi gravado no diretório:
kubectl exec cnfs-nas-static-sts-0 -- ls -arlth /data
Saída esperada:
total 1G
-rw-r--r-- 1 root root 1.0G Dec 15 12:11 1G.tmpfile
A saída indica que o arquivo 1G.tmpfile foi gravado no diretório /data.
Etapa 4: Verifique se os dados estão compartilhados com outros pods
Verifique se o arquivo temporário de 1 GB está compartilhado no pod cnfs-nas-static-sts-1:
kubectl exec cnfs-nas-static-sts-1 -- ls -arlth /data
Saída esperada:
total 1G
-rw-r--r-- 1 root root 1.0G Dec 15 12:11 1G.tmpfile
A saída indica que o arquivo 1G.tmpfile existe nos pods cnfs-nas-static-sts-0 e cnfs-nas-static-sts-1.
Ao gravar dados de armazenamento compartilhado em diferentes Pods, o CNFS não garante a consistência dos dados. Evite escrever no mesmo arquivo várias vezes para prevenir sua corrupção.
Referências
Caso precise montar diretórios diferentes de um sistema de arquivos NAS em várias aplicações ou Pods para obter isolamento de armazenamento, consulte Use CNFS to manage isolated NAS volumes (recommended).
Para acionar a expansão automática quando o uso de um volume de armazenamento NAS exceder um limiar específico, consulte Use CNFS to auto-scale NAS volumes.