Pular para o conteúdo principal

Capítulo 3.4 - Ciclo de Vida dos Pods

Objetivos de Aprendizagem​

Ao final deste capítulo, você será capaz de:

  • Compreender as fases de um Pod
  • Identificar os estados de um Pod
  • Entender as condições
  • Gerenciar reinicializações

Fases de um Pod​

Um Pod passa por várias fases durante seu ciclo de vida:


Estados Detalhados​

1. Pending​

O Pod foi aceito pelo Kubernetes, mas os contêineres ainda não foram criados.

Possíveis razões:

  • Imagem sendo baixada
  • Nenhum node disponível
  • Recursos insuficientes

2. Running​

O Pod está vinculado a um node e todos os contêineres foram criados. Pelo menos um contêiner está em execução.

3. Succeeded​

Todos os contêineres do Pod foram finalizados com sucesso e não serão reiniciados.

4. Failed​

Pelo menos um contêiner foi finalizado com falha.

5. Unknown​

O estado do Pod não pode ser obtido (problema de comunicação com o node).


Condições de um Pod​

As condições fornecem mais detalhes sobre o estado:

conditions:
- type: PodScheduled
status: "True"
reason: ""
- type: Initialized
status: "True"
- type: ContainersReady
status: "True"
- type: Ready
status: "True"

Tipos de condições:

  • PodScheduled: O Pod foi atribuído a um node
  • Initialized: Todos os init containers foram finalizados
  • ContainersReady: Todos os contêineres estão prontos
  • Ready: O Pod pode receber tráfego

Restart Policy​

Determina quando reiniciar os contêineres:

spec:
restartPolicy: Always # Sempre reiniciar
# restartPolicy: OnFailure # Reiniciar somente em caso de falha
# restartPolicy: Never # Nunca reiniciar

Init Containers​

Os init containers são executados antes dos contêineres principais:

spec:
initContainers:
- name: init-db
image: busybox
command: ['sh', '-c', 'until nslookup mydb; do sleep 2; done']
containers:
- name: app
image: my-app:1.0

Casos de uso:

  • Esperar uma dependência estar pronta
  • Inicializar o banco de dados
  • Baixar arquivos de configuração

Comandos Úteis​

# Ver o estado de um Pod
kubectl get pod my-pod

# Detalhes completos com condições
kubectl describe pod my-pod

# Ver os eventos
kubectl get events --field-selector involvedObject.name=my-pod

# Logs de um contêiner que falhou
kubectl logs my-pod --previous

Resumo​

Neste capítulo, você aprendeu:

Fases: Pending → Running → Succeeded/Failed
Condições: PodScheduled, Initialized, ContainersReady, Ready
Restart Policy: Always, OnFailure, Never
Init Containers: Executados antes dos contêineres principais
Diagnóstico: kubectl describe, get events, logs --previous


Próximos Passos​

Agora que você entende o ciclo de vida:

Capítulo 3.5: ReplicaSets - Gerenciamento de Replicação
Lab 3.1: Criação e Gerenciamento de Pods


Capítulo criado em: Dezembro 2024