# Configurando um Pod Para Usar um Volume Para Armazenamento

LLMS index: [llms.txt](/llms.txt)

---

<!-- overview -->

Esta página mostra como configurar um Pod para usar um Volume para armazenamento.

O sistema de arquivos de um contêiner apenas existe enquanto o contêiner existir. 
Então, quando um contêiner termina e reinicia, as alterações do sistema de arquivos 
são perdidas. 
Para um armazenamento mais consistente, independente do contêiner, você pode usar um
[Volume](/docs/concepts/storage/volumes/). Isso é especialmente importante para aplicações 
`stateful`, tal como armazenamentos chave-valor (tal como Redis) e bancos de dados. 



## Antes de você começar


<p>Você precisa ter um cluster do Kubernetes e a ferramenta de linha de comando kubectl deve estar configurada para se comunicar com seu cluster. É recomendado executar esse tutorial em um cluster com pelo menos dois nós que não estejam atuando como hosts de camada de gerenciamento. Se você ainda não possui um cluster, pode criar um usando o <a href="/pt-br/docs/tasks/tools/#minikube">minikube</a> ou pode usar um dos seguintes ambientes:</p>
<ul>
<li><a href="https://labs.iximiuz.com/playgrounds?category=kubernetes&filter=all">iximiuz Labs</a></li>
<li><a href="https://killercoda.com/playgrounds/scenario/kubernetes">Killercoda</a></li>
<li><a href="https://kodekloud.com/public-playgrounds">KodeKloud</a></li>
</ul>
 
  <p>Para verificar a versão, digite  <code>kubectl version</code>.</p>




<!-- steps -->

## Configure um volume para um Pod

Neste exercício, você cria um Pod que executa um contêiner. Este Pod tem um
Volume do tipo [emptyDir](/docs/concepts/storage/volumes/#emptydir)
que persiste durante a existência do Pod, mesmo que o contêiner termine e
reinicie. Aqui está o arquivo de configuração para o pod:


















<div class="highlight code-sample">
    <div class="copy-code-icon">
    <a href="https://raw.githubusercontent.com/kubernetes/website/main/content/pt-br/examples/pods/storage/redis.yaml" download="pods/storage/redis.yaml"><code>pods/storage/redis.yaml</code>
    </a><img src="/images/copycode.svg" class="icon-copycode" onclick="copyCode('pods-storage-redis-yaml')" title="Copiar pods/storage/redis.yaml para a área de transferência"></img></div>
    <div class="includecode" id="pods-storage-redis-yaml"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">apiVersion</span><span class="p">:</span><span class="w"> </span><span class="l">v1</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">kind</span><span class="p">:</span><span class="w"> </span><span class="l">Pod</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">metadata</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">redis</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">spec</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">containers</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">redis</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">image</span><span class="p">:</span><span class="w"> </span><span class="l">redis</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">volumeMounts</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">redis-storage</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">mountPath</span><span class="p">:</span><span class="w"> </span><span class="l">/data/redis</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">volumes</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">redis-storage</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">emptyDir</span><span class="p">:</span><span class="w"> </span>{}<span class="w">
</span></span></span></code></pre></div></div>
</div>

1. Crie o Pod:

    ```shell
    kubectl apply -f https://k8s.io/examples/pods/storage/redis.yaml
    ```

1. Verifique se o contêiner do pod está funcionando, e então procure por mudanças no Pod:

    ```shell
    kubectl get pod redis --watch
    ```
    
    A saída se parece com isso:

    ```console
    NAME      READY     STATUS    RESTARTS   AGE
    redis     1/1       Running   0          13s
    ```

1. Em outro terminal, pegue um shell para o contêiner em execução:

    ```shell
    kubectl exec -it redis -- /bin/bash
    ```

1. No seu shell, vá para `/data/redis`, e então crie um arquivo:

    ```shell
    root@redis:/data# cd /data/redis/
    root@redis:/data/redis# echo Hello > test-file
    ```

1. No seu shell, liste os processos em execução:

    ```shell
    root@redis:/data/redis# apt-get update
    root@redis:/data/redis# apt-get install procps
    root@redis:/data/redis# ps aux
    ```

    A saída é semelhante a esta:

    ```console
    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    redis        1  0.1  0.1  33308  3828 ?        Ssl  00:46   0:00 redis-server *:6379
    root        12  0.0  0.0  20228  3020 ?        Ss   00:47   0:00 /bin/bash
    root        15  0.0  0.0  17500  2072 ?        R+   00:48   0:00 ps aux
    ```

1. Em seu shell, encerre o processo do Redis:

    ```shell
    root@redis:/data/redis# kill <pid>
    ```

    Onde `<pid>` é o process ID (PID) do Redis.

1. No seu terminal original, preste atenção nas mudanças no Pod do Redis. 
Eventualmente, você vai ver algo assim:

    ```console
    NAME      READY     STATUS     RESTARTS   AGE
    redis     1/1       Running    0          13s
    redis     0/1       Completed  0         6m
    redis     1/1       Running    1         6m
    ```

Neste ponto, o Contêiner terminou e reiniciou. Isso porque o Pod do Redis tem uma
[`restartPolicy`](/docs/reference/generated/kubernetes-api/v1.36/#podspec-v1-core)
de `Always`.

1. Abra um shell dentro do Contêiner reiniciado:

    ```shell
    kubectl exec -it redis -- /bin/bash
    ```

1. No seu shell, vá para `/data/redis`, e verifique se `test-file` ainda está lá.
    ```shell
    root@redis:/data/redis# cd /data/redis/
    root@redis:/data/redis# ls
    test-file
    ```

1. Exclua o pod que você criou para este exercício:

    ```shell
    kubectl delete pod redis
    ```



## Próximos passos


* Veja [Volume](/docs/reference/generated/kubernetes-api/v1.36/#volume-v1-core).

* Veja [Pod](/docs/reference/generated/kubernetes-api/v1.36/#pod-v1-core).

* Além do armazenamento de disco local fornecido por `emptyDir`, o Kubernetes
suporta muitas soluções de armazenamento diferentes, conectadas via rede, incluindo PD na
GCE e EBS na EC2, que são preferidos para dados críticos e vão lidar com os
detalhes, como montar e desmontar os dispositivos nos Nós. Veja
[Volumes](/docs/concepts/storage/volumes/) para mais detalhes.
