Todos os produtos
Search
Central de documentação

Container Compute Service:Montar volumes efêmeros

Última atualização: Jun 29, 2026

Monte volumes efêmeros em pods quando a aplicação precisar de espaço de armazenamento adicional, mas não exigir persistência de dados. O sistema provisiona volumes efêmeros na inicialização do pod e os exclui automaticamente ao remover o pod, eliminando a necessidade de gerenciar manualmente as persistent volume claims (PVCs).

Este tópico mostra como adicionar o campo ephemeral.volumeClaimTemplate à especificação de um Deployment para provisionar um volume efêmero baseado em disco para cada pod. Em seguida, você verificará se o sistema exclui automaticamente a PVC e o persistent volume (PV) junto com o pod.

Por que usar volumes efêmeros

Os volumes efêmeros genéricos funcionam de forma semelhante aos volumes emptyDir: seu ciclo de vida está vinculado ao pod e eles são excluídos quando o pod é removido. A principal diferença é que utilizam uma PVC como base, o que oferece todos os recursos de um driver de armazenamento persistente:

  • Capacidade fixa: Defina um limite exato de tamanho por pod para impedir que a aplicação ultrapasse o orçamento de armazenamento.

  • Armazenamento conectado à rede: Utilize um disco em nuvem como base do volume em vez do armazenamento local do nó, que geralmente tem capacidade limitada e é compartilhado entre várias cargas de trabalho.

  • Suporte a StorageClass: Configure o nível de desempenho, o modo de acesso e outras propriedades do disco.

Utilize volumes efêmeros quando a aplicação demandar armazenamento temporário grande demais para o armazenamento local do nó ou quando for necessária uma capacidade garantida por pod. Cenários comuns incluem:

  • Serviços de cache: Aplicações que movem dados pouco acessados da memória para o disco se beneficiam de um volume isolado e com capacidade delimitada por pod.

  • Armazenamento de logs: Aplicações que geram grandes quantidades de dados de log podem gravar em um volume efêmero dedicado, evitando o uso do sistema de arquivos compartilhado do nó.

  • Dados temporários: Jobs de processamento em lote que exigem alto throughput de I/O de disco sem a necessidade de persistir os dados após a conclusão da tarefa.

Como funciona

Quando o Kubernetes cria um pod com um volumeClaimTemplate na especificação de volume ephemeral, o controlador de volumes efêmeros cria uma PVC no mesmo namespace do pod. O nome da PVC segue um padrão determinístico: {pod-name}-{volume-name}. Essa nomenclatura previsível permite localizar a PVC diretamente, desde que você saiba o nome do pod e do volume.

Ao excluir o pod, o coletor de lixo do Kubernetes remove a PVC com base na relação de propriedade do recurso. Como a política de recuperação padrão das StorageClasses é Delete, o sistema também exclui o volume de disco subjacente junto com a PVC.

A nomenclatura da PVC segue o padrão {pod-name}-{volume-name} . Se dois pods no mesmo namespace tiverem nomes que resultem na mesma string combinada (por exemplo, um pod chamado pod-a com um volume chamado scratch e outro pod chamado pod com um volume chamado a-scratch ), ocorrerá um conflito de nomenclatura. Use nomes distintos para os pods dentro de um namespace para evitar esse problema.

Pré-requisitos

Antes de começar, verifique se você possui:

Montar um volume efêmero em um Deployment

  1. Crie um arquivo chamado ephemeral-example.yaml com o seguinte conteúdo:

    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

    Este Deployment cria dois pods, cada um com um volume efêmero dedicado de 40 GiB montado em /scratch. O campo ephemeral.volumeClaimTemplate é compatível com Deployments, StatefulSets e pods independentes. A tabela a seguir descreve os campos dentro de volumeClaimTemplate.spec:

    Campo Descrição
    accessModes Defina como ReadWriteOncePod para garantir que apenas um pod monte o volume por vez.
    storageClassName A StorageClass a ser utilizada. Este exemplo usa alicloud-disk-topology-alltype, a StorageClass padrão do ECS, que provisiona um Enterprise SSD (ESSD) de nível de desempenho 1 (PL1). Um ESSD PL1 suporta de 20 a 65.536 GiB. Os discos são cobrados no modelo de pagamento conforme o uso — consulte Faturamento de dispositivos de armazenamento em bloco e Preços dos dispositivos de armazenamento em bloco.
    storage A capacidade solicitada para o volume efêmero.
  2. Implante o Deployment:

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

    kubectl get pod

    Saída esperada:

    NAME                                 READY   STATUS    RESTARTS   AGE
    ephemeral-example-64db7b9f5c-hcpz5   1/1     Running   0          108s
    ephemeral-example-64db7b9f5c-qqvl5   1/1     Running   0          108s
  4. Confirme a criação de uma PVC para cada pod:

    kubectl get pvc

    Saída esperada:

    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

    Os nomes das PVCs seguem o padrão {pod-name}-scratch-volume. O campo VOLUME exibe o ID do disco em nuvem subjacente.

Verificar se os volumes efêmeros são excluídos com o pod

  1. Reduza o Deployment para uma réplica:

    kubectl scale deploy ephemeral-example --replicas=1
  2. Confirme a exclusão de um pod:

    kubectl get pod

    Saída esperada:

    NAME                                 READY   STATUS    RESTARTS   AGE
    ephemeral-example-64db7b9f5c-qqvl5   1/1     Running   0          11m
  3. Verifique a remoção do PV do pod excluído:

    kubectl get pv

    Saída esperada (apenas o PV do pod restante permanece):

    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. Verifique se o sistema também removeu a PVC do pod excluído:

    kubectl get pvc

    Saída esperada (apenas a PVC do pod restante permanece):

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

    O sistema excluiu a PVC e seu disco subjacente juntamente com o pod. O volume efêmero do pod restante continua vinculado.