Todos los productos
Search
Centro de documentos

Container Service for Kubernetes:Uso de discos como volúmenes efímeros

Última actualización: Sep 04, 2026

Si su aplicación requiere almacenamiento temporal en disco (espacio de trabajo, caché o registros de alto rendimiento), puede montar un volumen efímero en cada Pod. A diferencia de los volúmenes persistentes (PV), los volúmenes efímeros están vinculados al ciclo de vida del Pod: se crean automáticamente cuando este inicia y se eliminan cuando se quita el Pod. Esto evita la limpieza manual y simplifica el despliegue de cargas de trabajo sin estado.

Este tema explica cómo montar un disco en la nube como volumen efímero mediante ephemeral.volumeClaimTemplate, y cómo comprobar que el PV y la solicitud de volumen persistente (PVC) se limpian automáticamente al eliminar un Pod.

Cuándo usar volúmenes efímeros

Los volúmenes efímeros son adecuados cuando la aplicación necesita almacenamiento temporal, pero no requiere que los datos persistan entre reinicios:

  • Espacio de trabajo y datos intermedios: almacene resultados temporales de canalizaciones de procesamiento de datos sin necesidad de limpieza manual.

  • Registros de alto rendimiento: utilice almacenamiento en disco dedicado y no compartido por Pod para evitar contención de E/S.

  • Caché: mantenga datos de caché de corta duración cerca de la aplicación sin la sobrecarga de gestionar almacenamiento persistente.

Los volúmenes efímeros respaldados por volumeClaimTemplate difieren de emptyDir en dos aspectos clave: admiten almacenamiento conectado a la red (discos en la nube) y permiten especificar una capacidad fija que el Pod no puede exceder.

Funcionamiento

Al definir un ephemeral.volumeClaimTemplate en un Deployment, Pod o StatefulSet, Kubernetes crea una PVC en el mismo namespace que el Pod. El Pod es propietario de dicha PVC. Cuando se elimina el Pod (ya sea por reducción de escala, actualización continua o eliminación manual), el recolector de basura de Kubernetes borra la PVC, lo que a su vez desencadena la eliminación del PV subyacente y del disco en la nube.

Nomenclatura de PVC: Kubernetes asigna nombre a cada PVC automáticamente con el patrón <pod-name>-<volume-name>. Por ejemplo, un Pod llamado ephemeral-example-7f795798f9-kbplx con un volumen denominado scratch-volume genera una PVC con el nombre ephemeral-example-7f795798f9-kbplx-scratch-volume. Dado que la nomenclatura es determinista, puede localizar una PVC combinando el nombre del Pod y el del volumen sin necesidad de buscar.

Dos Pods pueden generar el mismo nombre de PVC si sus nombres y los de sus volúmenes se superponen (por ejemplo, el Pod pod-a con el volumen scratch y el Pod pod con el volumen a-scratch producen ambos la PVC pod-a-scratch ). Evite conflictos de nombres al personalizar los nombres de Pods y volúmenes.

Requisitos previos

Antes de empezar, asegúrese de contar con:

  • Un clúster de Container Service for Kubernetes (ACK) que ejecute la versión 1.22 o posterior

Creación de un Deployment y montaje de un volumen efímero

Un volumeClaimTemplate define la configuración de las PVC. Al desplegar un Deployment con dos réplicas, Kubernetes crea dos PVC (una por Pod) a partir de la misma plantilla. Las PVC comparten la misma configuración, pero tienen nombres distintos.

ephemeral.volumeClaimTemplate funciona con Deployments, StatefulSets y Pods. Este tema utiliza un Deployment como ejemplo.
  1. Guarde el siguiente contenido como ephemeral-example.yaml. Ajuste los parámetros en volumeClaimTemplate según las descripciones de la tabla siguiente.

    Parámetro Descripción
    accessModes Modo de acceso del PV. Establezca ReadWriteOncePod (para clústeres con versión 1.29 o posterior) para garantizar que un disco sea utilizado por un solo Pod a la vez. Para versiones anteriores del clúster, use ReadWriteOnce.
    storageClassName StorageClass que se utilizará. Este ejemplo usa alicloud-disk-topology-alltype, una StorageClass predeterminada de ACK que aprovisiona discos en el siguiente orden: ESSD (SSD empresarial), SSD estándar y luego ultra disk. Los discos se facturan bajo el modelo pay-as-you-go. Para detalles de precios, consulte Elastic Block Storage billing y Elastic Block Storage pricing.
    storage Capacidad del volumen efímero. La StorageClass alicloud-disk-topology-alltype aprovisiona un ESSD PL1 de forma predeterminada. La capacidad mínima es de 20 GiB.
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: ephemeral-example
    spec:
      replicas: 2
      selector:
        matchLabels:
          pod: example-pod
      strategy:
        type: Recreate
      template:
        metadata:
          labels:
            pod: example-pod
        spec:
          containers:
            - name: nginx
              image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
              resources:
                requests:
                  cpu: 500m
                  memory: 2Gi
                  ephemeral-storage: 2Gi
              volumeMounts:
              - mountPath: "/scratch"
                name: scratch-volume
          volumes:
            - name: scratch-volume
              ephemeral:      # Declare the current storage as ephemeral storage
                volumeClaimTemplate:
                  spec:
                    accessModes: [ "ReadWriteOncePod" ]
                    storageClassName: alicloud-disk-topology-alltype
                    resources:
                      requests:
                        storage: 30Gi
  2. Cree el Deployment.

    kubectl create -f ephemeral-example.yaml
  3. Compruebe que ambos Pods estén en ejecución.

    kubectl get pod -l pod=example-pod

    Salida esperada:

    NAME                                 READY   STATUS    RESTARTS   AGE
    ephemeral-example-7f795798f9-kbplx   1/1     Running   0          38s
    ephemeral-example-7f795798f9-p98lt   1/1     Running   0          38s
  4. Verifique que las PVC y sus discos en la nube vinculados se hayan creado automáticamente.

    kubectl get pvc

    Salida esperada (el ID del disco aparece en el campo VOLUME):

    NAME                                                STATUS   VOLUME                   CAPACITY   ACCESS MODES   STORAGECLASS                     VOLUMEATTRIBUTESCLASS   AGE
    ephemeral-example-7f795798f9-kbplx-scratch-volume   Bound    d-uf61678cuo33eunn****   30Gi       RWOP           alicloud-disk-topology-alltype   <unset>                 74s
    ephemeral-example-7f795798f9-p98lt-scratch-volume   Bound    d-uf6dwkdcowyf2fj6****   30Gi       RWOP           alicloud-disk-topology-alltype   <unset>                 74s

Verificación de la eliminación de PV y PVC al quitar Pods

Cuando se elimina un Pod, Kubernetes recolecta su PVC como basura, lo que desencadena la eliminación del PV vinculado y del disco en la nube. Los siguientes pasos demuestran este comportamiento mediante una reducción de escala.

  1. Reduzca la escala del Deployment a una réplica.

    kubectl scale deploy ephemeral-example --replicas=1
  2. Confirme que solo queda un Pod.

    kubectl get pod -l pod=example-pod

    Salida esperada:

    NAME                                 READY   STATUS    RESTARTS   AGE
    ephemeral-example-7f795798f9-kbplx   1/1     Running   0          5m29s
  3. Confirme que se eliminó el PV correspondiente al Pod borrado.

    kubectl get pv

    Salida esperada (solo permanece un PV, vinculado al Pod restante):

    NAME                     CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                                                       STORAGECLASS                     VOLUMEATTRIBUTESCLASS   REASON   AGE
    d-uf61678cuo33eunn****   30Gi       RWOP           Delete           Bound    default/ephemeral-example-7f795798f9-kbplx-scratch-volume   alicloud-disk-topology-alltype   <unset>                          5m52s
  4. Confirme que se eliminó la PVC correspondiente al Pod borrado.

    kubectl get pvc

    Salida esperada (solo permanece una PVC):

    NAME                                                STATUS   VOLUME                   CAPACITY   ACCESS MODES   STORAGECLASS                     VOLUMEATTRIBUTESCLASS   AGE
    ephemeral-example-7f795798f9-kbplx-scratch-volume   Bound    d-uf61678cuo33eunn****   30Gi       RWOP           alicloud-disk-topology-alltype   <unset>                 7m11s

Pasos siguientes

  • Para monitorear el consumo de almacenamiento efímero por Pod, consulte Ephemeral storage monitoring.

  • Para usar discos en la nube como almacenamiento persistente que sobreviva a la eliminación de Pods, consulte Disk volumes.