Defina políticas de expansão automática para volumes do File Storage NAS (NAS) gerenciados pelo Container Network File System (CNFS). Assim, os volumes do NAS se expandem automaticamente quando o uso de armazenamento ultrapassa o limiar definido. Este tópico descreve como usar o CNFS para essa expansão automática.
Pré-requisitos
O cluster deve usar o CNFS para gerenciar sistemas de arquivos NAS. Para mais informações, consulte Gerenciar sistemas de arquivos NAS usando o CNFS.
-
O cluster usa o plug-in CSI e os componentes de armazenamento atendem aos seguintes requisitos:
As versões do csi-plugin e do csi-provisioner são 1.20.5-ff6490f-aliyun ou posteriores. Para atualizar esses componentes, consulte Atualizar componentes CSI.
O valor padrão de
dnsPolicydo csi-plugin éClusterFirst. Para usar o CNFS na expansão automática de volumes NAS, altere a dnsPolicy padrão deClusterFirstparaClusterFirstWithHostNet.A versão do storage-operator é 1.18.8.56-2aa33ba-aliyun ou posterior. Para mais detalhes, consulte storage-operator.
Etapa 1: Configure o componente storage-operator e ative a expansão automática
O recurso storage-auto-expander padrão do componente storage-operator expande automaticamente os recursos de armazenamento. Conecte-se ao cluster e execute o comando abaixo para modifique o arquivo ConfigMap do storage-operator e ative a expansão automática:
kubectl patch configmap/storage-operator \
-n kube-system \
--type merge \
-p '{"data":{"storage-auto-expander":"{\"imageRep\":\"acs/storage-auto-expander\",\"imageTag\":\"\",\"install\":\"true\",\"template\":\"/acs/templates/storage-auto-expander/install.yaml\",\"type\":\"deployment\"}"}}'
Etapa 2: Configure uma política de expansão automática
-
Verifique o status do objeto CNFS. Confirme se ele está no estado Available.
-
Consulte o objeto CNFS.
kubectl get cnfsSaída esperada:
NAME AGE default-cnfs-nas-837d6ea-20210819155623 14d -
Visualize o status do objeto CNFS.
kubectl get cnfs <The CNFS object queried in the previous step> -o yaml | grep AvailableSaída esperada:
status: Available
-
-
Use o modelo YAML a seguir para crie uma política de expansão automática para um volume NAS.
cat << EOF | kubectl apply -f - apiVersion: storage.alibabacloud.com/v1alpha1 kind: StorageAutoScalerPolicy metadata: name: hybrid-expand-policy spec: pvcSelector: matchLabels: app: nginx # You must specify the label that is added to the persistent volume claim (PVC) and the Deployment to which the NAS volume is mounted. In this example, app: nginx is specified. namespaces: - default - nginx conditions: - name: condition1 key: volume-capacity-used-percentage operator: Gt values: - "80" actions: - name: action1 type: volume-expand params: scale: 100% limits: 500Gi EOFParâmetro
Descrição
pvcSelector
Rótulo usado para associar a política de expansão à PVC que monta o volume NAS. Neste exemplo, usa-se nginx.
namespaces
Namespace da PVC que monta o volume NAS. Se houver vários namespaces, o operador lógico entre eles é OR. Valor padrão: default. O exemplo especifica default e nginx.
conditions
Condições que disparam a ação. Entre múltiplas conditions, o operador lógico é AND. Cada condition inclui os seguintes parâmetros:
key: tipo da métrica.
volume-capacity-used-percentage: indica que o limiar de uso de armazenamento é expresso em porcentagem.
operator: operador de comparação. Pode ser Gt (maior que), Lt (menor que), Eq (igual a) ou Ne (diferente de). O valor não diferencia maiúsculas de minúsculas.
values: valor do limiar.
No exemplo, a condição aciona a action quando a utilização de armazenamento da PVC supera 80%.
actions
Ações executadas quando as conditions anteriores são satisfeitas. Várias ações são permitidas. Cada ação inclui os seguintes parâmetros:
type: tipo da ação. Apenas volume-expand é suportado.
scale: quantidade de armazenamento a adicionar ao volume. Unidades válidas: GiB e porcentagem (%).
limits: capacidade máxima da PVC após a execução da action.
Se a seção actions contiver múltiplas actions, apenas a primeira cujas condições forem atendidas será executada. As demais actions serão ignoradas.
Neste exemplo, action1 define que, ao cumprir as condições, o volume NAS expande em 100%, até o limite máximo de 500 GiB.
-
Use o modelo YAML abaixo para crie uma PVC e um Deployment.
ImportanteA política de expansão automática aplica-se apenas à PVC e ao Deployment com o rótulo especificado. No exemplo, pvcSelector.matchLabels foi definido como
app: nginxna política. Portanto, ela se aplica à PVC e ao Deployment cujo parâmetro labels esteja definido comoapp: nginx.cat << EOF | kubectl apply -f - kind: PersistentVolumeClaim apiVersion: v1 metadata: name: cnfs-nas-pvc labels: app: nginx # You must specify the same value as the pvcSelector.matchLabels parameter in the YAML template of the expansion policy. In this example, app: nginx is specified. spec: accessModes: - ReadWriteMany storageClassName: alibabacloud-cnfs-nas resources: requests: storage: 50Gi --- apiVersion: apps/v1 kind: Deployment metadata: name: cnfs-nas-deployment labels: app: nginx spec: selector: matchLabels: app: nginx # You must specify the same value as the pvcSelector.matchLabels parameter in the YAML template of the expansion policy. In this example, app: nginx is specified. template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.14.2 volumeMounts: - mountPath: "/data" name: cnfs-nas-pvc volumes: - name: cnfs-nas-pvc persistentVolumeClaim: claimName: cnfs-nas-pvc EOF
Etapa 3: Verifique a expansão automática do volume NAS
-
Liste todos os pods no namespace default.
kubectl get podSaída esperada:
NAME READY STATUS RESTARTS AGE cnfs-nas-deployment-56dbcc7fb7-wh79z 1/1 Running 0 20m -
Acesse o pod da aplicação e grave 50 GiB de dados no diretório onde o volume NAS está montado.
cd /data dd if=<data path> of=<mounted path> kubectl exec -it cnfs-nas-deployment-56dbcc7fb7-wh79z -ti -- dd if=/dev/zero of=/data/test1 bs=1G count=50 -
Verifique os eventos relacionados à expansão de volume.
kubectl get eventsA saída a seguir indica que o uso de armazenamento do volume NAS excedeu 80%, o que disparou a expansão. O volume NAS passou de 50 GiB para 100 GiB.
12s Warning StartExpand persistentvolumeclaim/cnfs-nas-pvc Start to expand of pvc cnfs-nas-pvc from 50Gi to 100Gi, usedCapacityPercentage:96%, freeSize:2048MB. 12s Normal ExternalExpanding persistentvolumeclaim/cnfs-nas-pvc waiting for an external controller to expand this PVC 12s Normal Resizing persistentvolumeclaim/cnfs-nas-pvc External resizer is resizing volume nas-462db2b2-717d-44fe-b0b6-fb4db03a**** 12s Normal VolumeResizeSuccessful persistentvolumeclaim/cnfs-nas-pvc Resize volume succeeded -
Verifique as informações de uso do volume no painel CSI NAS.
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 .
Na página Prometheus Monitoring, escolha .
-
Na aba CSI NAS, selecione o namespace do volume de armazenamento NAS e a PVC correspondente. Em seguida, visualize a capacidade do volume NAS na seção de capacidade total.
Neste exemplo, defina Namespace como default e PVC como cnfs-nas-pvc.

O gráfico acima mostra que a expansão ocorreu às 10:23:30 e o volume NAS foi expandido para 100 GiB.