Como visualizar registros de pod do Kubernetes com Kubectl

Exibir logs de pod é geralmente a primeira etapa para diagnosticar um problema com as cargas de trabalho do seu cluster. Veja como usar o Kubectl para transmitir logs ao vivo para o seu terminal, permitindo que você inspecione a saída do seu aplicativo.
Primeiros passos
Certifique-se de ter o Kubectl instalado e conectado ao seu cluster. Você pode especificar um arquivo Kubeconfig definindo a variável de ambiente KUBECONFIG em seu shell:
exportar KUBECONFIG = ~ / . kube / my-cluster. yaml
Em seguida, use o Kubectl para listar seus pods:
kubectl get pods
Lembre-se de adicionar a sinalização --namespace quando seus pods estiverem fora do namespace padrão:
kubectl --namespace my-namespace get pods
Adicionar um alias temporário ao seu shell é uma boa maneira de encurtar esta etapa, ajudando você a executar vários comandos no mesmo namespace:
alias k = "kubectl --namespace my-namespace" k get pods
Acessando logs de pod
O comando kubectl logs permite inspecionar os registros produzidos por um pod nomeado:
nome do pod de registros do kubectl
Publicidade
Os logs existentes do Pod serão emitidos para o seu terminal. Quando o Pod &’ é formado a partir de mais de um contêiner, você também deve especificar o nome do contêiner que deseja inspecionar:
kubectl registra nome do pod nome do contêiner

Como alternativa, defina o sinalizador --all-containers para incluir as linhas de registro produzidas por qualquer um dos containers no Pod. Esteja ciente de que você pode ver uma saída detalhada e repetitiva quando este sinalizador é usado em um pod ocupado:
kubectl logs nome-do-pod - todos os contêineres
Você também pode obter os registros de um conjunto de pods com um determinado rótulo. Isso permite agregar registros de pods diferentes, desde que todos compartilhem o mesmo rótulo:
kubectl logs -l my-label = my-value --all-containers
Streaming contínuo de registros
O comando plain logs emite os logs do pod atualmente armazenados e, em seguida, sai. Adicione a sinalização -f (--follow) ao comando para seguir os logs e transmiti-los ao vivo para o seu terminal.
O Kubectl irá emitir cada nova linha de log em seu terminal até que você pare o comando com Ctrl + C. Isso é equivalente a usar tail -f com um arquivo de log local em um ambiente sem contêineres.
Visualizando registros mais antigos
Os logs do kubectl não incluem linhas de log produzidas por contêineres antigos que já foram membros do pod, mas que foram substituídos. Esses registros podem ser acessados adicionando-se o sinalizador -p (--previous).
Publicidade
O Kubectl mostrará todo o log armazenado para o pod, incluindo as linhas que foram emitidas por contêineres que já foram encerrados.
Obtendo registros recentes
Às vezes, você não precisa ver todo o fluxo de registro. Kubectl suporta um sinalizador --since que mostra as linhas de registro emitidas após um determinado tempo:
kubectl registra nome do pod --since = 2h
Este comando mostrará a saída do log do nome do pod que foi produzido nas últimas duas horas. Outra variante, --since-time, oferece suporte a uma string de carimbo de data / hora compatível com RFC3339 em vez da expressão de tempo relativa mostrada acima.
O sinalizador --tail é outra opção para condensar registros. Isso limita o número de linhas que são exibidas, evitando um terminal cheio quando você só precisa ver uma saída muito recente:
# Mostra as últimas 10 linhas do log kubectl logs pod-name --tail = 10
O Kubectl não mostra carimbos de data / hora de linha por padrão, pois muitos aplicativos já os incluem em sua saída de log. Adicione a sinalização --timestamps para que o Kubectl adicione carimbos de data / hora ao início das linhas quando sua carga de trabalho não os fornecer.

Você pode preceder os nomes de pod e container inspecionados para registrar linhas também. Esta funcionalidade é ativada com o sinalizador --prefix. Pode ser combinado com --timestamps para exibir a hora em que cada linha foi criada e a fonte de onde se originou.
Acessando registros de outros tipos de recursos
kubectl logs funciona com implantação e recursos de trabalho, além de pods:
kubectl logs job / my-job kubectl logs deployment / my-deployment
Publicidade
Você obterá os registros do primeiro contêiner no trabalho ou implantação. Use o sinalizador --all-containers para exibir os logs criados por qualquer um dos containers correspondentes. Você pode usar todos os sinalizadores descritos acima, esteja exibindo um pod, implantação ou trabalho.
Gerenciamento de registro mais avançado
O Kubectl não inclui uma maneira de filtrar, pesquisar ou transformar seus registros. É melhor canalizar a saída dos logs do kubectl para ferramentas de terminal estabelecidas, como awk, grep ou sed para esse propósito.
kubectl registra meu pod | grep search-expression
Da mesma forma, use os recursos de redirecionamento existentes em seu shell para salvar os registros em um arquivo:
kubectl registra my-pod > my-pod-logs. txt
Resumo
O Kubectl permite que você acesse os registros de seus recursos por contêiner ou de forma agregada. Você pode ver um instantâneo dos registros coletados atualmente, transmitir continuamente novas linhas para o seu terminal e acessar linhas históricas emitidas por contêineres encerrados.
O comando vem com algumas opções de personalização limitadas, incluindo um limitador de contagem de linha e filtragem de data simplista. Quando uma análise mais exigente for necessária, canalize a saída para comandos de terminal Unix para analisar rapidamente seus registros e encontrar as causas dos erros em seus aplicativos.
Publicidade
O Kubectl coleta logs da saída padrão e fluxos de erro de seus contêineres. É importante garantir que você grave a saída nesses fluxos corretamente, pois um contêiner mal configurado resultará em uma saída vazia quando você executar os logs do kubectl.
Nenhum comentário