O File Storage NAS (NAS) é um sistema de arquivos distribuído que oferece acesso compartilhado, dimensionamento elástico, alta confiabilidade e alto desempenho. Este tópico descreve como montar um volume NAS provisionado estaticamente e como ative armazenamento persistente e compartilhado com esse tipo de volume.
Pré-requisitos
Cluster ACK Serverless cluster criado. Para mais informações, consulte Criar um cluster ACK Serverless.
-
Sistema de arquivos NAS criado. Para mais informações, consulte Criar um sistema de arquivos.
Para criptografar dados em um volume NAS, configure as definições de criptografia durante a criação do sistema de arquivos NAS.
-
Destino de montagem criado para o sistema de arquivos NAS. Para mais informações, consulte Gerencie destinos de montagem.
O destino de montagem e o nó do cluster onde você deseja montar o sistema de arquivos NAS devem pertencer à mesma Virtual Private Cloud (VPC).
Cliente kubectl conectado ao cluster. Para mais informações, consulte Obter um arquivo kubeconfig e conectar-se a um cluster usando kubectl.
Cenários de uso
A aplicação exige alta E/S de disco.
Necessidade de compartilhar arquivos entre hosts. Por exemplo, utilizar um sistema de arquivos NAS como servidor de arquivos.
Considerações
Para montar um sistema de arquivos Extreme NAS, defina o parâmetro
pathdo volume NAS como um subdiretório de /share. Por exemplo, especifique o subdiretório /share/path1 ao montar um sistema de arquivos Extreme NAS em um pod.-
Quando vários pods montam o mesmo sistema de arquivos NAS, os dados são compartilhados entre eles. Nesse cenário, a aplicação deve sincronizar dados entre os pods caso múltiplos pods modifiquem o conteúdo do sistema de arquivos NAS.
NotaNão é possível conceder permissões de acesso ao diretório / (diretório raiz) do sistema de arquivos NAS. Além disso, não é permitido modificar a conta de usuário e o grupo de usuários aos quais esse diretório pertence.
-
Se o parâmetro securityContext.fsgroup estiver definido no modelo da aplicação, o kubelet executa a operação
chmodouchownapós a montagem do volume, o que aumenta o tempo total de montagem.NotaPara saber como acelerar o processo de montagem quando o parâmetro securityContext.fsgroup estiver configurado, consulte Perguntas frequentes sobre volumes NAS
Montar um volume NAS provisionado estaticamente no console
Step 1: Create a PV
Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.
Na página Cluster List, clique em no nome do cluster desejado ou em Details na coluna Actions.
No painel de navegação à esquerda da página de gerenciamento do cluster, escolha .
No canto superior direito da página Persistent Volumes, clique em Create.
-
Na caixa de diálogo Create PV, configure os seguintes parâmetros.
Parâmetro
Descrição
PV Type
Selecione Cloud Disk ou NAS. Neste exemplo, NAS está selecionado.
Name
Nome do PV a ser criado. Deve ser único no cluster. Neste exemplo, utiliza-se pv-nas.
Capacity
Capacidade do PV. Um sistema de arquivos NAS oferece capacidade ilimitada. Este parâmetro não limita o uso de armazenamento do sistema de arquivos NAS, apenas define a capacidade do PV.
Access mode
Escolha entre ReadWriteMany ou ReadWriteOnce. Valor padrão: ReadWriteMany.
Mount Target Domain Name
Selecione Select Mount Target para escolher um destino de montagem existente ou Custom para insira manualmente um destino de montagem.
Show Advanced Options
Subdirectory: subdiretório do sistema de arquivos NAS que será montado. Deve começar com uma barra (/). Ao definir este parâmetro, o PV é montado nesse subdiretório específico.
Caso o subdiretório especificado não exista, o sistema o cria automaticamente no sistema de arquivos NAS e realiza a montagem no cluster.
Se este parâmetro não for definido, o diretório raiz do sistema de arquivos NAS será montado.
Para sistemas de arquivos Extreme NAS, o subdiretório deve estar localizado sob o diretório /share.
Version: versão do PV.
Label
Adicione rótulos ao PV.
Após concluir a configuração, clique em Create.
Step 2: Create a PVC
No painel de navegação à esquerda da página de gerenciamento do cluster, escolha .
No canto superior direito da página Persistent Volume Claims, clique em Create.
-
Na caixa de diálogo Create PVC, configure os parâmetros necessários.
Parâmetro
Descrição
PVC Type
Selecione Cloud Disk ou NAS. Neste exemplo, NAS está selecionado.
Name
Nome da Persistent Volume Claim (PVC). O nome deve ser único dentro do cluster.
Allocation Mode
Neste exemplo, Existing Volumes está selecionado.
NotaSe nenhum PV tiver sido criado previamente, defina Allocation Mode como Create Volume e configure os parâmetros necessários para criar um novo PV. Para mais detalhes, consulte Criar um PV.
Existing Volumes
Clique em Select PV. Localize o PV desejado e clique em Select na coluna Actions.
Capacity
Capacidade solicitada pela PVC.
NotaA capacidade solicitada pela PVC não pode exceder a capacidade do PV vinculado a ela.
-
Clique em Create.
Após a criação, a PVC aparece na lista de PVCs e fica vinculada ao PV correspondente.
Step 3: Create an application
No painel de navegação à esquerda da página de gerenciamento do cluster, escolha .
Na página Deployments, clique em Create from Image.
-
Configure os parâmetros da aplicação.
Este exemplo demonstra a configuração dos parâmetros de volume. Para detalhes sobre outros parâmetros, consulte Criar uma carga de trabalho sem estado (Deployment).
É possível configure volumes locais e volumes em nuvem para clusters ACK Serverless.
Add Local Storage: Selecione ConfigMap, Secret ou EmptyDir na lista suspensa PV Type. Em seguida, defina os parâmetros Mount Source e Container Path para montar o volume em um caminho do contêiner. Para mais informações, consulte Volumes.
Add PVC: Adicione volumes em nuvem.
Neste exemplo, um volume NAS é montado no caminho /tmp do contêiner.

-
Defina os demais parâmetros e clique em Create.
Depois que a aplicação for criada, utilize o volume para armazenar os dados da aplicação.
Montar um volume NAS provisionado estaticamente usando kubectl
-
Execute o comando abaixo para criar um PV provisionado estaticamente:
kubectl create -f pv-nas.yamlO modelo YAML a seguir exemplifica a criação de um PV provisionado estaticamente:
apiVersion: v1 kind: PersistentVolume metadata: name: pv-nas labels: alicloud-pvname: pv-nas spec: capacity: storage: 5Gi accessModes: - ReadWriteMany csi: driver: nasplugin.csi.alibabacloud.com volumeHandle: pv-nas volumeAttributes: server: "2564f4****-ysu87.cn-shenzhen.nas.aliyuncs.com" path: "/csi" mountOptions: - nolock,tcp,noresvport - vers=3Parâmetro
Descrição
name
Nome do PV.
labels
Rótulos a serem adicionados ao PV.
storage
Capacidade do volume NAS.
accessModes
Modo de acesso do PV.
driver
Tipo de driver de armazenamento usado para provisionar o volume. Neste exemplo, o valor é
nasplugin.csi.alibabacloud.com, indicando o uso do plug-in CSI fornecido pelo Alibaba Cloud.volumeHandle
Identificador exclusivo do PV. Caso utilize múltiplos PVs, cada identificador deve ser único.
server
Destino de montagem do sistema de arquivos NAS.
path
Subdiretório do sistema de arquivos NAS a ser montado. Para sistemas Extreme NAS, o subdiretório deve estar sob o diretório /share.
vers
Versão do protocolo Network File System (NFS). Recomenda-se o uso do NFSv3. Sistemas de arquivos Extreme NAS suportam apenas NFSv3.
-
Execute o comando abaixo para criar uma PVC para o PV provisionado estaticamente:
Ao criar uma PVC do tipo NAS, defina o parâmetro
selectorpara configure a seleção do PV e sua vinculação à PVC.kubectl create -f pvc-nas.yamlO modelo YAML a seguir exemplifica a criação de uma PVC para provisionamento estático:
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: pvc-nas spec: accessModes: - ReadWriteMany resources: requests: storage: 5Gi selector: matchLabels: alicloud-pvname: pv-nasParâmetro
Descrição
name
Nome da PVC.
accessModes
Modo de acesso da PVC.
storage
Capacidade solicitada pela PVC. A capacidade solicitada não pode exceder a capacidade do PV vinculado à PVC.
matchLabels
Rótulos utilizados para selecionar um PV e vinculá-lo à PVC.
-
Execute o comando abaixo para criar uma aplicação chamada nas-static e montar a PVC criada nela:
kubectl create -f nas.yamlO modelo YAML a seguir exemplifica o arquivo nas.yaml utilizado para criar a aplicação nas-static.
apiVersion: apps/v1 kind: Deployment metadata: name: nas-static labels: app: nginx spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest ports: - containerPort: 80 volumeMounts: - name: pvc-nas mountPath: "/data" volumes: - name: pvc-nas persistentVolumeClaim: claimName: pvc-nasParâmetro
Descrição
mountPath
Caminho do contêiner onde o volume NAS é montado.
claimName
Nome da PVC montada na aplicação.
-
Execute o comando abaixo para consultar os pods que executam a aplicação:
kubectl get podSaída esperada:
NAME READY STATUS RESTARTS AGE nas-static-5b5cdb85f6-n**** 1/1 Running 0 32s nas-static-c5bb4746c-4**** 1/1 Running 0 32s
Verifique se o sistema de arquivos NAS persiste dados
-
Consulte a aplicação implantada e os arquivos no sistema de arquivos NAS montado.
-
Execute o comando abaixo para obter o nome da aplicação implantada:
kubectl get podSaída esperada:
NAME READY STATUS RESTARTS AGE nas-static-5b5cdb85f6-n**** 1/1 Running 0 32s nas-static-c5bb4746c-4**** 1/1 Running 0 32s -
Execute o comando abaixo para listar os arquivos no caminho /data de um pod. O pod
nas-static-5b5cdb85f6-n****serve como exemplo:kubectl exec nas-static-5b5cdb85f6-n**** -- ls /dataNenhuma saída é retornada, indicando que não existem arquivos no caminho /data.
-
-
Execute o comando abaixo para criar um arquivo chamado nas no caminho /data do pod
nas-static-5b5cdb85f6-n****:kubectl exec nas-static-5b5cdb85f6-n**** -- touch /data/nas -
Execute o comando abaixo para listar os arquivos no caminho /data do pod
nas-static-5b5cdb85f6-n****:kubectl exec nas-static-5b5cdb85f6-n**** -- ls /dataSaída esperada:
nas -
Execute o comando abaixo para exclua o pod:
kubectl delete pod nas-static-5b5cdb85f6-n**** -
Abra outro terminal cli e execute o comando abaixo para acompanhar a exclusão e recriação do pod:
kubectl get pod -w -l app=nginx -
Verifique se o arquivo ainda existe após a exclusão do pod.
-
Execute o comando abaixo para obter o nome do pod recriado:
kubectl get podSaída esperada:
NAME READY STATUS RESTARTS AGE nas-static-5b5cdb85f6-n**** 1/1 Running 0 32s nas-static-c5bb4746c-4**** 1/1 Running 0 32s -
Execute o comando abaixo para listar os arquivos no caminho /data do pod
nas-static-5b5cdb85f6-n****:kubectl exec nas-static-5b5cdb85f6-n**** -- ls /dataSaída esperada:
nasO arquivo nas ainda existe no caminho /data. Isso confirma que os dados foram persistidos no sistema de arquivos NAS.
-
Verifique se os dados no sistema de arquivos NAS são compartilhados entre pods
-
Consulte os pods criados para a aplicação e os arquivos no sistema de arquivos NAS montado.
-
Execute o comando abaixo para listar os pods da aplicação:
kubectl get podSaída esperada:
NAME READY STATUS RESTARTS AGE nas-static-5b5cdb85f6-n**** 1/1 Running 0 32s nas-static-c5bb4746c-4**** 1/1 Running 0 32s -
Execute o comando abaixo para listar os arquivos no caminho /data de cada pod:
kubectl exec nas-static-5b5cdb85f6-n**** -- ls /data kubectl exec nas-static-c5bb4746c-4**** -- ls /data
-
-
Execute o comando abaixo para criar um arquivo chamado nas no caminho /data de um dos pods:
kubectl exec nas-static-5b5cdb85f6-n**** -- touch /data/nas -
Execute o comando abaixo para listar os arquivos no caminho /data de cada pod:
-
Execute o comando abaixo para listar os arquivos no caminho /data do pod
nas-static-5b5cdb85f6-n****:kubectl exec nas-static-5b5cdb85f6-n**** -- ls /dataSaída esperada:
nas -
Execute o comando abaixo para listar os arquivos no caminho /data do pod
nas-static-c5bb4746c-4****:kubectl exec nas-static-c5bb4746c-4**** -- ls /dataSaída esperada:
nasSe um arquivo criado no caminho /data de um pod também aparecer no caminho /data de outro pod, isso confirma que os dados no sistema de arquivos NAS são compartilhados entre esses dois pods.
-