O Container Network File System (CNFS) permite gerenciar sistemas de arquivos NAS como objetos nativos do Kubernetes, possibilitando sua criação e uso de forma declarativa. Isso fornece volumes persistentes simples e eficientes para cargas de trabalho como sites e análise de dados, além de suportar diversos casos de uso, como compartilhamento e isolamento de dados.
Pré-requisitos
-
É necessário ter um cluster gerenciado ACK Pro da versão 1.20 ou posterior. Para atualizar o cluster, consulte Manually upgrade a cluster.
O gerenciamento do CNFS via kubectl requer a versão 1.20 ou posterior.
-
As seguintes versões de add-ons de armazenamento são obrigatórias. 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.
-
O File Storage NAS service deve estar ativado. Os seguintes limites se aplicam aos sistemas de arquivos NAS. Para mais informações, acesse Limitations.
Há suporte apenas para sistemas de arquivos NAS de uso geral dos tipos Capacity, Performance e Premium; o Extreme NAS não é suportado.
Existe um limite máximo para a quantidade de sistemas de arquivos NAS que você pode criar por conta em uma única região. Para mais detalhes, consulte o upper limit.
Para usar a criptografia KMS em um sistema de arquivos NAS, ative o KMS service. Para mais informações, consulte Activate Key Management Service.
Criar um sistema de arquivos NAS
Criar e usar um sistema de arquivos NAS
Antes de começar, escolha como fornecer um sistema de arquivos NAS para o seu cluster.
Método | Descrição | Método de provisionamento de volume | Casos de uso |
O CNFS cria e gerencia automaticamente um sistema de arquivos NAS com uma configuração fixa para montagens rápidas. | volume dinâmico |
| |
Método 2: Criar e usar um sistema de arquivos NAS personalizado | O CNFS cria um novo sistema de arquivos NAS personalizável com base nos parâmetros que você especificar. |
| Indicado quando há requisitos específicos de performance, criptografia ou custo, ou quando é necessário um gerenciamento de armazenamento mais detalhado. |
Método 3: Gerencie e use um sistema de arquivos NAS existente | O CNFS integra um sistema de arquivos NAS existente para gerenciamento centralizado. |
| Indicado para integrar um sistema de arquivos NAS existente ao seu cluster. |
Método 1: Criar automaticamente um sistema de arquivos NAS
Você pode usar o Container Network File System (CNFS) para criar automaticamente um sistema de arquivos NAS com uma configuração padrão. O CNFS cria o sistema de arquivos com base no ambiente do seu cluster. Por padrão, o sistema de arquivos não possui criptografia. Caso a região atual não ofereça suporte ao Capacity NAS, um sistema de arquivos Performance NAS será criado em seu lugar.
Após criar um recurso CNFS e uma StorageClass, sua carga de trabalho poderá solicitar armazenamento por meio de um PersistentVolumeClaim (PVC). Isso cria dinamicamente um PersistentVolume (PV) no sistema de arquivos NAS e o monta em um Pod.
kubectl
1. Crie um CNFS Crie um objeto |
|
2. Crie uma StorageClass Crie um objeto | |
3. Crie um PVC A aplicação solicita um volume usando um PVC e referencia a StorageClass como modelo de configuração. | |
4. Crie uma aplicação e monte o PVC Após criar o PVC, implante uma aplicação de exemplo, como um Deployment ou um StatefulSet, e monte o PV vinculado ao PVC na aplicação. |
|
5. Verifique os resultados |
|
Console
1. Crie um CNFS |
|
2. Crie uma StorageClass |
|
3. Crie um PVC |
|
4. Crie uma aplicação e monte o sistema de arquivos NAS | Ao criar um Deployment ou um StatefulSet, monte um PVC em um contêiner na seção Volume da página Container. O exemplo a seguir mostra como montar o sistema de arquivos NAS criado usando o CNFS no caminho /data em um contêiner. Detalhes da configuração: Defina Volume Type como Cloud Storage, selecione o PVC do CNFS NAS correspondente (por exemplo, |
Método 2: Criar um sistema de arquivos NAS personalizado
Use o Container Network File System (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 as aplicações no cluster ao criar um volume persistente estático (PV) ou uma StorageClass dinâmica.
kubectl
1. Crie um sistema de arquivos NAS personalizado Crie um objeto |
|
2. Crie um PV ou StorageClass Após criar o CNFS, escolha como sua aplicação se conectará e usará o sistema de arquivos NAS.
| Static PVPara mais informações sobre os parâmetros do PV, consulte Use static NAS volumes. Dynamic StorageClassPara mais informações sobre os parâmetros da StorageClass, consulte Use dynamic NAS volumes. |
3. Crie um PVC Crie uma solicitação de volume persistente (PVC) que referencie o sistema de arquivos NAS com base no volume persistente estático ou na StorageClass dinâmica que você criou anteriormente. | Static PVDynamic StorageClass |
4. Crie uma aplicação e monte o sistema de arquivos NAS Após criar a solicitação de volume persistente (PVC), monte o PV vinculado à sua aplicação. | |
5. Verifique o resultado |
|
Console
|
|
| PV
StorageClass
|
|
|
| Ao criar um Deployment ou um StatefulSet, monte um PVC em um contêiner na seção Volume da página Container. O exemplo a seguir mostra como montar o sistema de arquivos NAS criado usando o CNFS no caminho /data em um contêiner. Detalhes da configuração: Defina Volume Type como Cloud Storage, selecione o PVC do CNFS NAS correspondente (por exemplo, |
Método 3: Usar um sistema de arquivos NAS existente
Use o CNFS para conectar um sistema de arquivos NAS existente ao seu cluster, tornando-o disponível para as aplicações.
kubectl
1. Crie um CNFS para um sistema de arquivos NAS existente Crie um recurso |
|
2. Crie um PV ou StorageClass Após criar o CNFS, escolha como sua aplicação se conectará e usará o sistema de arquivos NAS.
| Static PVPara mais informações sobre os parâmetros do PV, consulte Use static NAS volumes. Dynamic StorageClassPara mais informações sobre os parâmetros da StorageClass, consulte Use dynamic NAS volumes. |
3. Crie um PVC Crie uma solicitação de volume persistente (PVC) que referencie o sistema de arquivos NAS com base no volume persistente estático ou na StorageClass dinâmica que você criou anteriormente. | Static PVDynamic StorageClass |
4. Crie uma aplicação e monte o sistema de arquivos NAS Após criar a solicitação de volume persistente (PVC), monte o PV vinculado à sua aplicação. | |
5. Verifique o resultado |
|
Console
|
|
| PV
StorageClass
|
|
|
| Ao criar um Deployment ou um StatefulSet, monte um PVC em um contêiner na seção Volume da página Container. O exemplo a seguir mostra como montar o sistema de arquivos NAS criado usando o CNFS no caminho /data em um contêiner. Detalhes da configuração: Defina Volume Type como Cloud Storage, selecione o PVC do CNFS NAS correspondente (por exemplo, |
Configurar armazenamento compartilhado e isolado
Após criar um sistema de arquivos NAS, configure-o para armazenamento compartilhado ou isolado para atender aos requisitos da sua aplicação.
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 como um volume compartilhado.
Como funciona: Este método usa um volume estático. O
pathespecificado no PersistentVolume (PV) é o diretório exato que o driver CSI monta. Quando vários Pods montam esse PV usando o mesmo PersistentVolumeClaim (PVC), todos acessam o mesmo diretório, o que possibilita o compartilhamento de dados.Configuração principal: Na seção
volumesdo modelo de Pod da sua carga de trabalho (.spec.template), defina o parâmetropersistentVolumeClaim.claimNamecom o mesmo nome do PVC.
1. Crie um PV e um PVC que apontem para um diretório específico | |
2. Crie um Deployment de exemplo | |
3. Verifique o resultado |
Configurar um volume NAS isolado
Para casos de uso que exigem isolamento de dados, como multitenancy, forneça a cada Pod ou grupo de Pods um diretório de armazenamento dedicado.
Como funciona: Este método usa um volume dinâmico. O driver CSI cria automaticamente um subdiretório dedicado com o mesmo nome do PV sob o
pathespecificado para servir como ponto de montagem. Como cada PVC se vincula a um subdiretório separado, isso garante o isolamento dos dados.-
Configuração principal:
Na seção
parametersda sua StorageClass, certifique-se de quevolumeAs: subpathesteja definido. Essa configuração (que é o padrão) cria um subdiretório dedicado para cada PVC.Na definição do StatefulSet, use a seção
volumeClaimTemplatespara criar e vincular automaticamente um PVC exclusivo para cada Pod.
1. Crie uma StorageClass para criação dinâmica de subdiretórios | |
2. Crie um StatefulSet de exemplo | |
3. Verifique o resultado |
Recomendações para produção
-
Segurança de dados
Criptografia de dados: Ao criar um novo sistema de arquivos NAS, defina
encryptType: SSE-KMSnosparametersdo objeto CNFS. Isso ativa a criptografia no lado do servidor e melhora a segurança dos dados.Proteção de dados e política de recuperação: O
reclaimPolicypara um objeto CNFS é sempreRetain, o que significa que exclua o objeto CNFS no Kubernetes não exclui a instância do NAS de backend. No entanto, a política de recuperação para um PV é definida por sua StorageClass. Para ambientes de produção, defina a política de recuperação comoRetainpara evitar perda acidental de dados.Lixeira: Ao criar um sistema de arquivos NAS, ative a lixeira definindo
enableTrashCan: "true"para evitar a exclusão acidental de dados.Gravações simultâneas: Quando vários Pods montam o mesmo volume de armazenamento compartilhado, evite que várias instâncias da aplicação gravem no mesmo arquivo no nível da aplicação. Isso evita a corrupção de arquivos por gravações simultâneas.
-
Operações e gerenciamento
Isolamento de performance: Os volumes de armazenamento isolados fornecem apenas isolamento no nível de dados. Todos os volumes isolados compartilham o IOPS e o throughput da mesma instância de NAS de backend. Para aplicações principais com requisitos rigorosos de performance de I/O e necessidade de latência estável, provisione um sistema de arquivos NAS dedicado.
-
Gerenciamento de capacidade: Defina
allowVolumeExpansion: truena sua StorageClass para permitir a expansão da cota de diretório do volume de armazenamento.O valor de
requests.storageem um PVC é usado principalmente para decisões de agendamento e não define uma cota rígida em todo o sistema de arquivos NAS. Monitoramento e alertas: Use o Container Storage Monitoring para configurar alertas para métricas principais, como utilização de capacidade, IOPS e throughput do seu sistema de arquivos NAS. Isso ajuda a identificar prontamente gargalos de capacidade ou performance.
-
Otimização de custos
Escolha o tipo de armazenamento correto: Selecione um tipo de NAS com base nos seus requisitos de custo e performance. Para obter orientações, consulte Select a NAS type. Por exemplo, o Capacity NAS é uma opção de custo mais baixo, adequada para tarefas insensíveis à latência, como compartilhamento de arquivos ou arquivamento.
Libere recursos prontamente: Após desativar uma aplicação, libere todos os recursos não utilizados. Além disso, exclua o sistema de arquivos NAS de backend se ele não for mais necessário, para evitar custos inesperados.
Referências
Verificar armazenamento compartilhado, isolamento de dados e armazenamento persistente
Após a montagem do sistema de arquivos NAS, verifique se o armazenamento se comporta conforme o esperado.
-
Verificar o armazenamento compartilhado e persistente para um Deployment
-
Verificar o isolamento de dados e o armazenamento persistente para um StatefulSet
YAML do CNFS
Execute kubectl get cnfs/<cnfsName> -o yaml para visualizar a configuração completa e o status em tempo real do objeto CNFS.
Esta seção fornece um exemplo de execução do comando kubectl get cnfs/cnfs-nas-filesystem -o yaml no Método 2 para visualizar o YAML do cnfs-nas-filesystem.
Exemplo de YAML
Parâmetros
Limpeza de recursos
Para evitar cobranças inesperadas e garantir a segurança dos dados, siga estas etapas para liberar recursos que não estão mais em uso.
-
Exclua a carga de trabalho
Ação: Exclua todas as aplicações que usam os PVCs relevantes, como Deployments e StatefulSets. Essa ação para os Pods e desmonta os volumes.
Comando de exemplo:
kubectl delete deployment <YOUR-DEPLOYMENT-NAME>
-
Exclua os PVCs
-
Ação: Exclua o PVC associado à aplicação. O resultado da exclusão do PV depende da política de recuperação (
reclaimPolicy).Retain(Recomendado): Após excluir o PVC, os dados e diretórios no NAS de backend são totalmente retidos.-
Delete: Quando um PVC é excluído, seu PV vinculado também é excluído. Os dados e diretórios no NAS de backend serão tratados com base na configuração do parâmetroarchiveOnDeletenaStorageClass."true"(padrão): O diretório ou arquivo não é realmente excluído. Em vez disso, é renomeado paraarchived-{pvName}.{timestamp}."false": Os dados são excluídos permanentemente. Esta operação é irreversível. Use com cautela.
Comando de exemplo:
kubectl delete pvc <YOUR-PVC-NAME>-
Exclua o PV
-
Operação: Exclua o PV. Esta operação é voltada principalmente para PVs estáticos ou para PVs que estão no estado
Releasedapós o uso da políticaRetainna etapa anterior.Esta ação apenas remove a definição do recurso do Kubernetes. Ela não exclui os dados no NAS de backend.
Comando de exemplo:
kubectl delete pv <YOUR-PV-NAME>
-
-
Exclua definições de armazenamento do Kubernetes (Opcional)
-
Ação: Exclua os objetos StorageClass e CNFS que não são mais necessários.
Esta ação apenas remove as definições de recursos do Kubernetes. Ela não exclui os dados no NAS de backend.
Comandos de exemplo:
kubectl delete sc <YOUR-STORAGECLASS-NAME>ekubectl delete cnfs <YOUR-CNFS-NAME>
-
-
Exclua o sistema de arquivos NAS de backend
Ação: Consulte Delete a file system. Esta ação irreversível exclui permanentemente todos os dados no NAS. Use com extrema cautela. Antes de prosseguir, certifique-se de que nenhum outro service dependa deste sistema de arquivos NAS.
-