Los discos ENS proporcionan block storage persistente para las cargas de trabajo que se ejecutan en nodos de Edge Node Service (ENS) dentro de un clúster ACK Edge. Mediante el plugin de Container Storage Interface (CSI), puede montar volúmenes de disco ENS mediante aprovisionamiento dinámico (ENS crea el disco automáticamente) o aprovisionamiento estático (usted proporciona un disco existente).
Requisitos previos
Antes de empezar, asegúrese de contar con lo siguiente:
Un clúster ACK Edge. Consulte Create an ACK Edge cluster
Un nodo perimetral creado y agregado al clúster. Consulte Create an instance y Add an edge node
Los componentes
csi-ens-pluginycsi-ens-provisionerinstalados. Consulte Manage componentsUn cliente kubectl conectado al clúster. Consulte Obtención del archivo kubeconfig de un clúster y uso de kubectl para conectarse al clúster
(Solo para aprovisionamiento estático) Un disco ENS pay-as-you-go ya creado. Registre el ID del disco; por ejemplo,
d-wz92s6d95go6ki9x****
Elección del método de aprovisionamiento
|
Aprovisionamiento dinámico |
Aprovisionamiento estático |
|
|
Cuándo utilizarlo |
Al desplegar nuevas aplicaciones que requieren almacenamiento |
Cuando ya adquirió un disco ENS |
|
Cómo se crea el disco |
Automáticamente mediante StorageClass |
Manualmente, antes de crear el PV |
|
Facturación del disco |
Solo pay-as-you-go |
— |
|
Configuración típica |
StorageClass → PVC → pod |
PV → PVC → pod |
Utilice el aprovisionamiento dinámico para nuevos despliegues. Recurra al aprovisionamiento estático únicamente cuando reutilice un disco existente.
Notas de uso
Restricciones estrictas:
Un disco ENS solo se puede montar en un pod a la vez. No se admite el uso compartido.
Los discos ENS únicamente se pueden montar en nodos ENS que se encuentren en la misma región que el disco.
La única
reclaimPolicycompatible esRetain. Al eliminar una solicitud de volumen persistente (PVC), el volumen persistente (PV) y los datos del disco permanecen intactos; elimínelos manualmente cuando ya no sean necesarios.No se admite
allowVolumeExpansion.Para eliminar o recuperar un disco ENS, utilice la consola de Edge Node Service. Esta acción no se puede realizar desde el clúster ACK.
Si se recrea un pod y el programador no puede colocarlo en la zona original, el pod permanecerá en estado
Pendinghasta que se reprograme en una zona compatible.
Recomendaciones:
Para nuevos despliegues, utilice una StorageClass con aprovisionamiento dinámico para que ENS cree y gestione los discos automáticamente.
Asegúrese de que el tamaño del disco no exceda el límite de capacidad por disco para el tipo de disco seleccionado. Consulte Disk types.
Para obtener detalles sobre la facturación, consulte Billing of block storage devices.
Montaje de un volumen de disco ENS con aprovisionamiento dinámico
El aprovisionamiento dinámico permite que Kubernetes cree y conecte un disco ENS automáticamente cuando un pod necesita almacenamiento. Existen dos modos de vinculación; elija el adecuado según la topología de regiones de su clúster.
Paso 1: Crear una StorageClass
Los clústeres ACK Edge pueden abarcar varias regiones. Seleccione el modo de vinculación que se ajuste a su despliegue:
|
Modo de vinculación |
Funcionamiento |
Cuándo utilizarlo |
|
|
Crea el disco en la zona donde se programa el pod |
Clústeres multirregión (recomendado) |
|
|
Crea el disco al generar la PVC, antes de programar cualquier pod |
Clústeres de una sola región o cuando la región se conoce de antemano |
En clústeres ACK Edge multirregión, utilice WaitForFirstConsumer para garantizar que el disco se cree en la zona donde se programa el pod.
Opción A: WaitForFirstConsumer (recomendado para clústeres multirregión)
Cree el archivo storage-class-topology.yaml:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: alicloud-ens-disk-available
provisioner: ensplugin.csi.alibabacloud.com
parameters:
type: available
fsType: ext4
volumeBindingMode: WaitForFirstConsumer
reclaimPolicy: Retain
allowVolumeExpansion: false
Parámetros clave:
provisioner: ensplugin.csi.alibabacloud.com— el aprovisionador CSI de ENS que gestiona el ciclo de vida del disco.type: available— el tipo de disco.volumeBindingMode: WaitForFirstConsumer— retrasa la creación del disco hasta que se programa un pod, de modo que el disco se crea en la zona correcta.reclaimPolicy: Retain— el único valor compatible. El disco y sus datos persisten después de eliminar la PVC.
Aplique la StorageClass:
kubectl apply -f storage-class-topology.yaml
Opción B: Immediate (para clústeres de una sola región)
Cree el archivo storage-class-csi.yaml:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: alicloud-ens-disk-available
provisioner: ensplugin.csi.alibabacloud.com
parameters:
type: available
regionId: <your-region-id>
reclaimPolicy: Retain
allowVolumeExpansion: false
volumeBindingMode: Immediate
Parámetros clave:
regionId— opcional. La región donde se crea automáticamente el disco.volumeBindingMode: Immediate— crea el disco tan pronto como se genera la PVC, antes de programar cualquier pod.
Aplique la StorageClass:
kubectl apply -f storage-class-csi.yaml
Comprobación de la StorageClass:
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 del clúster. En el panel izquierdo, elija Volumes > StorageClasses.
La StorageClass recién creada aparece en la página StorageClasses.
Paso 2: Crear una PVC
Cree el archivo pvc-ssd.yaml:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: disk-pvc
spec:
accessModes:
- ReadWriteOnce
volumeMode: Filesystem
resources:
requests:
storage: 25Gi
storageClassName: alicloud-ens-disk-available
Aplique la PVC:
kubectl create -f pvc-ssd.yaml
Comprobación de la PVC:
En el panel izquierdo de la página de detalles del clúster, elija Volumes > Persistent Volume Claims. La PVC aparece en la página Persistent Volume Claims.
Paso 3: Crear una aplicación
Cree el archivo pvc-dynamic.yaml para desplegar un StatefulSet de nginx que monte la PVC:
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: nginx-dynamic
spec:
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
name: web
volumeMounts:
- name: pvc-disk
mountPath: /data
volumes:
- name: pvc-disk
persistentVolumeClaim:
claimName: disk-pvc
Parámetros clave:
mountPath: /data— la ruta dentro del contenedor donde se monta el disco.claimName: disk-pvc— debe coincidir con el nombre de la PVC del Paso 2.
Aplique el StatefulSet:
kubectl create -f pvc-dynamic.yaml
Comprobación de la aplicación:
En el panel izquierdo de la página de detalles del clúster, elija Workloads > StatefulSets. Confirme que el StatefulSet nginx-dynamic se esté ejecutando.
Montaje de un volumen de disco ENS con aprovisionamiento estático
El aprovisionamiento estático se utiliza cuando cuenta con un disco ENS pay-as-you-go existente. Debe crear manualmente un PV que referencie el ID del disco y, a continuación, vincular una PVC a este.
Paso 1: Crear un PV
Cree el archivo pv-static.yaml. Reemplace <your-disk-id> con el ID de su disco ENS y <your-node-region-id> con el ID de región del nodo ENS destino:
apiVersion: v1
kind: PersistentVolume
metadata:
name: csi-pv
labels:
alicloud-pvname: static-disk-pv
spec:
capacity:
storage: 25Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
csi:
driver: ensplugin.csi.alibabacloud.com
volumeHandle: "<your-disk-id>"
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: topology.ensplugin.csi.alibabacloud.com/region
operator: In
values:
- "<your-node-region-id>"
Parámetros clave:
volumeHandle: "<your-disk-id>"— el ID del disco ENS que se asociará con este PV. Ejemplo:d-wz92s6d95go6ki9x****.nodeAffinity— restringe los nodos a los que se puede vincular este PV según la región. Establezca<your-node-region-id>con el valor de la etiquetatopology.ensplugin.csi.alibabacloud.com/regiondel nodo ENS destino.labels: alicloud-pvname: static-disk-pv— utilizado por el selector de la PVC en el Paso 2 para vincularse a este PV específico.persistentVolumeReclaimPolicy: Retain— los datos del disco se conservan cuando se elimina la PVC.
Aplique el PV:
kubectl create -f pv-static.yaml
Comprobación del PV:
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 del clúster. En el panel izquierdo, elija Volumes > Persistent Volumes.
El PV recién creado aparece en la página Persistent Volumes.
Paso 2: Crear una PVC
Cree el archivo pvc-static.yaml. El selector matchLabels vincula esta PVC al PV específico creado en el Paso 1:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: csi-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 25Gi
selector:
matchLabels:
alicloud-pvname: static-disk-pv
Parámetros clave:
storage: 25Gi— la capacidad solicitada. No debe exceder la capacidad del PV al que se vincula.matchLabels: alicloud-pvname: static-disk-pv— selecciona el PV mediante su etiqueta. Debe coincidir con la etiqueta del PV del Paso 1.
Aplique la PVC:
kubectl create -f pvc-static.yaml
Comprobación de la PVC:
En el panel izquierdo de la página de detalles del clúster, elija Volumes > Persistent Volume Claims. Confirme que la PVC csi-pvc aparezca y esté vinculada.
Paso 3: Crear una aplicación
Cree el archivo web.yaml para desplegar un StatefulSet de nginx que monte el disco aprovisionado estáticamente:
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: web
spec:
selector:
matchLabels:
app: nginx
serviceName: "nginx"
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
name: web
volumeMounts:
- name: pvc-disk
mountPath: /data
volumes:
- name: pvc-disk
persistentVolumeClaim:
claimName: csi-pvc
Parámetros clave:
mountPath: /data— la ruta dentro del contenedor donde se monta el disco.claimName: csi-pvc— debe coincidir con el nombre de la PVC del Paso 2.
Aplique el StatefulSet:
kubectl apply -f web.yaml
Comprobación de la aplicación:
En el panel izquierdo de la página de detalles del clúster, elija Workloads > StatefulSets. Confirme que el StatefulSet web se esté ejecutando. Un estado de ejecución confirma que el disco ENS se montó correctamente.
Pasos siguientes
Disk types — compare las capacidades y el rendimiento de los tipos de disco.
Facturación de dispositivos de block storage — conozca los precios pay-as-you-go de los discos ENS.