O Container Network File System (CNFS) permite gerenciar sistemas de arquivos NAS como recursos nativos do Kubernetes. Use uma abordagem declarativa para criar, adotar e montar armazenamento NAS em cargas de trabalho, como sites e análises de dados, com suporte flexível para compartilhamento e isolamento de dados.
Pré-requisitos
-
Você possui um cluster ACK Pro executando a versão 1.20 ou posterior. Para atualizar seu cluster, consulte Manually update an ACK cluster.
O CNFS suporta a versão 1.20 quando usado com kubectl.
-
Verifique se os componentes de armazenamento atendem aos seguintes requisitos de versão. Para atualizar os componentes, consulte Components.
csi-plugin e csi-provisioner: v1.24.11-5221f79-aliyun ou posterior.
storage-operator: v1.26.2-1de13b6-aliyun ou posterior.
-
Você ativou o Apsara File Storage NAS. Os limites a seguir se aplicam aos sistemas de arquivos NAS. Para mais informações, consulte Limits.
Somente os tipos de armazenamento Capacity, Performance e Extreme do NAS de uso geral são suportados. O NAS Extreme Speed não é suportado.
O número de sistemas de arquivos NAS que você pode criar por conta em uma única região é limited.
Para usar criptografia KMS em seus sistemas de arquivos NAS, ative o Key Management Service (KMS). Para mais informações, consulte Purchase a dedicated KMS instance.
Criar um sistema de arquivos NAS
Métodos para adicionar um sistema de arquivos NAS
Escolha como adicionar um sistema de arquivos NAS ao seu cluster.
Método | Descrição | Modo de provisionamento de volume | Casos de uso |
O CNFS cria e gerencia automaticamente um sistema de arquivos NAS com configuração fixa para montagem rápida. | Volume dinâmico |
| |
Method 2: Create and use a NAS file system with custom parameters | O CNFS cria um novo sistema de arquivos NAS personalizável com base nos parâmetros especificados. |
| Ideal para casos de uso com requisitos específicos de desempenho, criptografia ou custo, ou que exigem controle refinado de armazenamento. |
O CNFS adota um sistema de arquivos NAS existente para gerenciamento unificado. |
| Recomendado para integrar perfeitamente um sistema de arquivos NAS existente ao seu cluster. |
Método 1: Criar e usar automaticamente um sistema de arquivos NAS
O CNFS cria automaticamente um sistema de arquivos NAS com configuração padrão baseada no ambiente do seu cluster. A criptografia é desativada por padrão. Se o NAS Capacity não estiver disponível na região atual, o NAS Performance será utilizado.
Após criar o recurso CNFS e a StorageClass, as cargas de trabalho podem solicitar armazenamento por meio de uma PersistentVolumeClaim (PVC), que provisiona dinamicamente um PersistentVolume (PV) no sistema de arquivos NAS e o monta em um pod.
kubectl
1. Criar um recurso CNFS Crie um objeto |
|
2. Criar uma StorageClass Crie um objeto | |
3. Criar uma PersistentVolumeClaim A aplicação solicita um volume de armazenamento usando uma PersistentVolumeClaim (PVC) e referencia a StorageClass como seu modelo de configuração. | |
4. Criar uma aplicação e montar a PVC Após a criação da PVC, implante uma aplicação de exemplo, como um Deployment ou StatefulSet, e monte o PV vinculado à PVC na aplicação. |
|
5. Verificar o resultado |
|
Console
1. Criar um recurso CNFS |
|
2. Criar uma StorageClass |
|
3. Criar uma PersistentVolumeClaim |
|
4. Criar uma aplicação e montar o volume NAS | Ao create a Deployment ou create a StatefulSet, você pode montar uma PVC em um contêiner na seção Volumes da página Container. Este exemplo mostra como montar a PVC no caminho /data em um contêiner. Para Volume Type, selecione Cloud Volume. Para Mount Source, selecione cnfs-nas-pvc. Para Container Path, insira |
Método 2: Criar e usar um sistema de arquivos NAS personalizado
Use o CNFS para criar um sistema de arquivos NAS com parâmetros personalizados.
Defina um recurso
ContainerNetworkFileSystempara provisionar um novo sistema de arquivos NAS.Disponibilize o sistema de arquivos para aplicações no seu cluster criando um volume persistente estático ou uma classe de armazenamento.
kubectl
1. Criar um sistema de arquivos NAS personalizado Crie um objeto |
|
2. Criar um volume persistente ou classe de armazenamento Após criar o recurso CNFS, escolha como as aplicações acessarão o sistema de arquivos NAS.
| Provisionamento estáticoPara mais informações sobre parâmetros de volume persistente, consulte Use a static NAS volume. Provisionamento dinâmicoPara mais informações sobre parâmetros de classe de armazenamento, consulte Use a dynamic NAS volume. |
3. Criar uma persistent volume claim Crie uma persistent volume claim que utilize o volume persistente estático ou a classe de armazenamento criada. | Provisionamento estáticoProvisionamento dinâmico |
4. Criar uma aplicação e montar o sistema de arquivos NAS Após a criação da persistent volume claim, monte-a em sua aplicação. | |
5. Verificar o resultado |
|
Console
|
|
| PV
Classe de armazenamento
|
|
|
| Ao create a Deployment ou create a StatefulSet, você pode montar uma PVC em um contêiner na seção Volumes da página Container. Este exemplo mostra como montar a PVC no caminho /data em um contêiner. Para Volume Type, selecione Cloud Volume. Para Mount Source, selecione cnfs-nas-pvc. Para Container Path, insira |
Método 3: Usar um sistema de arquivos NAS existente
Use o CNFS para adotar um sistema de arquivos NAS existente em seu cluster, permitindo que as aplicações o montem e acessem.
kubectl
1. Criar um recurso CNFS a partir de um sistema de arquivos NAS existente Crie um recurso |
|
2. Criar um volume persistente ou classe de armazenamento Após criar o recurso CNFS, escolha como as aplicações acessarão o sistema de arquivos NAS.
| Provisionamento estáticoPara mais informações sobre parâmetros de volume persistente, consulte Use a static NAS volume. Provisionamento dinâmicoPara mais informações sobre parâmetros de classe de armazenamento, consulte Use a dynamic NAS volume. |
3. Criar uma persistent volume claim Crie uma persistent volume claim que utilize o volume persistente estático ou a classe de armazenamento criada. | Provisionamento estáticoProvisionamento dinâmico |
4. Criar uma aplicação e montar o sistema de arquivos NAS Após a criação da persistent volume claim, monte-a em sua aplicação. | |
5. Verificar o resultado |
|
Console
|
|
| PV
Classe de armazenamento
|
|
|
| Ao create a Deployment ou create a StatefulSet, você pode montar uma PVC em um contêiner na seção Volumes da página Container. Este exemplo mostra como montar a PVC no caminho /data em um contêiner. Para Volume Type, selecione Cloud Volume. Para Mount Source, selecione cnfs-nas-pvc. Para Container Path, insira |
Configurar armazenamento compartilhado e isolado
Após criar ou integrar um sistema de arquivos NAS, configure-o para compartilhamento ou isolamento de dados, de acordo com os requisitos da sua carga de trabalho.
Configurar um volume NAS compartilhado
Para compartilhar dados entre pods, monte o mesmo diretório de um sistema de arquivos NAS em vários pods.
Mecanismo principal: Este método utiliza um volume de armazenamento estático. Em um volume persistente (PV), o
pathdeclarado é idêntico ao caminho final montado pela Container Storage Interface (CSI). Portanto, quando vários pods montam este PV estático usando a mesma persistent volume claim (PVC), todos acessam o mesmo diretório de armazenamento, possibilitando o compartilhamento de dados.Configuração chave: No modelo de pod (
.spec.template) da sua carga de trabalho, defina o parâmetropersistentVolumeClaim.claimNameno campovolumescom o mesmo nome da PVC.
1. Criar um PV e uma PVC apontando para um diretório específico | |
2. Criar um deployment de exemplo | |
3. Verificar o resultado |
Configurar um volume NAS isolado
Para obter isolamento de dados em cenários como multitenancy, forneça um diretório de armazenamento independente e isolado para cada pod ou grupo de pods.
Mecanismo principal: Este método utiliza um volume de armazenamento dinâmico. Na classe de armazenamento, o driver CSI cria automaticamente um subdiretório separado com o mesmo nome do PV sob o
pathdeclarado. Esse subdiretório serve como ponto de montagem. Como resultado, cada PVC se vincula a um diretório de armazenamento separado, possibilitando o isolamento de dados.-
Configuração chave:
Na classe de armazenamento associada ao statefulset, use o parâmetro
volumeAs: subpath(valor padrão) emparameterspara criar um subdiretório isolado para cada PVC.No statefulset, defina
volumeClaimTemplatespara criar e vincular automaticamente uma PVC separada para cada pod.
1. Criar uma classe de armazenamento que suporte subdiretórios dinâmicos | |
2. Criar um statefulset de exemplo | |
3. Verificar o resultado |
Recomendações para ambientes de produção
-
Segurança de dados
Criptografia de dados: Ao criar um novo sistema de arquivos NAS, defina
parameterscomoencryptType: SSE-KMSno CNFS para ativar a criptografia de dados em repouso no servidor NAS e melhorar a segurança dos dados.Proteção de dados e política de recuperação: A
reclaimPolicydo CNFS é fixa comoRetain. Excluir um objeto CNFS no Kubernetes não exclui a instância NAS de backend. No entanto, a política de recuperação de um PV é definida por sua StorageClass. Em ambiente de produção, recomendamos definir a política comoRetainpara evitar exclusões acidentais.Recurso de lixeira: Ao criar um NAS, recomendamos ativar o recurso de lixeira com o parâmetro
enableTrashCan: "true"para prevenir exclusões acidentais.Escritas concorrentes: Quando vários Pods montam o mesmo volume de armazenamento compartilhado, projete sua aplicação para evitar escritas concorrentes no mesmo arquivo, o que pode causar corrupção de dados.
-
Operações e gerenciamento
Isolamento de desempenho: Embora volumes de armazenamento isolados forneçam isolamento no nível de dados, todos compartilham a IOPS e o throughput da mesma instância NAS de backend. Para aplicações críticas que exigem desempenho de I/O rigoroso e latência estável, provisione um sistema de arquivos NAS dedicado.
-
Gerenciamento de capacidade: Defina
allowVolumeExpansion: truena StorageClass para expandir a cota de diretório do volume de armazenamento.O valor
requests.storageem uma PVC é usado principalmente para decisões de agendamento e não representa o limite de cota para todo o sistema de arquivos NAS. Monitoramento e alertas: Use container storage monitoring para configurar alertas para métricas chave, como utilização de capacidade, IOPS e throughput, a fim de identificar proativamente gargalos de capacidade ou desempenho.
-
Otimização de custos
Escolha o tipo de armazenamento adequado: Selecione um tipo de NAS com base nos seus requisitos de custo e desempenho. Para orientação, consulte Select a NAS type. Por exemplo, o NAS Capacity oferece um preço mais baixo e é adequado para cargas de trabalho de compartilhamento de arquivos ou arquivamento que não exigem baixa latência.
Libere recursos prontamente: Quando uma aplicação for descontinuada, limpe os recursos não utilizados. Confirme se você precisa delete o sistema de arquivos NAS de backend para evitar custos desnecessários.
Referências
Verificar armazenamento compartilhado, isolamento de dados e armazenamento persistente
Após montar o sistema de arquivos NAS, siga estas etapas para verificar se o armazenamento funciona conforme o esperado.
-
Verificar armazenamento compartilhado e persistente para um deployment
-
Verificar isolamento de dados e armazenamento persistente para um StatefulSet
YAML do CNFS
Execute o comando kubectl get cnfs/<cnfsName> -o yaml para visualizar a configuração completa e o status em tempo real de um objeto CNFS.
Esta seção fornece um exemplo da saída da execução do comando kubectl get cnfs/cnfs-nas-filesystem -o yaml para o cenário descrito em Method 2.
YAML de exemplo
Parâmetros
Limpeza de recursos
Para evitar cobranças inesperadas e garantir a segurança dos dados, siga estas etapas para liberar recursos que você não precisa mais.
-
Excluir a carga de trabalho
Ação: Exclua todas as aplicações que usam a PVC relevante, como deployments e StatefulSets. Esta ação interrompe os pods e desmonta os volumes de armazenamento.
Comando de exemplo:
kubectl delete deployment <your-deployment-name>
-
Excluir a PVC
-
Ação: Exclua a PVC associada à aplicação. O resultado da exclusão do PV depende da
reclaimPolicy.Retain(recomendado): Após excluir a PVC, os dados e o diretório no NAS de backend são preservados.-
Delete: Após excluir a PVC, o PV vinculado também é excluído. A forma como o NAS de backend lida com os dados e o diretório depende do parâmetroarchiveOnDeletenaStorageClass."true"(padrão): Em vez de serem excluídos, o diretório e os arquivos são renomeados paraarchived-{pvName}.{timestamp}."false": Os dados são excluídos permanentemente. Esta ação é irreversível. Use esta configuração com cautela.
Comando de exemplo:
kubectl delete pvc <your-pvc-name>
-
-
Excluir o PV
-
Ação: Exclua o PV. Esta etapa aplica-se principalmente a PVs provisionados estaticamente ou PVs que estão no estado
Releasedporque sua política de recuperação está definida comoRetain.Esta ação remove apenas a definição do recurso do Kubernetes e não exclui os dados do NAS de backend.
Comando de exemplo:
kubectl delete pv <your-pv-name>
-
-
Excluir definições de armazenamento do Kubernetes (Opcional)
-
Ação: Exclua os objetos StorageClass e CNFS se eles não forem mais necessários.
Esta ação remove apenas as definições de recursos do Kubernetes e não exclui os dados do NAS de backend.
Comandos de exemplo:
kubectl delete sc <your-storageclass-name>,kubectl delete cnfs <your-cnfs-name>
-
-
Excluir o sistema de arquivos NAS de backend
Ação: Consulte Delete a file system. Esta ação exclui permanentemente todos os dados no NAS e é irreversível. Proceda com cautela. Antes de executar esta ação, certifique-se de que nenhuma carga de trabalho dependa deste NAS.