Montaje dinámico de un PV local en un StatefulSet
Escenarios de aplicación
El montaje dinámico solo está disponible para crear un StatefulSet. Se implementa con una plantilla de reclamo de volumen (campo volumeClaimTemplates) y depende de la clase de almacenamiento para aprovisionar PV dinámicamente. En este modo, cada pod en un StatefulSet de múltiples pods está asociado con un PVC y un PV únicos. Después de reprogramar un pod, los datos originales todavía se pueden montar en él basándose en el nombre de PVC. En el modo de montaje común para una Deployment, si se admite ReadWriteMany, varios pods de la Deployment se montarán en el mismo almacenamiento subyacente.
Requisitos previos
- Ha creado un clúster e instalado el complemento de CSI (everest) en el clúster.
- Si desea crear un clúster mediante comandos, utilice kubectl para conectarse al clúster. Para obtener más información, véase Conexión a un clúster con kubectl.
- Ha importado un disco de datos de un nodo al grupo de almacenamiento de PV local. Para obtener más información, véase Grupos de almacenamiento.
Montaje dinámico de un PV local en la consola
- Inicie sesión en la consola de CCE y acceda a la consola del clúster.
- En el panel de navegación de la izquierda, haga clic en Workloads. En el panel derecho, haga clic en la ficha StatefulSets.
- Haga clic en Create Workload en la esquina superior derecha. En la página mostrada, haga clic en Data Storage en el área Container Settings y haga clic en Add Volume para seleccionar VolumeClaimTemplate (VTC).
- Haga clic en Create PVC. En el cuadro de diálogo que se muestra, configure los parámetros de plantilla de notificación de volumen.
Montar y utilizar dinámicamente volúmenes de almacenamiento. Para obtener más información sobre otros parámetros, consulte Creación de un StatefulSet.
Parámetro
Descripción
PVC Type
En esta sección, seleccione Local PV.
PVC Name
Escriba el nombre del PVC. Después de crear un PVC, se agrega automáticamente un sufijo en función del número de instancias. El formato es <Custom PVC name>-<Serial number>, por ejemplo, example-0.
Creation Method
Solo puede seleccionar Dynamically provision para crear un PVC, PV y almacenamiento subyacente en la consola en modo en cascada.
Storage Classes
La clase de almacenamiento de los PV locales es de csi-local-topology.
Access Mode
Los PV locales solo soportan ReadWriteOnce, lo que indica que un volumen de almacenamiento puede montarse en un nodo en modo de lectura/escritura. Para obtener más información, véase Modos de acceso al volumen.
Storage Pool
Consulte el grupo de almacenamiento importado. Para obtener más información acerca de cómo importar un nuevo volumen de datos al grupo de almacenamiento, consulte Grupos de almacenamiento.
Capacity (GiB)
Capacidad del volumen de almacenamiento solicitado.
- Introduzca la ruta en la que está montado el volumen.
En este ejemplo, el disco se monta en la trayectoria /data del contenedor. Los datos contenedor generados en esta ruta se almacenan en el PV local.
- Después de completar la configuración, haga clic en Create.
Una vez creada la carga de trabajo, puede probar Verificación de la persistencia de datos.
(kubectl) Uso de un PV local existente
- Utilice kubectl para conectarse al clúster.
- Cree un archivo denominado statefulset-local.yaml. En este ejemplo, el PV local se monta en la trayectoria /data.
apiVersion: apps/v1 kind: StatefulSet metadata: name: statefulset-local namespace: default spec: selector: matchLabels: app: statefulset-local template: metadata: labels: app: statefulset-local spec: containers: - name: container-1 image: nginx:latest volumeMounts: - name: pvc-local # The value must be the same as that in the volumeClaimTemplates field. mountPath: /data # Location where the storage volume is mounted. imagePullSecrets: - name: default-secret serviceName: statefulset-local # Headless Service name. replicas: 2 volumeClaimTemplates: - apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-local namespace: default spec: accessModes: - ReadWriteOnce # The local PV must adopt ReadWriteOnce. resources: requests: storage: 10Gi # Storage volume capacity. storageClassName: csi-local-topology # StorageClass is local PV. --- apiVersion: v1 kind: Service metadata: name: statefulset-local # Headless Service name. namespace: default labels: app: statefulset-local spec: selector: app: statefulset-local clusterIP: None ports: - name: statefulset-local targetPort: 80 nodePort: 0 port: 80 protocol: TCP type: ClusterIP
Tabla 1 Parámetros clave Parámetro
Obligatorio
Descripción
storage
Sí
Capacidad solicitada en el PVC, en Gi.
storageClassName
Sí
La clase de almacenamiento de los PV locales es de csi-local-topology.
- Ejecute el siguiente comando para crear una aplicación en la que está montado el PV local:
kubectl apply -f statefulset-local.yaml
Una vez creada la carga de trabajo, puede probar Verificación de la persistencia de datos.
Verificación de la persistencia de datos
- Vea la aplicación y los archivos desplegados.
- Ejecute el siguiente comando para ver el pod creado:
kubectl get pod | grep statefulset-local
Producto esperado:statefulset-local-0 1/1 Running 0 45s statefulset-local-1 1/1 Running 0 28s
- Ejecute el siguiente comando para comprobar si el PV local se ha montado en la ruta /data:
kubectl exec statefulset-local-0 -- df | grep data
Producto esperado:
/dev/mapper/vg--everest--localvolume--persistent-pvc-local 10255636 36888 10202364 0% /data
- Ejecute el siguiente comando para ver los archivos en la ruta /data:
kubectl exec statefulset-local-0 -- ls /data
Producto esperado:
lost+found
- Ejecute el siguiente comando para ver el pod creado:
- Ejecute el siguiente comando para crear un archivo llamado static en la ruta /data:
kubectl exec statefulset-local-0 -- touch /data/static
- Ejecute el siguiente comando para ver los archivos en la ruta /data:
kubectl exec statefulset-local-0 -- ls /data
Producto esperado:
lost+found static
- Ejecute el siguiente comando para eliminar el pod llamado web-local-auto-0:
kubectl delete pod statefulset-local-0
Producto esperado:
pod "statefulset-local-0" deleted
- Después de la eliminación, el controlador de StatefulSet crea automáticamente una réplica con el mismo nombre. Ejecute el siguiente comando para comprobar si se han modificado los archivos de la ruta /data:
kubectl exec statefulset-local-0 -- ls /data
Producto esperado:
lost+found static
Si el archivo static todavía existe, los datos en el PV local pueden almacenarse de forma persistente.
Operaciones relacionadas
Operación |
Descripción |
Procedimiento |
---|---|---|
Consulta de eventos |
Puede ver los nombres de eventos, los tipos de eventos, el número de ocurrencias, los eventos de Kubernetes, la hora de primera ocurrencia y la hora de última ocurrencia del PVC o PV. |
|
Consulta de un archivo YAML |
Puede ver, copiar y descargar los archivos YAML de un PVC o PV. |
|