Depurando Contêineres de Inicialização
Esta página mostra como investigar problemas relacionados à execução de contêineres de inicialização.
As linhas de comando de exemplo abaixo referem-se ao pod como <pod-name>
e aos contêineres de inicialização como <init-container-1>
e
<init-container-2>
.
Antes de você começar
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 minikube ou pode usar um dos seguintes ambientes:
Para verificar a versão, digitekubectl version
.- Você deve estar familiarizado com os fundamentos de contêineres de inicialização.
- Você deve ter configurado um contêiner de inicialização.
Verificando o status dos contêineres de inicialização
Exiba o status do seu pod:
kubectl get pod <pod-name>
Por exemplo, um status de Init:1/2
indica que uma das duas inicializações de contêineres
concluíram com sucesso:
NAME READY STATUS RESTARTS AGE
<pod-name> 0/1 Init:1/2 0 7s
Consulte Entendendo sobre o status do pod para obter mais exemplos de valores de status e seus significados.
Obtendo detalhes sobre os contêineres de inicialização
Veja informações mais detalhadas sobre a execução de contêineres de inicialização:
kubectl describe pod <pod-name>
Por exemplo, um pod com dois contêineres de inicialização pode mostrar o seguinte:
Init Containers:
<init-container-1>:
Container ID: ...
...
State: Terminated
Reason: Completed
Exit Code: 0
Started: ...
Finished: ...
Ready: True
Restart Count: 0
...
<init-container-2>:
Container ID: ...
...
State: Waiting
Reason: CrashLoopBackOff
Last State: Terminated
Reason: Error
Exit Code: 1
Started: ...
Finished: ...
Ready: False
Restart Count: 3
...
Você também pode acessar programaticamente os status dos contêineres de inicialização,
lendo o campo status.initContainerStatuses
nas especificações do pod:
kubectl get pod nginx --template '{{.status.initContainerStatuses}}'
Este comando retornará as mesmas informações acima em JSON bruto.
Acessando logs de contêineres de inicialização
Passe o nome do contêiner de inicialização junto com o nome do Pod para acessar seus logs.
kubectl logs <pod-name> -c <init-container-2>
Contêineres de inicialização que executam comandos de script de shell imprimem
à medida que são executados. Por exemplo, você pode fazer isso no Bash executando set -x
no início do script.
Entendendo sobre o status do pod
Um status do Pod começando com Init:
resume o status da execução de contêineres de inicialização.
A tabela abaixo descreve alguns valores de status de exemplo que você pode ver durante a depuração de contêineres de inicialização.
Status | Significado |
---|---|
Init:N/M | O pod tem contêineres de inicialização M e N que foram concluídas até agora. |
Init:Error | Um contêiner de inicialização falhou ao executar. |
Init:CrashLoopBackOff | Um contêiner de inicialização falhou repetidamente. |
Pending | O pod ainda não começou a executar o contêiner de inicialização. |
PodInitializing ou Running | O pod já concluiu a execução dos contêineres de inicialização. |