0Pricing
DevOps Bootcamp · Aula

Contêineres de inicialização e ordenação de inicialização

Aprenda como os contêineres de inicialização executam tarefas de preparação antes que os contêineres principais da aplicação sejam iniciados e como impõem a ordem dentro de um Pod.

Contêineres de inicialização e ordenação de inicialização é uma aula grátis de DevOps Bootcamp no CoddyKit. Esta é a aula 4 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.

O que são contêineres de inicialização?

Um contêiner de inicialização é um contêiner especial executado até a conclusão antes que os contêineres principais do aplicativo em um pod sejam iniciados. Os pods podem ter um ou mais deles.

Eles são perfeitos para tarefas de configuração executadas uma única vez: aguardar uma dependência, clonar uma configuração ou executar uma migração de banco de dados.

Como eles diferem dos contêineres do aplicativo

Os contêineres de inicialização sempre são executados até a conclusão e precisam ser bem-sucedidos antes que o próximo seja iniciado. Já os contêineres do aplicativo são executados continuamente.

  • Os contêineres de inicialização são executados sequencialmente, um de cada vez
  • Os contêineres do aplicativo são executados em paralelo
  • Se um contêiner de inicialização falhar, o pod o reiniciará (de acordo com restartPolicy)

Uma especificação básica de contêiner de inicialização

Os contêineres de inicialização ficam em spec.initContainers, no mesmo nível de spec.containers.

apiVersion: v1
kind: Pod
metadata:
  name: app-with-init
spec:
  initContainers:
  - name: wait-for-db
    image: busybox:1.36
    command: ['sh', '-c', 'echo waiting; sleep 5']
  containers:
  - name: app
    image: nginx:1.27

Por que a ordem é importante

O Kubernetes garante a ordem: todos os contêineres de inicialização são concluídos com sucesso antes mesmo de os contêineres principais começarem.

Isso permite expressar dependências de maneira declarativa, em vez de incorporar laços de novas tentativas à imagem do aplicativo.

Aguardando um serviço

Um padrão comum é bloquear a inicialização até que um serviço dependente responda.

initContainers:
- name: wait-for-api
  image: busybox:1.36
  command:
  - sh
  - -c
  - 'until nslookup api-service; do echo waiting; sleep 2; done'

Vários contêineres de inicialização

Você pode encadear vários contêineres de inicialização. Eles são executados na ordem listada, cada um sendo concluído completamente antes do início do próximo.

initContainers:
- name: step-1-fetch-config
  image: busybox:1.36
  command: ['sh', '-c', 'echo fetching config']
- name: step-2-migrate
  image: busybox:1.36
  command: ['sh', '-c', 'echo running migration']

Compartilhando dados com emptyDir

Os contêineres de inicialização geralmente preparam arquivos para o contêiner do aplicativo usando um volume compartilhado emptyDir.

volumes:
- name: shared
  emptyDir: {}
initContainers:
- name: setup
  image: busybox:1.36
  command: ['sh', '-c', 'echo hello > /work/index.html']
  volumeMounts:
  - name: shared
    mountPath: /work

Inspecionando o status da inicialização

Enquanto os contêineres de inicialização são executados, o pod exibe um status como Init:0/2. Use kubectl para acompanhar o progresso.

kubectl get pod app-with-init
kubectl logs app-with-init -c wait-for-db
kubectl describe pod app-with-init

Regras de uso de recursos

Como os contêineres de inicialização são executados sequencialmente, o Kubernetes usa a maior solicitação ou limite de recursos entre eles (não a soma) ao agendar o pod e depois compara esse valor com as necessidades dos contêineres do aplicativo.

Casos de uso comuns

  • Aguardar que um banco de dados ou uma API externa esteja acessível
  • Executar migrações de esquema antes de o aplicativo iniciar
  • Gerar ou baixar arquivos de configuração
  • Definir permissões de arquivos em um volume montado
  • Registrar o pod em um registro de serviços

Comportamento em caso de falha

Se um contêiner de inicialização falhar e a restartPolicy do pod for Always ou OnFailure, o Kubernetes continuará tentando executá-lo até que tenha sucesso. Os contêineres principais não serão iniciados antes disso.

Verificação rápida

Teste sua compreensão da ordem dos contêineres de inicialização.

Recapitulação

Você aprendeu que os contêineres de inicialização são executados sequencialmente até a conclusão antes de os contêineres do aplicativo iniciarem. Eles impõem a ordem de inicialização, preparam dados compartilhados por meio de volumes e lidam com configurações executadas uma única vez, como migrações ou verificações de dependências.

Em seguida, você pode combinar contêineres de inicialização com contêineres auxiliares para criar padrões de inicialização de pods mais avançados.

Perguntas Frequentes

A aula “Contêineres de inicialização e ordenação de inicialização” é grátis?

Sim — o texto completo de “Contêineres de inicialização e ordenação de inicialização” é 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 “Contêineres de inicialização e ordenação de inicialização”?

Aprenda como os contêineres de inicialização executam tarefas de preparação antes que os contêineres principais da aplicação sejam iniciados e como impõem a ordem dentro de um Pod. 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 4 de 4.

Quanto tempo leva a aula “Contêineres de inicialização e ordenação de inicialização”?

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