Analisando os Logs do Job Kubernetes
Ser capaz de visualizar e analisar os logs de seus jobs Kubernetes é essencial para depurar e entender o comportamento do job. Nesta etapa, exploraremos como acessar e analisar logs dos jobs que criamos.
Obtendo os Nomes dos Pods para Nossos Jobs
Antes de podermos visualizar os logs, precisamos saber os nomes dos pods criados por nossos jobs. Cada job cria um ou mais pods com nomes que incluem o nome do job e um sufixo aleatório.
Vamos listar todos os pods relacionados aos nossos jobs:
kubectl get pods --show-labels
Isso mostrará todos os pods junto com seus labels. Procure por pods com labels como job-name=hello-job ou job-name=long-job.
Alternativamente, você pode filtrar os pods por nome do job:
kubectl get pods -l job-name=hello-job
Isso mostrará apenas os pods que pertencem ao job hello-job.
Visualizando os Logs do Job
Agora que sabemos os nomes dos nossos pods, podemos visualizar os logs de nossos jobs. Use o seguinte comando, substituindo <pod-name> pelo nome real do seu pod:
kubectl logs <pod-name>
Por exemplo, se seu pod se chama hello-job-abcd1, você executaria:
kubectl logs hello-job-abcd1
Você deve ver a saída:
Hello, Kubernetes!
Esta é a mensagem que nosso job foi programado para gerar.
Vamos também verificar os logs do nosso job mais longo. Primeiro, encontre o nome do pod:
kubectl get pods -l job-name=long-job
Em seguida, visualize seus logs:
kubectl logs <long-job-pod-name>
Você deve ver:
Starting long job...
Long job completed!
Visualizando Logs de Jobs Concluídos
Uma das vantagens dos jobs Kubernetes é que você pode visualizar os logs mesmo após a conclusão do job. Isso é muito útil para fins de depuração e auditoria.
Vamos criar um job que falhará, para que possamos ver como depurá-lo:
cd ~/project
nano failed-job.yaml
Copie e cole o seguinte conteúdo YAML:
apiVersion: batch/v1
kind: Job
metadata:
name: failed-job
spec:
template:
spec:
containers:
- name: failed
image: busybox:1.28
command: ["sh", "-c", 'echo "Attempting task..." && exit 1']
restartPolicy: Never
backoffLimit: 2
Este job sempre sairá com o código de status 1, o que indica falha. Salve o arquivo e saia do nano, depois crie o job:
kubectl apply -f failed-job.yaml
Aguarde alguns instantes para que o job tente e falhe algumas vezes (até o limite de backoff). Em seguida, verifique seu status:
kubectl get jobs failed-job
Você deve ver que ele mostra 0/1 conclusões e atingiu o prazo de conclusão.
Agora, vamos examinar o que deu errado, verificando os logs dos pods com falha:
kubectl get pods -l job-name=failed-job
Você verá vários pods, todos no estado Error. Escolha um e visualize seus logs:
kubectl logs <failed-pod-name>
Você deve ver:
Attempting task...
Os logs do pod mostram que a tarefa começou, mas depois saiu com um código de erro. Essa informação é crucial para depurar falhas de job.
Acompanhando Logs em Tempo Real
Se você deseja acompanhar os logs de um job em execução em tempo real, pode usar a flag -f:
kubectl logs -f <pod-name>
Isso é particularmente útil para jobs de execução mais longa, onde você deseja ver a saída conforme ela acontece.
Vamos criar outro job de longa duração para demonstrar:
cd ~/project
nano counter-job.yaml
Copie e cole o seguinte conteúdo YAML:
apiVersion: batch/v1
kind: Job
metadata:
name: counter-job
spec:
template:
spec:
containers:
- name: counter
image: busybox:1.28
command:
[
"sh",
"-c",
'for i in $(seq 1 5); do echo "Count: $i"; sleep 5; done'
]
restartPolicy: Never
Salve o arquivo e saia do nano, depois crie o job:
kubectl apply -f counter-job.yaml
Agora, vamos acompanhar seus logs. Primeiro, encontre o nome do pod:
kubectl get pods -l job-name=counter-job
Em seguida, acompanhe seus logs:
kubectl logs -f <counter-job-pod-name>
Você verá a contagem incrementando a cada 5 segundos:
Count: 1
Count: 2
Count: 3
Count: 4
Count: 5
Pressione Ctrl+C para parar de acompanhar os logs.
Ao entender como acessar e analisar logs, você pode solucionar problemas e depurar seus jobs Kubernetes de forma eficaz.