Tous les produits
Search
Centre de documentation

Container Compute Service:Monter des volumes éphémères

Dernière mise à jour :Aug 12, 2026

Montez des volumes éphémères sur vos pods lorsque votre application nécessite un espace de stockage supplémentaire sans exiger la persistance des données. Ces volumes sont provisionnés au démarrage du pod et supprimés automatiquement lors de sa destruction, ce qui vous dispense de gérer manuellement les persistent volume claims (PVC).

Cette rubrique explique comment ajouter le champ ephemeral.volumeClaimTemplate à la spécification d'un Deployment afin de provisionner un volume éphémère sur disque pour chaque pod. Vous vérifierez ensuite que le PVC et le persistent volume (PV) associés sont bien supprimés automatiquement lors de la suppression du pod.

Pourquoi utiliser des volumes éphémères

Les volumes éphémères génériques fonctionnent comme des volumes emptyDir : leur cycle de vie est lié à celui d'un seul pod et ils sont supprimés avec lui. La différence majeure réside dans leur adossement à un PVC, offrant ainsi toutes les capacités d'un pilote de stockage persistant :

  • Capacité fixe : Définissez une limite de taille précise par pod pour empêcher l'application de dépasser son budget de stockage.

  • Stockage réseau : Utilisez un disque cloud plutôt que le stockage local du nœud, souvent limité en capacité et partagé entre plusieurs charges de travail.

  • Prise en charge des StorageClass : Configurez le niveau de performance, le mode d'accès et d'autres propriétés du disque.

Utilisez des volumes éphémères lorsque votre application a besoin d'un stockage temporaire trop volumineux pour le stockage local du nœud, ou lorsqu'une capacité garantie par pod est nécessaire. Voici quelques cas d'usage courants :

  • Services de cache : Les applications qui transfèrent des données peu consultées de la mémoire vers le disque bénéficient d'un volume isolé et borné par pod.

  • Stockage des journaux : Les applications générant d'importants volumes de logs peuvent écrire dans un volume éphémère dédié au lieu d'utiliser le système de fichiers partagé du nœud.

  • Données temporaires : Traitements par lots nécessitant un débit E/S disque élevé sans conservation des données après l'exécution du job.

Fonctionnement

Lorsque Kubernetes crée un pod contenant un volumeClaimTemplate dans sa spécification de volume ephemeral, le contrôleur de volumes éphémères crée un PVC dans le même namespace que le pod. Le nom du PVC suit un modèle déterministe : {pod-name}-{volume-name}. Cette convention de nommage prévisible permet de retrouver directement le PVC sans recherche, à condition de connaître le nom du pod et celui du volume.

À la suppression du pod, le garbage collector de Kubernetes supprime le PVC en se basant sur la relation de propriété des ressources. Étant donné que la politique de récupération par défaut des StorageClasses est Delete, le volume disque sous-jacent est également supprimé avec le PVC.

Le nommage des PVC suit le modèle {pod-name}-{volume-name} . Si deux pods d'un même namespace ont des noms produisant la même chaîne combinée (par exemple, un pod nommé pod-a avec un volume nommé scratch et un pod nommé pod avec un volume nommé a-scratch ), un conflit de nommage survient. Utilisez des noms de pods distincts au sein d'un namespace pour éviter ce problème.

Prérequis

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

Monter un volume éphémère sur un Deployment

  1. Créez un fichier nommé ephemeral-example.yaml avec le contenu suivant :

    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: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest
              resources:
                requests:
                  cpu: 500m
                  memory: 2Gi
                  ephemeral-storage: 2Gi
              volumeMounts:
              - mountPath: "/scratch"
                name: scratch-volume
          volumes:
            - name: scratch-volume
              ephemeral:
                volumeClaimTemplate:
                  metadata:
                    labels:
                      type: scratch-volume
                  spec:
                    accessModes: [ "ReadWriteOncePod" ]
                    storageClassName: alicloud-disk-topology-alltype
                    resources:
                      requests:
                        storage: 40Gi

    Ce Deployment crée deux pods, chacun disposant d'un volume éphémère dédié de 40 Gio monté sur /scratch. Le champ ephemeral.volumeClaimTemplate est pris en charge sur les Deployments, les StatefulSets et les pods autonomes. Le tableau ci-dessous décrit les champs contenus dans volumeClaimTemplate.spec :

    Champ Description
    accessModes Définissez cette valeur sur ReadWriteOncePod afin que le volume soit monté par un seul pod à la fois.
    storageClassName La StorageClass à utiliser. Cet exemple emploie alicloud-disk-topology-alltype, la StorageClass ACS par défaut, qui provisionne un SSD Enterprise (ESSD) de niveau de performance 1 (PL1). Un ESSD PL1 prend en charge des capacités de 20 à 65 536 Gio. Les disques sont facturés selon le mode paiement à l'utilisation — consultez Facturation des périphériques de stockage bloc et Prix des périphériques de stockage bloc.
    storage Capacité demandée pour le volume éphémère.
  2. Déployez le Deployment :

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

    kubectl get pod

    Sortie attendue :

    NAME                                 READY   STATUS    RESTARTS   AGE
    ephemeral-example-64db7b9f5c-hcpz5   1/1     Running   0          108s
    ephemeral-example-64db7b9f5c-qqvl5   1/1     Running   0          108s
  4. Confirmez qu'un PVC a été créé pour chaque pod :

    kubectl get pvc

    Sortie attendue :

    NAME                                                STATUS   VOLUME                   CAPACITY   ACCESS MODES   STORAGECLASS                     AGE
    ephemeral-example-64db7b9f5c-hcpz5-scratch-volume   Bound    d-uf6h6nl0yf2y1331****   40Gi       RWOP           alicloud-disk-topology-alltype   3m28s
    ephemeral-example-64db7b9f5c-qqvl5-scratch-volume   Bound    d-uf6a3lk85znunou6****   40Gi       RWOP           alicloud-disk-topology-alltype   3m28s

    Les noms des PVC suivent le modèle {pod-name}-scratch-volume. Le champ VOLUME affiche l'ID du disque cloud sous-jacent.

Vérifier la suppression des volumes éphémères avec le pod

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

    kubectl scale deploy ephemeral-example --replicas=1
  2. Confirmez la suppression d'un pod :

    kubectl get pod

    Sortie attendue :

    NAME                                 READY   STATUS    RESTARTS   AGE
    ephemeral-example-64db7b9f5c-qqvl5   1/1     Running   0          11m
  3. Vérifiez que le PV du pod supprimé a bien été retiré :

    kubectl get pv

    Sortie attendue (seul le PV du pod restant subsiste) :

    NAME                     CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                                                       STORAGECLASS                     REASON   AGE
    d-uf6a3lk85znunou6****   40Gi       RWOP           Delete           Bound    default/ephemeral-example-64db7b9f5c-qqvl5-scratch-volume   alicloud-disk-topology-alltype            20m
  4. Vérifiez que le PVC du pod supprimé a également disparu :

    kubectl get pvc

    Sortie attendue (seul le PVC du pod restant subsiste) :

    NAME                                                STATUS   VOLUME                   CAPACITY   ACCESS MODES   STORAGECLASS                     AGE
    ephemeral-example-64db7b9f5c-qqvl5-scratch-volume   Bound    d-uf6a3lk85znunou6****   40Gi       RWOP           alicloud-disk-topology-alltype   15m

    Le PVC et son disque sous-jacent ont été supprimés conjointement avec le pod. Le volume éphémère du pod restant demeure lié.