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.
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.
Navegue para o seu diretório de trabalho:
Abra o terminal e navegue até a pasta do projeto padrão:
cd /home/labex/projectIniciar 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.
Verifique se o Minikube está em execução:
Verifique o status do cluster Minikube:
minikube status- Procure por componentes como
kubeleteapiserverlistados comoRunning(Em execução). - Se o cluster não estiver em execução, execute novamente
minikube start.
- Procure por componentes como
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.
Comece criando um deployment com uma réplica e um contêiner Nginx:
kubectl create deployment nginx --image=nginx --replicas=1Aguarde até que o pod esteja pronto:
kubectl wait --for=condition=Ready pod -l app=nginxUse o comando
kubectl logspara visualizar os logs do contêiner Nginx:kubectl logs POD_NAMESubstitua
POD_NAMEpelo nome do pod criado na etapa 1, e você pode obter oPOD_NAMEcom o comandokubectl 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.
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" EOFAguarde até que o pod esteja pronto:
kubectl wait --for=condition=Ready pod nginx-busyboxUse o comando
kubectl logspara 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.
Use o comando
kubectl logscom a opção-fpara acompanhar os logs em tempo real:kubectl logs -f nginx-busyboxAbra um novo terminal e crie um shell no contêiner Nginx:
kubectl exec -it nginx-busybox -c nginx -- /bin/shGere alguns logs executando um comando dentro do contêiner:
curl 127.0.0.1Volte 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.
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 EOFAguarde até que o pod esteja pronto:
kubectl wait --for=condition=Ready pod nginx-fluentdUse o comando
kubectl logspara 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.


