Puede definir políticas de expansión automática para los volúmenes de File Storage NAS (NAS) que gestiona Container Network File System (CNFS). De este modo, los volúmenes NAS se expanden automáticamente cuando el uso del almacenamiento supera el umbral establecido. En este tema se describe cómo usar CNFS para expandir automáticamente volúmenes NAS.
Requisitos previos
El clúster debe poder usar CNFS para gestionar sistemas de archivos NAS. Para obtener más información, consulte Manage NAS file systems using CNFS.
-
El clúster utiliza el plugin CSI y los componentes relacionados con el almacenamiento deben cumplir a continuación los siguientes requisitos:
Las versiones de csi-plugin y csi-provisioner deben ser 1.20.5-ff6490f-aliyun o posteriores. Para obtener más información sobre cómo actualizar csi-plugin y csi-provisioner, consulte Upgrade CSI components.
El valor predeterminado de
dnsPolicyen csi-plugin esClusterFirst. Si desea usar CNFS para expandir automáticamente los volúmenes NAS, debe cambiar el valor predeterminado de dnsPolicy deClusterFirstaClusterFirstWithHostNet.La versión de storage-operator debe ser 1.18.8.56-2aa33ba-aliyun o posterior. Para obtener más información, consulte storage-operator.
Paso 1: Configurar el componente storage-operator y habilitar la expansión automática
El componente storage-auto-expander predeterminado dentro de storage-operator se encarga de expandir automáticamente los recursos de almacenamiento. Conéctese al clúster y ejecute el siguiente comando para modificar el archivo ConfigMap de storage-operator y habilitar la función de expansión 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\"}"}}'
Paso 2: Configurar una política de expansión automática
-
Consulte el estado del objeto CNFS. Compruebe que el objeto CNFS se encuentre en el estado Available.
-
Consulte el objeto CNFS.
kubectl get cnfsResultado esperado:
NAME AGE default-cnfs-nas-837d6ea-20210819155623 14d -
Consulte el estado del objeto CNFS.
kubectl get cnfs <The CNFS object queried in the previous step> -o yaml | grep AvailableResultado esperado:
status: Available
-
-
Utilice la siguiente plantilla YAML para crear una política de expansión automática para un volumen 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
Descripción
pvcSelector
Etiqueta que se usa para vincular la política de expansión con la PVC donde se monta el volumen NAS. En este ejemplo se utiliza nginx.
namespaces
Namespace de la PVC donde se monta el volumen NAS. Si se especifican varios namespaces, el operador lógico entre ellos es OR. Valor predeterminado: default. En este ejemplo se indican default y nginx.
conditions
Condiciones que desencadenan la acción. Cuando hay varias conditions, el operador lógico entre ellas es AND. Cada condition incluye los siguientes parámetros:
key: tipo de métrica.
volume-capacity-used-percentage: indica que el umbral de uso del almacenamiento se expresa en porcentaje.
operator: operador de comparación. Puede ser Gt (mayor que), Lt (menor que), Eq (igual a) o Ne (distinto de). El valor no distingue entre mayúsculas y minúsculas.
values: valor del umbral.
En el ejemplo, la condición establece que la action se activa cuando el uso del almacenamiento de la PVC supera el 80 %.
actions
Acciones que se ejecutan cuando se cumplen las conditions anteriores. Se permiten varias acciones. Cada una incluye los siguientes parámetros:
type: tipo de acción. Solo se admite volume-expand.
scale: tamaño del almacenamiento que desea agregar al volumen. Unidades válidas: GiB y porcentaje (%).
limits: capacidad máxima de la PVC si se ejecuta la action.
Si en la sección actions se especifican varias actions, solo se ejecuta la primera action cuyas condiciones se cumplan. Las demás actions se omiten.
En este ejemplo, action1 indica que, al cumplirse las condiciones, el volumen NAS se expande un 100 %. La capacidad máxima a la que puede llegar el volumen NAS es de 500 GiB.
-
Utilice la siguiente plantilla YAML para crear una PVC y un Deployment.
ImportanteLa política de expansión automática se aplica a la PVC y al Deployment que tengan la etiqueta especificada. En este ejemplo, el parámetro pvcSelector.matchLabels de la política tiene el valor
app: nginx. Por lo tanto, la política afecta a la PVC y al Deployment cuyo parámetro labels esté configurado 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
Paso 3: Comprobar que el volumen NAS se expande automáticamente
-
Consulte todos los pods del namespace default.
kubectl get podResultado esperado:
NAME READY STATUS RESTARTS AGE cnfs-nas-deployment-56dbcc7fb7-wh79z 1/1 Running 0 20m -
Inicie sesión en el pod de la aplicación y escriba 50 GiB de datos en el directorio donde está montado el volumen NAS.
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 -
Revise los eventos relacionados con la expansión del volumen.
kubectl get eventsEl siguiente resultado indica que el uso del almacenamiento del volumen NAS superó el 80 %, lo cual activó la expansión. El volumen NAS pasó de 50 GiB a 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 -
Revise la información de uso del volumen en el panel de CSI NAS.
Inicie sesión en la consola de ACK. En el panel de navegación izquierdo, haga clic en Clusters.
En la página Clusters, haga clic en el nombre de su clúster. Luego, en el panel de navegación izquierdo, seleccione .
En la página Prometheus Monitoring, elija .
-
En la pestaña CSI NAS, seleccione el namespace donde se encuentra el volumen de almacenamiento NAS y la PVC correspondiente. Después podrá consultar la capacidad del volumen NAS en la sección de capacidad total.
En este ejemplo, establezca Namespace en default y PVC en cnfs-nas-pvc.

La gráfica anterior muestra que la expansión ocurrió a las 10:23:30 y que el volumen NAS aumentó hasta 100 GiB.