Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Use discos como volumes efêmeros

Última atualização: Jun 27, 2026

Se sua aplicação precisa de armazenamento temporário em disco — seja para área de trabalho, cache ou logs de alto throughput — monte um volume efêmero em cada Pod. Diferentemente dos persistent volumes (PVs), os volumes efêmeros estão vinculados ao ciclo de vida do Pod: são criados automaticamente na inicialização e excluídos quando o Pod é removido. Isso elimina a limpeza manual e simplifica o deployment de cargas de trabalho sem estado.

Este tópico demonstra como montar um disco em nuvem como volume efêmero usando ephemeral.volumeClaimTemplate e como verificar se o PV e a persistent volume claim (PVC) são limpos automaticamente após a exclusão do Pod.

Quando usar volumes efêmeros

Volumes efêmeros são ideais quando a aplicação necessita de armazenamento temporário, mas não exige persistência de dados entre reinicializações:

  • Área de trabalho e dados intermediários: armazene resultados temporários de pipelines de processamento de dados sem precisar de limpeza manual.

  • Logs de alto throughput: utilize armazenamento em disco dedicado e não compartilhado por Pod para evitar contenção de E/S.

  • Cache: mantenha dados de cache de curta duração próximos à aplicação, sem a sobrecarga de gerenciar armazenamento persistente.

Os volumes efêmeros baseados em volumeClaimTemplate diferem do emptyDir em dois aspectos principais: oferecem suporte a armazenamento conectado à rede (discos em nuvem) e permitem especificar uma capacidade fixa que o Pod não pode exceder.

Como funciona

Ao definir um ephemeral.volumeClaimTemplate em um Deployment, Pod ou StatefulSet, o Kubernetes cria uma PVC no mesmo namespace do Pod. O Pod passa a ser proprietário dessa PVC. Quando o Pod é excluído — seja por scale-in, rolling update ou exclusão manual — o coletor de lixo do Kubernetes remove a PVC, o que aciona a exclusão do PV subjacente e do disco em nuvem.

Nomenclatura da PVC: o Kubernetes nomeia cada PVC automaticamente seguindo o padrão <pod-name>-<volume-name>. Por exemplo, um Pod chamado ephemeral-example-7f795798f9-kbplx com um volume chamado scratch-volume gera uma PVC denominada ephemeral-example-7f795798f9-kbplx-scratch-volume. Como a nomenclatura é determinística, localize uma PVC combinando o nome do Pod com o nome do volume, sem necessidade de busca.

Dois Pods podem gerar o mesmo nome de PVC se houver sobreposição em seus nomes e nos nomes dos volumes (por exemplo, o Pod pod-a com o volume scratch e o Pod pod com o volume a-scratch ambos resultam na PVC pod-a-scratch ). Evite conflitos de nomenclatura ao personalizar os nomes de Pods e volumes.

Pré-requisitos

Antes de começar, certifique-se de ter:

  • Um cluster Container Service for Kubernetes (ACK) executando a versão 1.22 ou posterior

Crie um Deployment e monte um volume efêmero

Um volumeClaimTemplate define a configuração das PVCs. Ao implantar um Deployment com duas réplicas, o Kubernetes cria duas PVCs — uma por Pod — a partir do mesmo modelo. As PVCs compartilham a mesma configuração, mas possuem nomes distintos.

O ephemeral.volumeClaimTemplate funciona com Deployments, StatefulSets e Pods. Este tópico usa um Deployment como exemplo.
  1. Salve o conteúdo a seguir como ephemeral-example.yaml. Ajuste os parâmetros em volumeClaimTemplate conforme as descrições na tabela abaixo.

    Parâmetro Descrição
    accessModes Modo de acesso ao PV. Defina como ReadWriteOncePod (para clusters na versão 1.29 ou posterior) para garantir que apenas um Pod utilize o disco por vez. Em versões anteriores do cluster, use ReadWriteOnce.
    storageClassName StorageClass a ser utilizada. Este exemplo emprega alicloud-disk-topology-alltype, uma StorageClass padrão do ACK que provisiona discos na seguinte ordem: ESSD (SSD empresarial), SSD padrão e, por fim, ultra disk. Os discos são faturados no modelo pagamento conforme o uso. Para detalhes de preços, consulte Faturamento do Elastic Block Storage e Preços do Elastic Block Storage.
    storage Capacidade do volume efêmero. A StorageClass alicloud-disk-topology-alltype provisiona um ESSD PL1 por padrão. A capacidade mínima é 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. Crie o Deployment.

    kubectl create -f ephemeral-example.yaml
  3. Verifique se ambos os Pods estão em execução.

    kubectl get pod -l pod=example-pod

    Saída 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. Confirme que as PVCs e seus discos em nuvem vinculados foram criados automaticamente.

    kubectl get pvc

    Saída esperada (o ID do disco aparece no 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

Verifique se PVs e PVCs são excluídos ao remover Pods

Quando um Pod é excluído, o Kubernetes coleta sua PVC como lixo, acionando a remoção do PV vinculado e do disco em nuvem. Os passos a seguir demonstram esse comportamento durante um scale-in.

  1. Reduza o Deployment para uma réplica.

    kubectl scale deploy ephemeral-example --replicas=1
  2. Confirme que resta apenas um Pod.

    kubectl get pod -l pod=example-pod

    Saída esperada:

    NAME                                 READY   STATUS    RESTARTS   AGE
    ephemeral-example-7f795798f9-kbplx   1/1     Running   0          5m29s
  3. Valide que o PV do Pod excluído foi removido.

    kubectl get pv

    Saída esperada (apenas um PV permanece, vinculado ao Pod sobrevivente):

    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. Certifique-se de que a PVC do Pod excluído também foi removida.

    kubectl get pvc

    Saída esperada (apenas uma PVC permanece):

    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

Próximos passos