0Pricing
DevOps Bootcamp · Aula

Ciclo de vida e estados dos pods

Entenda as várias fases pelas quais um pod passa e como monitorar seu status.

Ciclo de vida e estados dos pods é uma aula grátis de DevOps Bootcamp no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de DevOps Bootcamp, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de DevOps Bootcamp inclui 4 aulas no total.

Pods: uma jornada pela vida

Os pods não são estáticos; eles passam por diferentes etapas, como em uma jornada. Entender esse "ciclo de vida" é fundamental para gerenciar seus aplicativos com eficiência no Kubernetes.

Isso ajuda você a saber se o aplicativo está saudável, iniciando ou se encontrou algum problema.

Ciclo de vida e estados dos pods — ilustração 1

As cinco etapas da vida de um pod

O Kubernetes categoriza os pods em cinco fases principais. Essas fases oferecem uma visão geral do estado atual de um pod:

  • Pending: o pod foi aceito pelo Kubernetes, mas seus contêineres ainda não foram iniciados.
  • Running: pelo menos um contêiner do pod está em execução ou iniciando.
  • Succeeded: todos os contêineres do pod foram concluídos com sucesso e não serão reiniciados.
  • Failed: todos os contêineres foram encerrados e pelo menos um falhou (por exemplo, terminou com um código diferente de zero).
  • Unknown: não foi possível determinar o estado do pod, geralmente devido a problemas de comunicação.

Fase 1: pods pendentes

Um pod está na fase Pending quando foi aceito pelo servidor da API do Kubernetes, mas um ou mais de seus contêineres ainda não foram criados ou configurados.

Os motivos comuns incluem:

  • A imagem do contêiner ainda está sendo baixada.
  • O cluster não tem recursos suficientes (CPU/memória) para agendar o pod.
  • Os volumes ainda estão sendo provisionados ou montados.

Observando um pod pendente

Vamos analisar um exemplo. Se você tentar implantar um pod com uma imagem que não existe, ele poderá ficar preso em 'Pending' ou exibir um erro ao baixar a imagem.

Veja um exemplo de definição de pod:

apiVersion: v1
kind: Pod
metadata:
  name: pending-pod-demo
spec:
  containers:
  - name: my-container
    image: non-existent-image:latest
    ports:
    - containerPort: 80

Para verificar o status, você usaria kubectl get pod. Talvez veja algo parecido com isto:

$ kubectl get pod pending-pod-demo
NAME               READY   STATUS         RESTARTS   AGE
pending-pod-demo   0/1     ErrImagePull   0          5s

ErrImagePull indica que não foi possível obter a imagem, fazendo com que o pod não alcance o estado Running.

Fase 2: pods em execução

A fase Em execução significa que o pod foi associado a um nó e que todos os seus contêineres foram criados com sucesso. Pelo menos um contêiner está em execução ou está iniciando ou reiniciando.

É importante observar que um pod em execução não significa automaticamente que a aplicação dentro dele esteja saudável ou totalmente funcional. Isso apenas significa que os contêineres estão ativos.

Colocando um pod em execução

Veja uma definição padrão de pod para um servidor Web Nginx. Depois de aplicá-la, seu pod deverá entrar rapidamente no estado Running.

apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod
spec:
  containers:
  - name: nginx
    image: nginx:latest
    ports:
    - containerPort: 80

Depois da implantação, o comando kubectl get pod exibiria:

$ kubectl get pod nginx-pod
NAME        READY   STATUS    RESTARTS   AGE
nginx-pod   1/1     Running   0          10s

O valor 1/1 em READY confirma que um contêiner está pronto de um total de um definido.

Fases 3 e 4: concluído e com falha

Estas fases representam os estados de término de um pod:

  • Concluído: um pod entra nesta fase quando todos os contêineres nele terminam com sucesso e não serão reiniciados. Isso é comum em pods que executam tarefas únicas ou trabalhos em lote.
  • Com falha: um pod está na fase Com falha quando todos os contêineres do pod terminaram e pelo menos um contêiner terminou com falha, por exemplo, encerrando com um código de estado diferente de zero.

Compreender essas fases ajuda você a diagnosticar a conclusão de trabalhos ou erros da aplicação.

A misteriosa fase desconhecida

A fase Desconhecido significa que não foi possível determinar o estado do pod. Esta é uma fase rara, mas crítica.

Isso geralmente acontece quando o Kubelet, o agente do nó em que o pod está em execução, para de se comunicar com o servidor da API do Kubernetes. Isso pode ocorrer devido a um problema de rede, a uma falha do Kubelet ou a um problema no próprio nó.

Estados dos contêineres nos pods

Embora os pods tenham fases gerais, os contêineres individuais dentro de um pod também têm seus próprios estados mais detalhados. Esses estados influenciam diretamente a fase geral do pod:

  • Aguardando: o contêiner está aguardando para iniciar. Entre os motivos estão a obtenção da imagem, a alocação de recursos ou a espera pela conclusão dos contêineres de inicialização.
  • Em execução: o contêiner está executando ativamente, sem problemas.
  • Terminado: o contêiner concluiu sua execução. Ele pode ter sido concluído com sucesso ou ter falhado.

Verificação do estado do pod

Imagine que você acabou de implantar um novo pod. Você executa kubectl get pod my-app e vê o seguinte resultado:

NAME      READY   STATUS     RESTARTS   AGE
my-app    0/1     Pending    0          12s

Qual é o motivo mais provável para o pod my-app estar no estado Pending, com 0/1 contêineres prontos?

Resumo do ciclo de vida e próximos passos

Você aprendeu que os pods do Kubernetes avançam por fases distintas: Pending, Running, Succeeded, Failed e Unknown. Essas fases fornecem uma visão geral do estado operacional de um pod.

Também abordamos os estados dos contêineres individuais (Waiting, Running e Terminated), que contribuem para a fase geral do pod. Monitorar esses estados com kubectl get pod e kubectl describe pod, que você explorará mais adiante, é essencial para entender a saúde da sua aplicação.

Em seguida, exploraremos padrões avançados de pods, incluindo como executar vários contêineres no mesmo pod usando o padrão de contêiner auxiliar.

Perguntas Frequentes

A aula “Ciclo de vida e estados dos pods” é grátis?

Sim — o texto completo de “Ciclo de vida e estados dos pods” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de DevOps Bootcamp, atualize para CoddyKit PRO. O curso de DevOps Bootcamp inclui 4 aulas no total.

O que vou aprender em “Ciclo de vida e estados dos pods”?

Entenda as várias fases pelas quais um pod passa e como monitorar seu status. Você pratica DevOps Bootcamp com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar DevOps Bootcamp?

Nenhuma experiência prévia é necessária. DevOps Bootcamp no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “Ciclo de vida e estados dos pods”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de DevOps Bootcamp?

Sim. Cada aula de DevOps Bootcamp inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Pods: a menor unidade
  2. Ciclo de vida e estados dos pods
  3. Pods com vários contêineres (sidecars)
  4. Contêineres de inicialização e ordenação de inicialização
← Voltar para DevOps Bootcamp