Skip to content

Kubernetes Logging

Kubernetes captura logs de cada contenedor que existe en un pod en ejecucion, estos logs viene del stdout del contenedor.

Estos logs son efimeros y se pierden si se llega a eliminar el pod, por esto es una buena practica contar con una solucion de logging centralizada para evitar que se pierdan.

Por defecto kubelet hace que estos logs esten disponibles por medio del cliente de kubectl con el comando de kubectl logs.

Laboratorio: Kubernetes Logging

Descripción

Es necesario entender la bases de como se generan y muestran los logs por defecto en un cluster de kubernetes.

Objetivos

  • Observar la forma por defecto de mostrar logs de kubernetes
  • Explorar formas alternativas y mas personalizaciones para los logs.

Antes de comenzar

  • Contar con el acceso al ambiente del laboratorio
  • Haber realizado la guía de Instalación Rancher Kubernetes Engine (RKE)
  • Haber realizado la guía de Acceso a rancher y kubernetes cluster

Inicio de laboratorio

  1. Ingrese al CLI del sistema operativo del servidor usado como Bastion con el usuario y la contraseña proporcionados.

Ingresar al cluster de Kubernetes cluster-users con sus respectivas credenciales

Crear un nuevo namespace llamado example-logging

kubectl create ns example-logging

Establcer el nuevo namespace por defecto en el contexto actual:

kubectl config set-context --current --namespace=example-logging
2. Crear un nuevo archivo llamada default-logging.yaml con el siguiente contenido.
apiVersion: v1
kind: Pod
metadata:
  name: counter
spec:
  containers:
  - name: count
    image: busybox:1.28
    args: [/bin/sh, -c,
            'i=0; while true; do echo "$i: $(date)"; i=$((i+1)); sleep 1; done']
3. Crear un pod utilizando el archivo anterior:
kubectl apply -f default-logging.yaml
4. Verificar el estado del pod con el siguiente comando:
kubectl get pods
5. Este pod realiza la funcion de imprimir la hora cada segundo al standar output. Por ende podriamos verlo por medio de los logs usando el comando
kubectl logs counter
El output es parecido a esto
0: Fri Apr  1 11:42:23 UTC 2022
1: Fri Apr  1 11:42:24 UTC 2022
2: Fri Apr  1 11:42:25 UTC 2022
6. Cabe destacar que si un pod tiene varios contenedores , se puede especificar el contenedor del cual se van a sacar los logs con adjuntando un -c container como se ve a continuacion
kubectl logs counter -c count
Finalmente eliminamos el pod

kubectl delete -f default-logging.yaml