Os volumes NAS oferecem persistência de dados, evitando perdas quando um pod é recriado, e permitem o compartilhamento de dados, possibilitando que vários pods leiam e escrevam simultaneamente. O Container Service for Kubernetes (ACK) permite montar sistemas de arquivos NAS existentes em workloads como volumes persistentes estáticos.
-
Volume estático: Crie um PV antecipadamente para representar um recurso de armazenamento existente, como um sistema de arquivos NAS. A aplicação cria um PVC para solicitar armazenamento e o sistema vincula esse PVC a um PV pré-provisionado adequado. Esse é um método comum para gerenciar recursos de armazenamento existentes. No entanto, o PVC vinculado não suporta expansão online por padrão.
Para usar a expansão automática de volume, consulte Use dynamic NAS volumes ou Use CNFS to automatically expand NAS volumes .
Volume dinâmico: Não é necessário criar um PV com antecedência. Quando uma aplicação cria um PVC, o sistema provisiona automaticamente um novo volume e um PV correspondente sob demanda, com base na StorageClass especificada no PVC. Essa abordagem é mais flexível e suporta expansão de volume.
Fluxo de trabalho
Este diagrama ilustra o fluxo de trabalho para montar um volume de armazenamento NAS estático em um cluster ACK.
|
|
|
Pré-requisitos
-
Os componentes csi-plugin e csi-provisioner devem estar instalados.
Os componentes CSI são instalados por padrão. Verifique se eles permanecem instalados. Confira o status da instalação na página . Recomendamos upgrading the CSI components para a versão mais recente.
-
O sistema de arquivos NAS deve atender às seguintes condições. Caso contrário, create a file system ou use a dynamically provisioned NAS volume.
O NAS possui limitations sobre conectividade de montagem, número de sistemas de arquivos e tipos de protocolo.
Protocol Type: Deve ser NFS.
VPC: O sistema de arquivos NAS deve estar na mesma VPC do cluster. O NAS suporta montagem entre zonas de disponibilidade, mas não entre VPCs.
Mount Target: Adicione um ponto de montagem na mesma VPC do cluster. O status deve ser Available. Para obter detalhes, consulte Manage mount targets. Anote o endereço do ponto de montagem.
(Opcional) Encryption Type: Para criptografar os dados do volume, configure o tipo de criptografia ao criar o sistema de arquivos NAS.
Observações de uso
Não exclua pontos de montagem: Para evitar erros de E/S nos nós, não exclua um ponto de montagem no console NAS enquanto o volume correspondente estiver em uso.
-
Escritas simultâneas: O NAS fornece armazenamento compartilhado. Quando vários Pods montam o mesmo volume, a aplicação deve lidar com possíveis problemas de consistência de dados decorrentes de escritas concorrentes.
Para mais informações sobre limitações de escritas simultâneas no NAS, consulte Multiple processes writing to the same log file e Latency in reading updated file content across ECS instances .
-
Desempenho de montagem: Se você configurar o parâmetro
securityContext.fsgroupna aplicação, o kubelet executa recursivamentechmodouchownapós a montagem do volume, aumentando significativamente o tempo de inicialização do Pod.Para otimizar o desempenho de montagem, consulte NAS volume FAQ .
Etapa 1: Criar um PersistentVolume
Crie um PersistentVolume (PV) para disponibilizar um sistema de arquivos NAS existente no cluster.
Kubectl
-
Crie um arquivo chamado
pv-nas.yamlcom o seguinte conteúdo.apiVersion: v1 kind: PersistentVolume metadata: # The name of the PV, which must be unique in the cluster. name: pv-nas # The label of the PV, used for matching with a PVC. labels: alicloud-pvname: pv-nas spec: capacity: # This capacity is for matching purposes only. The actual capacity is determined by the NAS file system. storage: 5Gi accessModes: - ReadWriteMany # The reclaim policy for the PV. persistentVolumeReclaimPolicy: Retain csi: # The driver. This value is fixed when you use a NAS volume. driver: nasplugin.csi.alibabacloud.com # Must be the same as metadata.name. volumeHandle: pv-nas volumeAttributes: server: "0c47****-mpk25.cn-shenzhen.nas.aliyuncs.com" # Replace this value with the address of your NAS mount target. # The NAS subdirectory to mount. If the subdirectory does not exist, it is automatically created. path: "/csi" mountOptions: - nolock,tcp,noresvport - vers=3Parâmetro
Descrição
storageCapacidade do PV. Este valor serve apenas para correspondência com um PersistentVolumeClaim (PVC) e não limita a capacidade real disponível. A capacidade de armazenamento disponível para a aplicação é limitada pela capacidade total do sistema de arquivos NAS.
A capacidade máxima de um sistema de arquivos NAS é determinada pelas suas especificações. Para mais informações, consulte General-purpose NAS e Extreme NAS.
accessModesModo de acesso. Valores válidos:
-
ReadWriteMany(padrão): O volume pode ser montado como leitura e escrita por vários nós. -
ReadWriteOnce: O volume pode ser montado como leitura e escrita por um único nó. -
ReadOnlyMany: O volume pode ser montado como somente leitura por vários nós.
persistentVolumeReclaimPolicyPolítica de recuperação do PV. Define o que acontece com o PV e com os dados do backend NAS quando o PersistentVolumeClaim (PVC) vinculado é excluído.
-
Retain(Recomendado): Após a exclusão do PVC, o PV entra no estadoReleased. Os dados do backend NAS são retidos e devem ser excluídos manualmente. -
Delete: Exclui o PV quando o PVC associado é removido. Esta política requerarchiveOnDelete. No entanto, PVs estáticos não suportamarchiveOnDelete. Portanto, quando esta política é definida comoDelete, excluir o PVC não remove o PV nem os arquivos no sistema de arquivos NAS.Para configurar
archiveOnDelete, consulte Use dynamically provisioned NAS volumes.
driverDriver. Defina este parâmetro como
nasplugin.csi.alibabacloud.comao usar o plug-in CSI do Alibaba Cloud NAS.volumeHandleIdentificador exclusivo para o volume no sistema de armazenamento de backend. Deve ser igual ao nome do PV (
metadata.name). Se você usar vários PVs, este valor deve ser único para cada PV.serverEndereço do ponto de montagem do NAS.
Para encontrar o endereço do ponto de montagem, consulte Manage mount targets.
pathSubdiretório do NAS a ser montado. Se este parâmetro não for especificado, o diretório raiz será montado por padrão.
Se o diretório não existir no sistema de arquivos NAS, ele será criado automaticamente e depois montado.
-
NAS de uso geral: O diretório raiz é
/. -
Extreme NAS: O diretório raiz é
/share. Ao montar um subdiretório, opathdeve começar com/share, como/share/data.
mountOptionsOpções de montagem para NAS, incluindo a versão do protocolo NFS. Por padrão, os volumes são montados usando NFSv3. Você pode especificar uma versão diferente com uma opção como
vers=4.0. Para informações sobre os protocolos NFS suportados por diferentes tipos de NAS, consulte NFS protocols. -
-
Crie o PV.
kubectl create -f pv-nas.yaml -
Verifique o status e as propriedades do PV.
kubectl get pvSaída esperada:
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS VOLUMEATTRIBUTESCLASS REASON AGE pv-nas 5Gi RWX Retain Available <unset> 25sA saída mostra que o PV foi criado com sucesso com capacidade de 5 Gi e tem status
Available, indicando que ainda não está vinculado a um PersistentVolumeClaim (PVC).
Console
Faça login no console ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do cluster. No painel de navegação à esquerda, clique em .
-
Na página Persistent Volumes, clique em Create. Na caixa de diálogo exibida, configure os parâmetros e clique em Create.
Parâmetro
Descrição
PV Type
Selecione NAS.
Volume Name:
Nome do PV, que deve ser exclusivo no cluster.
Capacity
Capacidade do PV. Este valor serve apenas para correspondência com um PersistentVolumeClaim (PVC) e não limita a capacidade real disponível. A capacidade de armazenamento disponível para a aplicação é limitada pela capacidade total do sistema de arquivos NAS.
A capacidade máxima de um sistema de arquivos NAS é determinada pelas suas especificações. Para mais informações, consulte General-purpose NAS e Extreme NAS.
Access Mode
Configure o modo de acesso. Valores válidos:
-
ReadWriteMany: O volume pode ser montado como leitura e escrita por vários nós.
-
ReadWriteOnce: O volume pode ser montado como leitura e escrita por um único nó.
Enable CNFS
Define se deve usar o Container Network File System (CNFS) para aproveitar seus recursos de O&M automatizado, aceleração de cache e monitoramento de desempenho.
Para usar o CNFS para gerenciar um sistema de arquivos NAS existente, consulte Create a CNFS-managed NAS file system (Recommended).
Mount Target Domain Name:
Este parâmetro é exibido apenas quando o CNFS está desativado.
Endereço do ponto de montagem do NAS.
Para obter o endereço, consulte Manage mount targets.
-
Select Mount Target: Selecione o endereço de um ponto de montagem adicionado anteriormente.
-
Custom: Use um nome de domínio personalizado como endereço de montagem. Certifique-se de que o nome de domínio personalizado resolva para o ponto de montagem NAS alvo.
Advanced Options (Optional)
Mount Path
Subdiretório do NAS a ser montado. Se este parâmetro não for especificado, o diretório raiz será montado por padrão.
Se o diretório não existir no sistema de arquivos NAS, ele será criado automaticamente e depois montado.
-
NAS de uso geral: O diretório raiz é
/. -
Extreme NAS: O diretório raiz é
/share. Ao montar um subdiretório, opathdeve começar com/share, como/share/data.
Reclaim Policy
-
Retain (padrão): Quando o PVC é excluído, o PV e os arquivos NAS não são removidos. Exclua-os manualmente.
-
Delete: Exclui o PV quando o PVC associado é removido. Esta política requer
archiveOnDelete. No entanto, PVs estáticos não suportamarchiveOnDelete. Portanto, quando esta política é definida comoDelete, excluir o PVC não remove o PV nem os arquivos no sistema de arquivos NAS.Para configurar
archiveOnDelete, consulte Use dynamically provisioned NAS volumes.
Mount Options
Opções de montagem para NAS, incluindo a versão do protocolo NFS. Por padrão, os volumes são montados usando NFSv3. Você pode especificar uma versão diferente com uma opção como
vers=4.0. Para informações sobre os protocolos NFS suportados por diferentes tipos de NAS, consulte NFS protocols.Labels
Rótulos a serem aplicados ao PV.
Após a criação do PV, visualize-o na página Persistent Volumes.
-
Etapa 2: Criar um PVC
Crie um Persistent Volume Claim (PVC) para solicitar armazenamento persistente para a aplicação.
kubectl
-
Crie um arquivo chamado
pvc-nas.yamlpara vincular ao PV criado anteriormente.kind: PersistentVolumeClaim apiVersion: v1 metadata: name: pvc-nas # The PVC name, which must be unique within the namespace. spec: accessModes: - ReadWriteMany resources: requests: storage: 5Gi selector: matchLabels: alicloud-pvname: pv-nas # Matches the PV created earlier by its label.Parâmetro
Descrição
accessModesModo de acesso. Valores válidos:
-
ReadWriteMany(padrão): O volume pode ser montado como leitura e escrita por vários nós. -
ReadWriteOnce: O volume pode ser montado como leitura e escrita por um único nó. -
ReadOnlyMany: O volume pode ser montado como somente leitura por vários nós.
storageValor usado para encontrar um PV correspondente. Não limita a capacidade real de armazenamento.
A capacidade máxima de um sistema de arquivos NAS é determinada pelas suas especificações. Para mais informações, consulte General-purpose NAS e Extreme NAS.
matchLabelsEspecifica o rótulo usado para selecionar um PV para vinculação.
-
-
Crie o PVC.
kubectl create -f pvc-nas.yaml -
Verifique o status do PVC.
kubectl get pvcSaída esperada:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE pvc-nas Bound pv-nas 5Gi RWX <unset> 5sA saída mostra que o PVC pvc-nas está vinculado (Bound) ao PV pv-nas e pronto para uso pela aplicação.
Console
No painel de navegação à esquerda da página de gerenciamento do cluster, escolha .
-
Na página Persistent Volume Claims, clique em Create e configure os parâmetros conforme descrito na tabela a seguir.
Parâmetro
Descrição
PVC Type
Selecione NAS.
Name
Nome do PVC, que deve ser exclusivo dentro do namespace.
Allocation Mode
Selecione Existing Persistent Volume.
Este tópico usa o PV criado na etapa anterior. Se você não criou um PV, defina o Allocation Mode como Create PV.
Existing Volumes
Selecione o PV criado anteriormente.
Capacity
Valor usado para encontrar um PV correspondente. Não limita a capacidade real de armazenamento.
A capacidade máxima de um sistema de arquivos NAS é determinada pelas suas especificações. Para mais informações, consulte General-purpose NAS e Extreme NAS.
Access Mode
Modo de acesso. Valores válidos:
-
ReadWriteMany(padrão): O volume pode ser montado como leitura e escrita por vários nós. -
ReadWriteOnce: O volume pode ser montado como leitura e escrita por um único nó. -
ReadOnlyMany: O volume pode ser montado como somente leitura por vários nós.
-
Etapa 3: Criar aplicação e montar NAS
Após criar o PVC, monte o PV vinculado em uma aplicação.
kubectl
-
Crie um arquivo chamado
deploy.yamlcom o seguinte conteúdo. Este manifesto referencia o PVC criado anteriormente.Esta configuração permite verificar o recurso de armazenamento compartilhado do NAS.
-
Crie o Deployment.
kubectl create -f deploy.yaml -
Verifique o status dos Pods.
kubectl get pod -l app=nginxSaída esperada:
NAME READY STATUS RESTARTS AGE nas-test-****-***a 1/1 Running 0 32s nas-test-****-***b 1/1 Running 0 32s
Console
Na página Clusters, clique no nome do cluster. No painel de navegação à esquerda, clique em .
-
Na página Deployments, clique em Create from Image e configure os parâmetros da aplicação.
A tabela a seguir descreve os principais parâmetros. Mantenha os valores padrão para os demais parâmetros. Para mais informações, consulte Create a stateless workload (Deployment).
Categoria
Parâmetro
Descrição
Basic Information
Application Name
Nome do Deployment.
Replicas:
Número de réplicas para o Deployment.
Esta configuração permite verificar o recurso de armazenamento compartilhado do NAS.
Container
Image Name
Endereço da imagem da aplicação.
Required Resources
Recursos necessários de vCPU e memória.
Volume
Clique em Add PVC e configure os parâmetros.
-
Mount Source: Selecione o PVC criado anteriormente.
-
Container Path: Caminho dentro do contêiner para montar o sistema de arquivos NAS, como
/data.
Quando a implantação terminar, acesse a página Deployments e clique no nome da aplicação. Na aba Pods, verifique se os Pods estão no estado Running.
-
Verificar armazenamento compartilhado e persistente
Após implantar a aplicação, verifique se o volume funciona conforme o esperado.
|
Armazenamento compartilhado |
Armazenamento persistente |
|
Para verificar o armazenamento compartilhado, crie um arquivo em um pod e verifique sua existência em outro.
|
Para verificar o armazenamento persistente, reinicie o Deployment e confirme se os dados persistem nos novos pods.
|
Preparação para produção
-
Segurança e gerenciamento de acesso
Use grupos de permissões para controle de acesso: O NAS utiliza permission groups para gerenciar o acesso à rede. Siga o princípio do menor privilégio: adicione apenas os endereços IP privados dos nós do cluster ou seus blocos CIDR de vSwitch ao grupo de permissões. Evite permissões excessivamente amplas, como
0.0.0.0/0.
-
Otimização de desempenho e custos
Selecione um tipo de NAS apropriado: Consulte File system selection para escolher um tipo de NAS que atenda aos requisitos de IOPS e throughput da aplicação.
Otimize as opções de montagem (
mountOptions): Ajuste os parâmetros de montagem NFS com base nas características da carga de trabalho. Por exemplo, usar versões de protocolo comovers=4.0ouvers=4.1pode melhorar o desempenho e os recursos de bloqueio de arquivos em alguns cenários. Para cargas de trabalho com E/S de arquivos em grande escala, teste diferentes valores dersizeewsizepara otimizar o throughput de leitura e escrita.
-
Operações e confiabilidade
Configure verificações de integridade: Configure uma sonda de atividade (liveness probe) para os pods da aplicação a fim de verificar se o ponto de montagem está íntegro. Se um ponto de montagem deixar de responder, o ACK reinicia automaticamente o pod, acionando uma nova montagem do volume de armazenamento.
Configure monitoramento e alertas: Use container storage monitoring para configurar alertas e detectar prontamente problemas em volumes de armazenamento ou gargalos de desempenho.
Use a política de recuperação
Retain: Para dados de produção, defina apersistentVolumeReclaimPolicydo PV comoRetain. Isso evita perda acidental de dados no sistema de arquivos NAS de backend quando o PVC correspondente é removido.
Liberar recursos
Para evitar cobranças inesperadas, libere os recursos na seguinte ordem quando não precisar mais do volume NAS.
-
Excluir workloads
Exclua todas as aplicações, como Deployments e StatefulSets, que usam o volume NAS. Esta ação desmonta o volume dos Pods e interrompe todo o acesso de leitura e escrita.
Comando de exemplo:
kubectl delete deployment <your-deployment-name>
-
Excluir o PVC
Exclua o PVC associado à aplicação. Após a exclusão do PVC, o destino do PV vinculado depende da sua
persistentVolumeReclaimPolicy.-
Política de recuperação:
Retain(recomendado): Após a exclusão de um PVC, seu PV vinculado entra no estadoReleased. O objeto PV e os dados no sistema de arquivos NAS de backend são retidos. Exclua-os manualmente.-
Delete: Após a exclusão de um PVC, o objeto PV correspondente também é excluído. Observe o seguinte:Se o PV apontar para o diretório raiz do sistema de arquivos NAS, os dados no sistema de arquivos serão retidos para evitar exclusão acidental.
Se o
volumeHandlede um PV estático for um sufixo do seupath(por exemplo, sevolumeHandleforappepathfor/exports/app), excluir o PVC aciona a exclusão automática do subdiretório no sistema de arquivos NAS de backend. Use este recurso com cautela.
Comando de exemplo:
kubectl delete pvc <your-pvc-name>-
Excluir o PV
Exclua um PV quando seu status for
AvailableouReleased. Esta ação remove apenas a definição do PV do cluster Kubernetes, mas não exclui os dados no sistema de arquivos NAS de backend.Comando de exemplo:
kubectl delete pv <your-pv-name>
-
Excluir o sistema de arquivos NAS de backend (opcional)
Consulte Delete a file system. Esta ação exclui permanentemente todos os dados no sistema de arquivos NAS e não pode ser desfeita. Antes de prosseguir, certifique-se de que nenhuma workload dependa do sistema de arquivos.
-
Se você encontrar problemas ao montar ou usar volumes NAS, consulte os seguintes documentos:
O CNFS permite gerenciar sistemas de arquivos NAS independentemente para melhorar o desempenho e fornecer controle de QoS. Para mais informações, consulte Managing NAS file systems with CNFS.
Referências