Comando de Logs do Kubernetes

KubernetesBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como usar o comando logs do Kubernetes para visualizar os logs de pods em execução em um cluster Kubernetes. Você começará com exemplos simples e progredirá gradualmente para cenários mais complexos.

Este é um Lab Guiado, que fornece instruções passo a passo para ajudá-lo a aprender e praticar. Siga as instruções cuidadosamente para completar cada etapa e ganhar experiência prática. Dados históricos mostram que este é um laboratório de nível iniciante com uma taxa de conclusão de 95%. Recebeu uma taxa de avaliações positivas de 97% dos estudantes.

Iniciar o Cluster Minikube

Antes de criar recursos, você precisa de um cluster Kubernetes em execução. Minikube é um ambiente Kubernetes leve que roda em sua máquina local.

  1. Navegue para o seu diretório de trabalho:

    Abra o terminal e navegue até a pasta do projeto padrão:

    cd /home/labex/project
  2. Iniciar Minikube:

    Inicie o Minikube para inicializar um cluster Kubernetes:

    minikube start
    • Este comando configura um cluster Kubernetes de nó único em sua máquina local.
    • O Minikube pode levar alguns minutos para iniciar, dependendo do desempenho do seu sistema.
  3. Verifique se o Minikube está em execução:

    Verifique o status do cluster Minikube:

    minikube status
    • Procure por componentes como kubelet e apiserver listados como Running (Em execução).
    • Se o cluster não estiver em execução, execute novamente minikube start.

Se você encontrar problemas ao iniciar o Minikube. Use minikube delete para redefinir o ambiente, se necessário.

Explorar o Comando kubectl logs

O comando kubectl logs é usado para imprimir os logs de um contêiner em um pod ou em um recurso especificado. Ele suporta logs de snapshot, streaming, filtragem e várias outras opções para um gerenciamento de logs eficiente.

Execute o seguinte comando para visualizar as opções disponíveis para kubectl logs:

kubectl logs -h

Você verá a seguinte saída:

Print the logs for a container in a pod or specified resource. If the pod has only one container, the container name is optional.

Examples:
  ## Return snapshot logs from pod nginx with only one container
  kubectl logs nginx

  ## Return snapshot logs from pod nginx with multi containers
  kubectl logs nginx --all-containers=true

  ## Return snapshot logs from all containers in pods defined by label app=nginx
  kubectl logs -l app=nginx --all-containers=true

  ## Return snapshot of previous terminated ruby container logs from pod web-1
  kubectl logs -p -c ruby web-1

  ## Begin streaming the logs of the ruby container in pod web-1
  kubectl logs -f -c ruby web-1

  ## Begin streaming the logs from all containers in pods defined by label app=nginx
  kubectl logs -f -l app=nginx --all-containers=true

  ## Display only the most recent 20 lines of output in pod nginx
  kubectl logs --tail=20 nginx

  ## Show all logs from pod nginx written in the last hour
  kubectl logs --since=1h nginx

  ## Show logs from a kubelet with an expired serving certificate
  kubectl logs --insecure-skip-tls-verify-backend nginx

  ## Return snapshot logs from first container of a job named hello
  kubectl logs job/hello

  ## Return snapshot logs from container nginx-1 of a deployment named nginx
  kubectl logs deployment/nginx -c nginx-1

Visualizando Logs de Contêineres

Nesta etapa, você aprenderá como visualizar os logs de um contêiner em execução em um pod.

  1. Comece criando um deployment com uma réplica e um contêiner Nginx:

    kubectl create deployment nginx --image=nginx --replicas=1
  2. Aguarde até que o pod esteja pronto:

    kubectl wait --for=condition=Ready pod -l app=nginx
  3. Use o comando kubectl logs para visualizar os logs do contêiner Nginx:

    kubectl logs POD_NAME

    Substitua POD_NAME pelo nome do pod criado na etapa 1, e você pode obter o POD_NAME com o comando kubectl get pod -l app=nginx.

Visualizando Logs de um Contêiner Específico em um Pod

Nesta etapa, você aprenderá como visualizar os logs de um contêiner específico em execução em um pod.

  1. Crie um pod com dois contêineres: Nginx e BusyBox:

    cat << EOF | kubectl apply -f -
    apiVersion: v1
    kind: Pod
    metadata:
      name: nginx-busybox
    spec:
      containers:
      - name: nginx
        image: nginx
      - name: busybox
        image: busybox
        command:
          - sleep
          - "3600"
    EOF
  2. Aguarde até que o pod esteja pronto:

    kubectl wait --for=condition=Ready pod nginx-busybox
  3. Use o comando kubectl logs para visualizar os logs do contêiner BusyBox:

    kubectl logs nginx-busybox -c busybox

Acompanhando Logs em Tempo Real

Nesta etapa, você aprenderá como acompanhar logs em tempo real à medida que são gerados.

  1. Use o comando kubectl logs com a opção -f para acompanhar os logs em tempo real:

    kubectl logs -f nginx-busybox
  2. Abra um novo terminal e crie um shell no contêiner Nginx:

    kubectl exec -it nginx-busybox -c nginx -- /bin/sh
  3. Gere alguns logs executando um comando dentro do contêiner:

    curl 127.0.0.1
  4. Volte para o primeiro terminal onde você está acompanhando os logs e observe que a nova entrada de log é exibida.

Visualizando Logs de Múltiplos Contêineres

Nesta etapa, você aprenderá como visualizar logs de múltiplos contêineres em execução em um pod.

  1. Crie um pod com dois contêineres: Nginx e Fluentd:

    cat << EOF | kubectl apply -f -
    apiVersion: v1
    kind: Pod
    metadata:
      name: nginx-fluentd
    spec:
      containers:
      - name: nginx
        image: nginx
      - name: fluentd
        image: fluentd
    EOF
  2. Aguarde até que o pod esteja pronto:

    kubectl wait --for=condition=Ready pod nginx-fluentd
  3. Use o comando kubectl logs para visualizar logs de ambos os contêineres:

    kubectl logs nginx-fluentd -c nginx
    kubectl logs nginx-fluentd -c fluentd

Resumo

Parabéns, você concluiu com sucesso o laboratório de comandos de logs do Kubernetes! Neste laboratório, você aprendeu como visualizar logs de contêineres em execução em um pod usando o comando kubectl logs. Você também aprendeu como visualizar logs de contêineres específicos e múltiplos contêineres, acompanhar logs em tempo real e gerar logs de dentro de um contêiner. Essas habilidades são essenciais para solucionar problemas em um cluster Kubernetes.