Com o provisionamento dinâmico do File Storage NAS, você provisiona armazenamento para workloads sob demanda automaticamente, eliminando a necessidade de criar PVs antecipadamente. Esse recurso oferece persistência e compartilhamento de dados, permitindo que vários Pods leiam e escrevam simultaneamente, além de simplificar o gerenciamento de armazenamento em casos de uso como aplicações web e retenção de logs.
Como funciona
Com volumes dinâmicos, quando uma aplicação cria um PVC, o sistema cria automaticamente um novo volume de armazenamento e um PV correspondente sob demanda. A StorageClass especificada no PVC determina esse provisionamento. Esse modo oferece maior flexibilidade e suporta expansão automática de volumes de armazenamento.
Modo de montagem
Especifique o modo de montagem com o parâmetro volumeAs em uma StorageClass. Esse parâmetro define a relação entre um PV e o sistema de arquivos NAS.
|
Modo de montagem |
Descrição |
Cenário |
|
No modo subpath, cada PV é mapeado para um subdiretório exclusivo dentro de um sistema de arquivos NAS. Esse modo facilita o isolamento de dados. |
|
|
|
No modo sharepath, todos os PVs são mapeados para o mesmo diretório NAS definido na StorageClass. Portanto, todos os PVCs que usam essa StorageClass acessam o mesmo diretório compartilhado. |
Vários Pods em namespaces diferentes precisam montar o mesmo subdiretório NAS. |
|
|
filesystem (Não recomendado) |
No modo filesystem, uma nova instância dedicada de sistema de arquivos NAS é criada dinamicamente para cada PV. |
Indicado para aplicações que exigem isolamento rigoroso de desempenho e segurança. Permite a criação e exclusão dinâmica de sistemas de arquivos NAS e destinos de montagem independentes para cada aplicação, mas gera custos mais elevados. |
Fluxo de trabalho
O fluxo de trabalho para montar um volume dinâmico do NAS é o seguinte.
|
|
|
Pré-requisitos
-
Os componentes csi-plugin e csi-provisioner estão instalados.
Os componentes CSI são instalados por padrão. Verifique se eles permanecem instalados. Você pode verificar o status da instalação na página . Recomendamos atualizar os componentes CSI para a versão mais recente.
-
Para usar subpath e sharepath, é necessário ter um sistema de arquivos Apsara File Storage NAS que atenda aos seguintes requisitos. Caso contrário, crie um sistema de arquivos.
O NAS possui limitações quanto à conectividade de montagem, quantidade de sistemas de arquivos e tipos de protocolo.
Protocol: Apenas NFS é suportado.
VPC: O sistema de arquivos Apsara File Storage NAS deve estar na mesma VPC do seu cluster. O Apsara File Storage NAS suporta montagem entre zonas, mas não entre VPCs.
Mount Target: Adicione um destino de montagem que esteja na mesma VPC do seu cluster e esteja ativo. Para mais informações, consulte Gerenciar destinos de montagem. Anote o endereço do destino de montagem.
(Opcional) Encryption Type: Para criptografar dados em um volume, configure o tipo de criptografia ao criar o sistema de arquivos Apsara File Storage NAS.
Observações de uso
Não exclua destinos de montagem: Para evitar erros de E/S nos nós, não exclua um destino de montagem no console do NAS enquanto o volume correspondente estiver em uso.
-
Escritas simultâneas: O NAS fornece armazenamento compartilhado. Quando vários Pods montam o mesmo volume, sua 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 Vários processos escrevendo no mesmo arquivo de log e Latência na leitura de conteúdo de arquivo atualizado entre instâncias ECS .
-
Desempenho de montagem: Se você configurar o parâmetro
securityContext.fsgroupna sua 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 Perguntas frequentes sobre volumes NAS .
Método 1: Montar um volume usando subpath
Neste método, o provisionador CSI cria automaticamente um subpath dedicado no sistema de arquivos NAS para cada PersistentVolumeClaim (PVC). Esse subpath funciona como o PersistentVolume (PV).
A versão do plug-in CSI deve ser 1.31.4 ou posterior. Para atualizar o plug-in, consulte Atualizar o plug-in CSI.
Você criou um sistema de arquivos NAS e possui seu destino de montagem.
1. Criar uma StorageClass
Uma StorageClass atua como um modelo para provisionamento de volumes dinâmicos e define a origem e o comportamento dos recursos de armazenamento.
kubectl
-
Crie um arquivo chamado
alicloud-nas-subpath.yamlcom o seguinte conteúdo:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: # The name of the StorageClass, which must be unique within the cluster. name: alicloud-nas-subpath mountOptions: - nolock,tcp,noresvport - vers=3 parameters: # Set to subpath. volumeAs: subpath # The format of the server field is <nas-server-address>:/<path>. server: "0cd8b4a576-g****.cn-hangzhou.nas.aliyuncs.com:/k8s" archiveOnDelete: "true" provisioner: nasplugin.csi.alibabacloud.com reclaimPolicy: Retain allowVolumeExpansion: trueParâmetro
Descrição
mountOptionsAs opções de montagem para o 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 Protocolos NFS.parameters.volumeAsO modo de provisionamento do volume. Defina como
subpath.parameters.serverO destino de montagem do NAS e o subpath a ser montado, no formato
<nas-server-address>:/<path>.-
<nas-server-address>: O destino de montagem do sistema de arquivos NAS. Para mais informações, consulte Gerenciar destinos de montagem. -
:/<path>: O subpath do NAS a ser montado. Se este parâmetro não for definido ou se o subpath especificado não existir, o diretório raiz será montado por padrão.-
NAS de uso geral: O diretório raiz é
/. -
Extreme NAS: O diretório raiz é
/share. Ao montar um subpath, opathdeve começar com/share, como/share/data.
-
parameters.archiveOnDeleteEspecifica se os dados no armazenamento de backend devem ser excluídos quando um PVC é excluído e seu
reclaimPolicyestá definido comoDelete.Esta opção atua como uma salvaguarda para evitar perda acidental de dados no armazenamento NAS compartilhado.
-
true(padrão): O diretório e seus arquivos não são excluídos. Em vez disso, eles são arquivados e renomeados no formatoarchived-{pvName}.{timestamp}. -
false: O diretório correspondente e seus dados são excluídos permanentemente.Esta operação exclui o subpath do NAS e seus arquivos, não o sistema de arquivos NAS em si.
Para excluir um sistema de arquivos NAS, consulte Excluir um sistema de arquivos.
Em cenários onde PVs são criados e excluídos frequentemente, definir este parâmetro como
falsepode causar o bloqueio da fila de tarefas do controlador CSI, impedindo a criação de novos PVs. Para mais informações, consulte A fila de tarefas do controlador está cheia e novos PVs não podem ser criados ao usar um volume NAS dinâmico.provisionerO driver. Defina este parâmetro como
nasplugin.csi.alibabacloud.comao usar o plug-in CSI do Alibaba Cloud NAS.reclaimPolicyA política de recuperação do PV.
-
Delete(padrão): Quando o PVC é excluído, os dados do armazenamento de backend são processados com base na configuraçãoarchiveOnDelete. -
Retain: Quando o PVC é excluído, o PV e os dados no sistema de arquivos NAS não são excluídos e devem ser removidos manualmente. Esta política é recomendada para cenários que exigem alta segurança de dados para evitar perda acidental.
allowVolumeExpansionSuportado apenas pelo NAS de uso geral.
Permite a expansão dinâmica de PVs criados por esta StorageClass modificando a capacidade do PVC.
Esta StorageClass usa o recurso de cota de diretório do NAS para gerenciar a capacidade do PV, permitindo controle preciso de tamanho. Você pode expandir o volume online editando o campo
spec.resources.requests.storagedo PVC. Para mais informações, consulte Definir cotas de diretório para volumes NAS dinâmicos.As cotas de diretório do NAS entram em vigor de forma assíncrona. Se você realizar escritas de dados em grande volume e alta velocidade imediatamente após a criação ou expansão de um PV, poderá exceder a capacidade especificada porque a cota ainda não foi totalmente aplicada. Para mais informações, consulte Limites de uso.
-
-
Crie a StorageClass.
kubectl create -f alicloud-nas-subpath.yaml
Console
Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em .
-
Clique em Create, especifique um nome exclusivo para a StorageClass dentro do cluster, selecione NAS como o PV Type e siga as instruções na tela para criar a StorageClass.
Os principais parâmetros estão descritos na tabela a seguir.
Parâmetro
Descrição
Select Mount Target
O destino de montagem do sistema de arquivos NAS.
Volume Mode
O modo de provisionamento do volume. Selecione Subdirectory. Um subpath é criado automaticamente sob o caminho de montagem especificado. Os dados são armazenados em
<NAS mount target>:<mount path>/<pv-name>/.Mount Path
O 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
A política de recuperação do PV.
-
Delete(padrão): Quando o PVC é excluído, os dados do armazenamento de backend são processados com base na configuraçãoarchiveOnDelete. -
Retain: Quando o PVC é excluído, o PV e os dados no sistema de arquivos NAS não são excluídos e devem ser removidos manualmente. Esta política é recomendada para cenários que exigem alta segurança de dados para evitar perda acidental.
Mount Options
As opções de montagem para o 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 Protocolos NFS.Após a criação da StorageClass, você pode visualizá-la na lista StorageClasses.
-
2. Criar um PVC
Um PersistentVolumeClaim (PVC) é uma solicitação de armazenamento de uma aplicação que aciona uma StorageClass associada para provisionar e vincular dinamicamente um PersistentVolume (PV) correspondente.
kubectl
-
Crie um arquivo chamado
nas-pvc.yamlcom o seguinte conteúdo:kind: PersistentVolumeClaim apiVersion: v1 metadata: name: nas-csi-pvc spec: accessModes: - ReadWriteMany # Specify the StorageClass to use. storageClassName: alicloud-nas-subpath resources: requests: # Declare the required capacity of the storage volume. storage: 20GiParâmetro
Descrição
accessModesO 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.
storageClassNameO nome da StorageClass a ser usada.
storageA capacidade necessária do volume de armazenamento. Por padrão, esta declaração atua como uma solicitação de recurso e não limita o espaço de armazenamento real disponível para o pod.
O limite de capacidade de um sistema de arquivos NAS é determinado por suas especificações. Para mais informações, consulte NAS de uso geral e Extreme NAS.
No entanto, quando
allowVolumeExpansionna StorageClass está definido comotrue, este valor torna-se um limite rígido estritamente aplicado. O plug-in CSI define a cota de diretório do NAS com base nesta configuração para limitar a capacidade disponível do PV. -
-
Crie o PVC.
kubectl create -f nas-pvc.yaml -
Verifique o PV.
kubectl get pvA saída esperada é semelhante à seguinte, mostrando que a StorageClass provisionou automaticamente um PersistentVolume (PV) e o vinculou ao PVC.
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS VOLUMEATTRIBUTESCLASS REASON AGE nas-a7540d97-0f53-4e05-b7d9-557309****** 20Gi RWX Retain Bound default/nas-csi-pvc alicloud-nas-subpath <unset> 5m
Console
No painel de navegação à esquerda da página de gerenciamento do cluster, escolha .
-
Na página Persistent Volume Claims, clique em Create, configure os parâmetros do PVC e clique em Create.
Parâmetro
Descrição
PVC Type
Selecione NAS.
Name
O nome do PVC. O nome deve ser exclusivo dentro do namespace.
Allocation Mode
Selecione Use StorageClass.
Existing Storage Class
Clique em Select Storage Class e escolha a StorageClass que você criou.
Total Capacity
A capacidade necessária do volume de armazenamento. Por padrão, esta declaração atua como uma solicitação de recurso e não limita o espaço de armazenamento real disponível para o pod.
O limite de capacidade de um sistema de arquivos NAS é determinado por suas especificações. Para mais informações, consulte NAS de uso geral e Extreme NAS.
No entanto, quando
allowVolumeExpansionna StorageClass está definido comotrue, este valor torna-se um limite rígido estritamente aplicado. O plug-in CSI define a cota de diretório do NAS com base nesta configuração para limitar a capacidade disponível do PV.Access Mode
O 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.
-
3. Criar uma aplicação e montar o NAS
Após a criação do PVC, você pode montar o volume em uma aplicação. Esta seção mostra como criar dois Deployments que referenciam o mesmo PVC, permitindo que vários pods compartilhem o mesmo subpath do NAS.
kubectl
Crie dois Deployments que referenciem o mesmo PVC para permitir que eles compartilhem o mesmo subpath do sistema de arquivos NAS.
Para montar subpaths diferentes do mesmo sistema de arquivos NAS em pods diferentes, você deve criar uma StorageClass exclusiva e um PVC correspondente para cada subpath.
-
Crie dois arquivos chamados
nginx-1.yamlenginx-2.yamlcom o seguinte conteúdo.As configurações para ambas as aplicações são quase idênticas. Ambas referenciam o mesmo PVC.
-
-
Crie os dois Deployments.
kubectl create -f nginx-1.yaml -f nginx-2.yaml -
Verifique o status dos pods.
kubectl get pod -l app=nginxSaída esperada:
NAME READY STATUS RESTARTS AGE nas-test-1-b75d5b6bc-***** 1/1 Running 0 51s nas-test-2-b75d5b6bc-***** 1/1 Running 0 44s -
Inspecione cada pod para verificar se ele usa o PersistentVolumeClaim (PVC) correto.
Substitua
<podName>pelo nome real de cada pod.kubectl describe pod <podName> | grep "ClaimName:"Na saída esperada, ambos os pods usam o mesmo PVC, o que confirma que eles compartilham o mesmo subpath do sistema de arquivos NAS.
Console
Repita as etapas a seguir para criar dois Deployments que usam o mesmo PVC, o que permite que eles compartilhem o mesmo subpath do sistema de arquivos NAS.
Na página Clusters do ACK, clique no nome do seu cluster. No painel de navegação à esquerda, clique em .
-
Clique em Create from Image e siga as instruções na tela para configurar e criar a aplicação.
Os principais parâmetros estão descritos abaixo. Você pode manter os valores padrão para outros parâmetros. Para mais informações, consulte Criar uma aplicação stateless (Deployment).
Seção
Parâmetro
Descrição
Basic Information
Replicas:
O número de réplicas para o Deployment.
Container
Image
O endereço da imagem usada para implantar a aplicação.
Required Resources
Os recursos de vCPU e memória necessários pelo contêiner.
Volumes
Clique em Add PVC e configure os parâmetros.
-
Mount Source: Selecione o PVC que você criou.
-
Container Path: Insira o caminho dentro do contêiner onde o sistema de arquivos NAS será montado.
Após a conclusão da implantação, você pode clicar no nome da aplicação na página Deployments e verificar a aba Pods para confirmar que os pods estão executando normalmente (seu status é Running).
-
Para verificar se o armazenamento é compartilhado e persistente, consulte Verificar armazenamento compartilhado e persistente.
Método 2: Montar usando o modo sharepath
Neste modo, quando PVs são criados para PVCs que usam esta StorageClass, o provisionador não cria novos diretórios. Em vez disso, todos os PVs usam o caminho definido na StorageClass, mapeando cada PV para o mesmo diretório NAS.
1. Criar uma StorageClass
Uma StorageClass atua como um modelo para provisionamento de volumes dinâmicos e define a origem e o comportamento dos recursos de armazenamento.
kubectl
-
Crie um arquivo chamado alicloud-nas-sharepath.yaml com o seguinte conteúdo.
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: alicloud-nas-sharepath mountOptions: - nolock,tcp,noresvport - vers=3 parameters: volumeAs: sharepath # The format of the server field is <nas-server-address>:/<path> server: "0cd8b4a576-g****.cn-hangzhou.nas.aliyuncs.com:/k8s" provisioner: nasplugin.csi.alibabacloud.com reclaimPolicy: RetainParâmetro
Descrição
mountOptionsAs opções de montagem para o 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 Protocolos NFS.parameters.volumeAsO modo de provisionamento do volume. Defina como
sharepath.parameters.serverO destino de montagem do NAS e o subpath a ser montado, no formato
<nas-server-address>:/<path>.-
<nas-server-address>: O destino de montagem do sistema de arquivos NAS. Para mais informações, consulte Gerenciar destinos de montagem. -
:/<path>: O subpath do NAS a ser montado. Se este parâmetro não for definido ou se o subpath especificado não existir, o diretório raiz será montado por padrão.-
NAS de uso geral: O diretório raiz é
/. -
Extreme NAS: O diretório raiz é
/share. Ao montar um subpath, opathdeve começar com/share, como/share/data.
-
provisionerO driver. Defina este parâmetro como
nasplugin.csi.alibabacloud.comao usar o plug-in CSI do Alibaba Cloud NAS.reclaimPolicyA política de recuperação para o PV. Para o modo
sharepath, deve ser Retain. -
-
Crie a StorageClass.
kubectl create -f alicloud-nas-sharepath.yaml
Console
Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em .
-
Clique em Create, especifique um nome exclusivo para a StorageClass e selecione NAS como o PV Type.
Parâmetro
Descrição
Select Mount Target
O destino de montagem do sistema de arquivos NAS.
Volume Mode
O modo de provisionamento do volume. Neste exemplo, selecione Shared Directory, que habilita o modo sharepath.
Mount Path
O 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
Para o modo
sharepath, deve ser Retain.Mount options
As opções de montagem para o 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 Protocolos NFS. -
2. Criar um PVC
Um PersistentVolumeClaim (PVC) é uma solicitação de armazenamento de uma aplicação que aciona uma StorageClass associada para provisionar e vincular dinamicamente um PersistentVolume (PV) correspondente.
Para habilitar o compartilhamento de dados entre namespaces, você criará um PVC com o mesmo nome em dois namespaces diferentes. Embora os PVCs compartilhem um nome, eles são recursos distintos porque estão em namespaces diferentes. A StorageClass provisiona um PV separado para cada PVC, e ambos os PVs apontam para o mesmo diretório compartilhado no sistema de arquivos NAS.
kubectl
-
Crie dois namespaces,
ns1ens2.kubectl create ns ns1 kubectl create ns ns2 -
Crie um arquivo chamado pvc.yaml com o seguinte conteúdo para criar um PVC com o mesmo nome nos namespaces
ns1ens2.kind: PersistentVolumeClaim apiVersion: v1 metadata: name: nas-csi-pvc namespace: ns1 spec: accessModes: - ReadWriteMany storageClassName: alicloud-nas-sharepath resources: requests: storage: 20Gi --- kind: PersistentVolumeClaim apiVersion: v1 metadata: name: nas-csi-pvc namespace: ns2 spec: accessModes: - ReadWriteMany storageClassName: alicloud-nas-sharepath resources: requests: storage: 20GiParâmetro
Descrição
accessModesO 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.
storageClassNameO nome da StorageClass a ser usada.
storageA capacidade necessária do volume de armazenamento. Por padrão, esta declaração atua como uma solicitação de recurso e não limita o espaço de armazenamento real disponível para o pod.
O limite de capacidade de um sistema de arquivos NAS é determinado por suas especificações. Para mais informações, consulte NAS de uso geral e Extreme NAS.
No entanto, quando
allowVolumeExpansionna StorageClass está definido comotrue, este valor torna-se um limite rígido estritamente aplicado. O plug-in CSI define a cota de diretório do NAS com base nesta configuração para limitar a capacidade disponível do PV. -
-
Crie os PVCs.
kubectl create -f pvc.yaml -
Verifique o status do PV para confirmar que os PVs foram criados automaticamente e vinculados aos PVCs.
kubectl get pvA saída esperada é semelhante à seguinte. O status de ambos os PVs é
Bound, e a colunaCLAIMmostra que cada PV está vinculado a um PVC em um namespace diferente (ns1/nas-csi-pvcens2/nas-csi-pvc).NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS VOLUMEATTRIBUTESCLASS REASON AGE nas-0b448885-6226-4d22-8a5b-d0768c****** 20Gi RWX Retain Bound ns1/nas-csi-pvc alicloud-nas-sharepath <unset> 74s nas-bcd21c93-8219-4a11-986b-fd934a****** 20Gi RWX Retain Bound ns2/nas-csi-pvc alicloud-nas-sharepath <unset> 74s
Console
-
Crie namespaces.
Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em Namespaces and Quotas.
Clique em Launch e siga as instruções na tela para criar os namespaces
ns1ens2.
No painel de navegação à esquerda da página de gerenciamento do cluster, escolha .
-
No namespace
ns1, crie uma solicitação de armazenamento.Na página Persistent Volume Claims, selecione
ns1na lista suspensa Namespace e siga as instruções na tela para criar o PVC.Parâmetro
Descrição
PVC Type
Selecione NAS.
Name
O nome do PVC. O nome deve ser exclusivo dentro do namespace.
Allocation Mode
Selecione Use StorageClass.
Existing Storage Class
Clique em Select Storage Class e escolha a StorageClass que você criou.
Capacity
A capacidade necessária do volume de armazenamento. Por padrão, esta declaração atua como uma solicitação de recurso e não limita o espaço de armazenamento real disponível para o pod.
O limite de capacidade de um sistema de arquivos NAS é determinado por suas especificações. Para mais informações, consulte NAS de uso geral e Extreme NAS.
No entanto, quando
allowVolumeExpansionna StorageClass está definido comotrue, este valor torna-se um limite rígido estritamente aplicado. O plug-in CSI define a cota de diretório do NAS com base nesta configuração para limitar a capacidade disponível do PV.Access Mode
O 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.
-
-
Siga a etapa anterior para criar outro PVC no namespace
ns2.Após a criação, retorne à página Persistent Volume Claims. Nos namespaces
ns1ens2, confirme que ambos os PVCs estão vinculados aos seus PVs criados automaticamente.
3. Criar uma aplicação e montar o NAS
Após a criação dos PVCs, você pode montar seus PVs vinculados nas suas aplicações. Nesta seção, você criará uma aplicação em cada um dos dois namespaces e montará o PVC correspondente. Essa configuração permite que ambas as aplicações compartilhem o subdiretório NAS definido na StorageClass.
kubectl
-
Crie dois arquivos chamados
nginx-ns1.yamlenginx-ns2.yamlcom o seguinte conteúdo.As configurações para ambas as aplicações são quase idênticas. Cada uma se vincula ao PVC em seu respectivo namespace.
-
-
Crie os dois Deployments.
kubectl create -f nginx-ns1.yaml -f nginx-ns2.yaml -
Verifique o status do Pod.
kubectl get pod -A -l app=nginxSaída esperada:
NAMESPACE NAME READY STATUS RESTARTS AGE ns1 nas-test-b75d5b6bc-***** 1/1 Running 0 2m19s ns2 nas-test-b75d5b6bc-***** 1/1 Running 0 2m11s -
Verifique a configuração detalhada de um Pod para confirmar a montagem do PVC.
Substitua
<namespace-name>e<pod-name>pelo namespace e nome do Pod reais.kubectl describe pod -n <namespace-name> <pod-name> | grep "ClaimName:"Na saída esperada, os dois Pods montam
ns1/nas-csi-pvcens2/nas-csi-pvcrespectivamente.
Console
Na página Clusters do ACK, clique no nome do seu cluster. No painel de navegação à esquerda, clique em .
-
No namespace
ns1, crie um Deployment e monte o PVC correspondente.Selecione Namespace na lista suspensa Namespace e clique em Create from Image.
-
Siga as instruções na tela para criar a aplicação.
Os principais parâmetros estão descritos abaixo. Mantenha os outros parâmetros com seus valores padrão. Para mais informações, consulte Criar um workload stateless (Deployment).
Seção
Parâmetro
Descrição
Basic Information
Replicas:
A contagem de réplicas do Deployment.
Container
Image
O endereço da imagem usada para implantar a aplicação.
Required Resources
Os recursos de vCPU e memória necessários.
Volumes
Clique em Add PVC e configure os parâmetros.
-
Mount Source: Selecione o PVC que você criou.
-
Container Path: Insira o caminho dentro do contêiner onde o sistema de arquivos NAS será montado, como /data.
-
-
Siga a etapa anterior para criar outro Deployment no namespace
ns2e montar o PVC correspondente.Retorne à página Deployments . Nos namespaces
ns1ens2, verifique o status de cada Deployment para confirmar que os Pods estão em execução e montaram os PVCs corretos.
Para verificar os resultados, consulte Verificar armazenamento compartilhado e persistente.
Método 3: Montar um volume no modo filesystem
O modo filesystem permite criar e gerenciar dinamicamente um sistema de arquivos NAS e um destino de montagem dedicados para uma aplicação. Ao contrário do modo sharepath, cada PV criado no modo filesystem corresponde a uma instância separada de sistema de arquivos NAS.
Cada PV do tipo filesystem corresponde a um sistema de arquivos NAS dedicado e um destino de montagem.
-
Por padrão, quando você exclui um PV do tipo
filesystem, o sistema de arquivos NAS e o destino de montagem correspondentes são retidos. Para excluir automaticamente o sistema de arquivos NAS e o destino de montagem quando o PV for excluído, adicione os seguintes parâmetros à StorageClass:reclaimPolicy: Deleteparameters.deleteVolume: "true"
-
Ao usar um cluster dedicado ACK, conceda as permissões necessárias ao csi-provisioner.
1. Criar uma StorageClass
2. Criar um PVC
3. Criar aplicação e montar NAS
Verificar armazenamento compartilhado e persistente
Após implantar a aplicação com sucesso, você pode verificar se o volume de armazenamento funciona conforme esperado. Esta seção usa o modo subpath para criar nas-test-1 e nas-test-2 como exemplo para verificação.
|
Armazenamento compartilhado |
Armazenamento persistente |
|
Para verificar o armazenamento compartilhado, crie um arquivo em um Pod e visualize-o em outro.
|
Para verificar o armazenamento persistente, reinicie o Deployment e verifique se os dados ainda existem no sistema de arquivos do novo Pod.
|
Para ambientes de produção
-
Segurança e proteção de dados
Use a política de recuperação Retain: Defina o
reclaimPolicyda sua StorageClass comoRetain. Isso evita perda de dados se um PVC for excluído acidentalmente.Use grupos de permissões para controle de acesso: O NAS usa grupos de permissões 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 custo
Selecione um tipo de NAS apropriado: Consulte Seleção de sistema de arquivos para escolher um tipo de NAS que atenda aos requisitos de IOPS e throughput da sua aplicação.
Otimize as opções de montagem (
mountOptions): Ajuste os parâmetros de montagem NFS com base nas características da sua 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 sua aplicação para verificar se o ponto de montagem está íntegro. Se um ponto de montagem deixar de responder, o ACK reinicia automaticamente o pod, acionando uma remontagem do volume de armazenamento.
Configure monitoramento e alertas: Use o monitoramento de armazenamento de contêineres para configurar alertas e detectar prontamente problemas de volume de armazenamento ou gargalos de desempenho.
Liberação de recursos
Para evitar cobranças inesperadas, libere os recursos associados na seguinte ordem quando o volume de armazenamento NAS não for mais necessário.
-
Exclua o workload
Ação: Exclua todos os workloads (como Deployments e StatefulSets) que usam o volume de armazenamento NAS. Isso impede que os Pods da aplicação montem, leiam ou escrevam no volume.
Comando de exemplo:
kubectl delete deployment <your-deployment-name>
-
Exclua o PVC
-
Ação: Exclua o PVC associado ao workload. Após a exclusão do PVC, o comportamento do PV vinculado e do NAS de backend depende do
reclaimPolicydefinido na StorageClass correspondente.-
Modo Subpath
Se
reclaimPolicyforRetain: Após a exclusão do PVC, seu PV vinculado entra no estadoReleased. O objeto PV e o subdiretório e dados correspondentes no NAS de backend são retidos e devem ser excluídos manualmente.-
Se
reclaimPolicyforDelete: Após a exclusão do PVC, seu PV vinculado é excluído automaticamente. O tratamento do subdiretório NAS de backend depende do parâmetroarchiveOnDelete:Se
archiveOnDeletefor"true": Os dados de backend não são excluídos, mas são renomeados e arquivados comoarchived-{pvName}.{timestamp}.Se
archiveOnDeletefor"false": O subdiretório correspondente do PV no NAS de backend e todos os seus dados são excluídos permanentemente. Proceda com cautela.
Em um cluster ACK Serverless, devido a restrições de permissão, mesmo se
reclaimPolicy: Deleteestiver configurado, o diretório e os dados do NAS de backend não são excluídos ou arquivados. Apenas o objeto PV é excluído.
-
Modo Sharepath
Este modo suporta apenas um
reclaimPolicydeRetain. Após a exclusão do PVC, seu PV vinculado entra no estadoReleased. O objeto PV, o diretório compartilhado de backend e todos os dados são retidos. -
Modo Filesystem
Se
reclaimPolicyforRetain: Após a exclusão do PVC, seu PV vinculado entra no estadoReleased. O objeto PV, o sistema de arquivos NAS de backend criado dinamicamente e o ponto de montagem são todos retidos.-
Se
reclaimPolicyforDelete: Após a exclusão do PVC, seu PV vinculado é excluído automaticamente. O tratamento do sistema de arquivos NAS de backend depende do parâmetrodeleteVolume:Se
deleteVolumefor"false": O sistema de arquivos NAS de backend e o ponto de montagem são retidos e devem ser excluídos manualmente.Se
deleteVolumefor"true": O sistema de arquivos NAS de backend e o ponto de montagem são excluídos automaticamente. Proceda com cautela.
-
Comando de exemplo:
kubectl delete pvc <your-pvc-name>
-
-
Exclua o PV
Ação: Você pode excluir um PV quando ele estiver no estado
AvailableouReleased. Esta ação remove apenas a definição do PV do cluster Kubernetes, mas não exclui nenhum dado do sistema de arquivos NAS de backend.Comando de exemplo:
kubectl delete pv <your-pv-name>
-
Exclua o sistema de arquivos NAS de backend (opcional)
Modos
subpathesharepath: Consulte Excluir um sistema de arquivos. Esta operação exclui permanentemente todos os dados no NAS, e os dados não podem ser recuperados. Proceda com cautela. Antes de executar esta operação, você deve confirmar que o NAS não possui dependências de negócios.Modo
filesystem: Se o sistema de arquivos NAS de backend não for excluído automaticamente quando você excluir um PVC, consulte Excluir um sistema de arquivos para localizar e excluir manualmente o sistema de arquivos correspondente.
Documentos relacionados
-
Se você encontrar problemas ao montar ou usar volumes de armazenamento NAS, consulte os seguintes documentos para solução de problemas.
Você pode usar o CNFS para gerenciar independentemente sistemas de arquivos NAS para melhorar o desempenho e o controle de QoS. Para instruções detalhadas, consulte Gerenciar sistemas de arquivos NAS usando CNFS.
Volumes de armazenamento NAS montados usando subpath suportam cotas de diretório. Para mais informações, consulte Definir cotas de diretório para volumes de armazenamento NAS dinâmicos.