Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Utiliser des disques comme volumes éphémères

Dernière mise à jour :Aug 11, 2026

Si votre application nécessite un stockage disque temporaire — espace de travail, mise en cache ou écriture de journaux à haut débit — montez un volume éphémère sur chaque Pod. Contrairement aux volumes persistants (PV), les volumes éphémères sont liés au cycle de vie du Pod : ils sont créés automatiquement au démarrage du Pod et supprimés lorsque le Pod est retiré. Cette approche élimine le nettoyage manuel et simplifie le déploiement des charges de travail sans état.

Cette rubrique explique comment monter un disque cloud en tant que volume éphémère à l'aide de ephemeral.volumeClaimTemplate, et comment vérifier que le PV et la revendication de volume persistant (PVC) sont automatiquement nettoyés lors de la suppression d'un Pod.

Quand utiliser des volumes éphémères

Les volumes éphémères conviennent parfaitement lorsque votre application a besoin d'un stockage temporaire mais n'exige pas que les données persistent entre les redémarrages :

  • Espace de travail et données intermédiaires : stockez les résultats temporaires des pipelines de traitement de données sans nécessiter de nettoyage manuel.

  • Écriture de journaux à haut débit : utilisez un stockage disque dédié et non partagé par Pod pour éviter la contention des E/S.

  • Mise en cache : conservez les données de cache à courte durée de vie à proximité de l'application sans la surcharge liée à la gestion du stockage persistant.

Les volumes éphémères pris en charge par volumeClaimTemplate diffèrent de emptyDir sur deux points essentiels : ils prennent en charge le stockage connecté au réseau (disques cloud) et vous pouvez spécifier une capacité fixe que le Pod ne peut pas dépasser.

Fonctionnement

Lorsque vous définissez un ephemeral.volumeClaimTemplate dans un Deployment, un Pod ou un StatefulSet, Kubernetes crée une PVC dans le même namespace que le Pod. Le Pod est propriétaire de cette PVC. Lorsque le Pod est supprimé — que ce soit par une réduction d'échelle, une mise à jour progressive ou une suppression manuelle — le garbage collector de Kubernetes supprime la PVC, ce qui déclenche à son tour la suppression du PV sous-jacent et du disque cloud.

Nommage des PVC : Kubernetes nomme automatiquement chaque PVC selon le modèle <pod-name>-<volume-name>. Par exemple, un Pod nommé ephemeral-example-7f795798f9-kbplx avec un volume nommé scratch-volume génère une PVC nommée ephemeral-example-7f795798f9-kbplx-scratch-volume. Étant donné que le nommage est déterministe, vous pouvez localiser une PVC en combinant le nom du Pod et le nom du volume sans avoir à effectuer de recherche.

Deux Pods peuvent produire le même nom de PVC si leurs noms et noms de volume se chevauchent (par exemple, le Pod pod-a avec le volume scratch et le Pod pod avec le volume a-scratch produisent tous deux la PVC pod-a-scratch ). Évitez les conflits de nommage lorsque vous personnalisez les noms des Pods et des volumes.

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

  • Un cluster Container Service for Kubernetes (ACK) exécutant la version 1.22 ou ultérieure

Créer un Deployment et monter un volume éphémère

Un volumeClaimTemplate définit la configuration des PVC. Lorsque vous déployez un Deployment avec deux réplicas, Kubernetes crée deux PVC — une par Pod — à partir du même modèle. Les PVC partagent la même configuration mais ont des noms distincts.

ephemeral.volumeClaimTemplate fonctionne avec les Deployments, les StatefulSets et les Pods. Cette rubrique utilise un Deployment à titre d'exemple.
  1. Enregistrez le contenu suivant sous le nom ephemeral-example.yaml. Ajustez les paramètres dans volumeClaimTemplate en fonction des descriptions du tableau ci-dessous.

    Paramètre Description
    accessModes Le mode d'accès pour le PV. Définissez-le sur ReadWriteOncePod (pour les clusters exécutant la version 1.29 ou ultérieure) afin de garantir qu'un disque est utilisé par un seul Pod à la fois. Pour les versions de cluster antérieures, utilisez ReadWriteOnce.
    storageClassName La StorageClass à utiliser. Cet exemple utilise alicloud-disk-topology-alltype, une StorageClass par défaut d'ACK qui provisionne des disques dans l'ordre suivant : ESSD (SSD entreprise), SSD standard, puis disque ultra. Les disques sont facturés selon le modèle de paiement à l'utilisation. Pour plus d'informations sur les tarifs, consultez la section Facturation d'Elastic Block Storage et Tarification d'Elastic Block Storage.
    storage La capacité du volume éphémère. La StorageClass alicloud-disk-topology-alltype provisionne par défaut un ESSD PL1. La capacité minimale est 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. Créez le Deployment.

    kubectl create -f ephemeral-example.yaml
  3. Vérifiez que les deux Pods sont en cours d'exécution.

    kubectl get pod -l pod=example-pod

    Résultat attendu :

    NAME                                 READY   STATUS    RESTARTS   AGE
    ephemeral-example-7f795798f9-kbplx   1/1     Running   0          38s
    ephemeral-example-7f795798f9-p98lt   1/1     Running   0          38s
  4. Vérifiez que les PVC et leurs disques cloud associés ont été créés automatiquement.

    kubectl get pvc

    Résultat attendu (l'ID du disque apparaît dans le champ 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

Vérifier que les PV et PVC sont supprimés lors de la suppression des Pods

Lorsqu'un Pod est supprimé, le garbage collector de Kubernetes supprime sa PVC, ce qui déclenche la suppression du PV associé et du disque cloud. Les étapes suivantes illustrent ce processus avec une réduction d'échelle.

  1. Réduisez le Deployment à un seul réplica.

    kubectl scale deploy ephemeral-example --replicas=1
  2. Confirmez qu'il ne reste qu'un seul Pod.

    kubectl get pod -l pod=example-pod

    Résultat attendu :

    NAME                                 READY   STATUS    RESTARTS   AGE
    ephemeral-example-7f795798f9-kbplx   1/1     Running   0          5m29s
  3. Confirmez que le PV du Pod supprimé a été retiré.

    kubectl get pv

    Résultat attendu (un seul PV reste, associé au Pod survivant) :

    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. Confirmez que la PVC du Pod supprimé a été retirée.

    kubectl get pvc

    Résultat attendu (une seule PVC reste) :

    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

Étapes suivantes