O plug-in do Container Storage Interface (CSI) oferece suporte a cotas de diretório em subdiretórios de volumes NAS de uso geral. Ao montar subdiretórios NAS usando o método subPath, as cotas de diretório limitam a capacidade de cada subdiretório de forma independente, impedindo que um aplicativo consuma o armazenamento alocado para outro. Quando um subdiretório atinge seu limite de cota, expanda-o online atualizando o PVC — sem necessidade de reinicializações ou interrupções de service.
Se você usar o CNFS para gerenciar o NAS, o recurso de cota de diretório é ativado por padrão. Para mais informações, consulte Use o CNFS para expandir automaticamente os volumes NAS .
Limitações
As cotas de diretório são suportadas apenas para volumes NAS provisionados dinamicamente que atendem a todas as seguintes condições:
Protocolo: NFS
Tipo de NAS: NAS de uso geral
Método de montagem: subPath
Volumes NAS provisionados estaticamente e volumes NAS provisionados dinamicamente montados usando o método sharepath ou filesystem não suportam cotas de diretório.
Para a lista completa de limitações de cotas de diretório, consulte Directory quotas .
Casos de uso
Por padrão, ao montar um volume NAS em um cluster ACK, o valor de armazenamento declarado na persistent volume claim (PVC) não tem efeito — o pod pode acessar a capacidade total do sistema de arquivos NAS. Se o sistema de arquivos NAS for compartilhado entre vários aplicativos, use cotas de diretório para:
Definir um limite de capacidade por subdiretório de aplicativo
Expandir a cota de um subdiretório online sem interromper os services em execução
Melhorar a utilização de recursos e controlar os custos de armazenamento
Diferentes tipos de NAS possuem limites de capacidade distintos. Para mais informações, consulte General-purpose NAS e Extreme NAS .
Pré-requisitos
Antes de começar, certifique-se de ter:
O plug-in do CSI instalado no seu cluster na versão v1.18.8.45 ou posterior. Para atualizar, consulte Update csi-plugin and csi-provisioner
Um sistema de arquivos NAS de uso geral com um destino de montagem NFS. Caso contrário, create a General-purpose NAS file system
Um destino de montagem na mesma VPC dos nós do seu cluster, com Status definido como Active. Caso contrário, crie um novo destino de montagem. Para mais informações, consulte Manage mount targets
Use volumes NAS provisionados dinamicamente com cotas de diretório
Etapa 1: Crie uma StorageClass com cotas de diretório ativadas
-
Salve o seguinte YAML como
alicloud-nas-quota-sc.yaml. Substitua o valor deserverpelo endereço do destino de montagem do seu sistema de arquivos NAS.Para ativar o recurso de cota de diretório, defina
allowVolumeExpansionouvolumeCapacitycomotrue. SeallowVolumeExpansionestiver definido comotrue, o parâmetrovolumeCapacitynão terá efeito e o recurso de cota de diretório permanecerá ativado.Parâmetro
Descrição
volumeAsDeve ser
subpath. Monta um subdiretório NAS como um PV.serverEndereço do destino de montagem do sistema de arquivos NAS. Consulte Manage mount targets.
pathSubdiretório NAS a ser montado. O padrão é
/. Para o Extreme NAS, deve começar com/share.volumeCapacityDefina como
"true"para ativar as cotas de diretório. SeallowVolumeExpansionfortrue, este parâmetro não terá efeito, mas a cota permanecerá ativada.allowVolumeExpansionDefina como
truepara ativar as cotas de diretório e permitir a expansão online do PVC. Disponível apenas para NAS de uso geral.apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: alicloud-nas-quota-sc mountOptions: - nolock,tcp,noresvport - vers=3 parameters: volumeAs: subpath # Mount a subdirectory as a persistent volume (PV). Required for directory quotas. server: "0cd8b4a576-g****.cn-hangzhou.nas.aliyuncs.com" # Mount target address archiveOnDelete: "false" path: "/test" # Root subdirectory. Default: /. For Extreme NAS, must start with /share. volumeCapacity: "true" # Enables the directory quota feature. provisioner: nasplugin.csi.alibabacloud.com reclaimPolicy: Delete allowVolumeExpansion: true # Allows online PVC expansion. When set to true, volumeCapacity has no effect but directory quotas remain enabled.Parâmetros principais: Para todos os parâmetros, consulte Use volumes NAS provisionados dinamicamente.
-
Crie a StorageClass.
kubectl apply -f alicloud-nas-quota-sc.yaml
Etapa 2: Implante um aplicativo com um volume NAS
-
Salve o seguinte YAML como
nas-sts.yaml. O StatefulSet abaixo cria um pod com um volume NAS provisionado dinamicamente de 20 GiB, baseado na StorageClass com cotas de diretório ativadas.apiVersion: apps/v1 kind: StatefulSet metadata: name: nas-sts spec: selector: matchLabels: app: nginx replicas: 1 template: metadata: labels: app: nginx spec: containers: - name: nginx image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6 volumeMounts: - name: nas-pvc mountPath: /data volumeClaimTemplates: - metadata: name: nas-pvc spec: accessModes: [ "ReadWriteMany" ] storageClassName: "alicloud-nas-quota-sc" resources: requests: storage: 20Gi -
Crie o StatefulSet.
kubectl apply -f nas-sts.yaml -
Verifique se o pod está em execução.
kubectl get pod -l app=nginxSaída esperada:
NAME READY STATUS RESTARTS AGE nas-sts-0 1/1 Running 0 24s -
Verifique se o PV foi criado e se a cota de diretório está ativa.
-
Verifique o PV.
kubectl get pvSaída esperada (o PV tem uma capacidade de 20 GiB):
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS VOLUMEATTRIBUTESCLASS REASON AGE nas-****-c72c-497f-ab13-****** 20Gi RWX Delete Bound default/nas-pvc-nas-sts-0 alicloud-nas-quota-sc <unset> 15m Confirme a cota de diretório no console do NAS. No console do NAS, acesse a página File System List. Na coluna Actions do sistema de arquivos de destino, clique em  > Quota Management. Clique em Manage Quotas para visualizar os detalhes. A cota de diretório está definida como 20 GiB.

-
Verifique o limite de cota de diretório
Como o volume possui uma cota de 20 GiB, qualquer gravação que ultrapasse 20 GiB no diretório montado resultará em um erro de Disk quota exceeded.
-
Grave 20.000 MiB (aproximadamente 19,53 GiB) no diretório montado
/data.kubectl exec -it nas-sts-0 -- dd if=/dev/zero of=/data/20G.txt bs=1M count=20000 -
Aguarde de 5 a 15 minutos e, em seguida, verifique a cota de diretório no console do NAS. No console do NAS, acesse File System List. Na coluna Actions do sistema de arquivos de destino, clique em  > Quota Management. Clique em Manage Quotas para visualizar o uso atual. O diretório agora mostra aproximadamente 19 GiB usados.

-
Tente gravar mais 1 GiB para exceder a cota.
kubectl exec -it nas-sts-0 -- dd if=/dev/zero of=/data/1G.txt bs=1M count=1024O erro a seguir confirma que a cota está sendo aplicada:
dd: closing output file '/data/1G.txt': Disk quota exceeded
Expanda um volume NAS provisionado dinamicamente com cotas de diretório
Expanda o volume aplicando um patch no valor de armazenamento do PVC. Esta operação não interrompe os services em execução.
A cota de um diretório NAS é medida em GiB. Após modificar o PVC, o plug-in do CSI ajusta a cota do diretório NAS montado para a nova capacidade do volume especificada pelo PVC. Durante o ajuste, o plug-in do CSI arredonda o valor da capacidade para o número inteiro mais próximo.
-
Verifique o tamanho atual do PVC.
kubectl get pvcSaída esperada:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE nas-pvc-nas-sts-0 Bound nas-****-c72c-497f-ab13-****** 20Gi RWX alicloud-nas-quota-sc <unset> 23m -
Expanda o PVC de 20 GiB para 30 GiB.
kubectl patch pvc nas-pvc-nas-sts-0 -p '{"spec":{"resources":{"requests":{"storage":"30Gi"}}}}' -
Verifique a expansão conferindo o PV e o PVC.
-
Verifique o PV.
kubectl get pvSaída esperada (a capacidade agora é de 30 GiB):
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS VOLUMEATTRIBUTESCLASS REASON AGE nas-****-c72c-497f-ab13-****** 30Gi RWX Delete Bound default/nas-pvc-nas-sts-0 alicloud-nas-quota-sc <unset> 25m -
Verifique o PVC.
kubectl get pvcSaída esperada:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE nas-pvc-nas-sts-0 Bound nas-****-c72c-497f-ab13-****** 30Gi RWX alicloud-nas-quota-sc <unset> 26m
-
-
Confirme a cota atualizada no console do NAS. No console do NAS, acesse File System List. Na coluna Actions do sistema de arquivos de destino, clique em  > Quota Management. Clique em Manage Quotas para confirmar que a cota de diretório agora é de 30 GiB.

Perguntas frequentes
Se você encontrar problemas ao montar ou usar volumes NAS, consulte:
Próximos passos
Para detalhes sobre a cota de diretório NAS, consulte Directory quotas.
Para monitorar o uso da capacidade do volume NAS, use a métrica
node_volume_capacity_bytes_usede create an alert rule for a Prometheus instance.