Comando de registros (logs) de Kubernetes

KubernetesKubernetesBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderás cómo utilizar el comando logs de Kubernetes para ver los registros (logs) de los pods que se ejecutan en un clúster de Kubernetes. Comenzarás con ejemplos simples y progresarás gradualmente hacia escenarios más complejos.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL kubernetes(("Kubernetes")) -.-> kubernetes/TroubleshootingandDebuggingCommandsGroup(["Troubleshooting and Debugging Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/BasicCommandsGroup(["Basic Commands"]) kubernetes/BasicCommandsGroup -.-> kubernetes/get("Get") kubernetes/BasicCommandsGroup -.-> kubernetes/delete("Delete") kubernetes/TroubleshootingandDebuggingCommandsGroup -.-> kubernetes/describe("Describe") kubernetes/TroubleshootingandDebuggingCommandsGroup -.-> kubernetes/exec("Exec") kubernetes/TroubleshootingandDebuggingCommandsGroup -.-> kubernetes/logs("Logs") subgraph Lab Skills kubernetes/get -.-> lab-8099{{"Comando de registros (logs) de Kubernetes"}} kubernetes/delete -.-> lab-8099{{"Comando de registros (logs) de Kubernetes"}} kubernetes/describe -.-> lab-8099{{"Comando de registros (logs) de Kubernetes"}} kubernetes/exec -.-> lab-8099{{"Comando de registros (logs) de Kubernetes"}} kubernetes/logs -.-> lab-8099{{"Comando de registros (logs) de Kubernetes"}} end

Iniciar el clúster de Minikube

Antes de crear recursos, necesitas un clúster de Kubernetes en ejecución. Minikube es un entorno ligero de Kubernetes que se ejecuta en tu máquina local.

  1. Navegar a tu directorio de trabajo:

    Abre la terminal y navega hasta la carpeta de proyecto predeterminada:

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

    Inicia Minikube para inicializar un clúster de Kubernetes:

    minikube start
    • Este comando configura un clúster de Kubernetes de un solo nodo en tu máquina local.
    • Minikube puede tardar unos minutos en iniciarse dependiendo del rendimiento de tu sistema.
  3. Verificar que Minikube esté en ejecución:

    Comprueba el estado del clúster de Minikube:

    minikube status
    • Busca componentes como kubelet y apiserver listados como Running (En ejecución).
    • Si el clúster no está en ejecución, vuelve a ejecutar minikube start.

Si encuentras problemas al iniciar Minikube, utiliza minikube delete para restablecer el entorno si es necesario.

Explorar el comando kubectl logs

El comando kubectl logs se utiliza para imprimir los registros (logs) de un contenedor en un pod o de un recurso especificado. Admite registros instantáneos (snapshot logs), transmisión (streaming), filtrado y varias otras opciones para una gestión eficiente de los registros.

Ejecuta el siguiente comando para ver las opciones disponibles para kubectl logs:

kubectl logs -h

Verás la siguiente salida:

Imprime los registros de un contenedor en un pod o de un recurso especificado. Si el pod tiene solo un contenedor, el nombre del contenedor es opcional.

Ejemplos:
  ## Devuelve los registros instantáneos del pod nginx con un solo contenedor
  kubectl logs nginx

  ## Devuelve los registros instantáneos del pod nginx con múltiples contenedores
  kubectl logs nginx --all-containers=true

  ## Devuelve los registros instantáneos de todos los contenedores en los pods definidos por la etiqueta app=nginx
  kubectl logs -l app=nginx --all-containers=true

  ## Devuelve una instantánea de los registros del contenedor ruby previamente terminado del pod web-1
  kubectl logs -p -c ruby web-1

  ## Comienza a transmitir en tiempo real los registros del contenedor ruby del pod web-1
  kubectl logs -f -c ruby web-1

  ## Comienza a transmitir en tiempo real los registros de todos los contenedores en los pods definidos por la etiqueta app=nginx
  kubectl logs -f -l app=nginx --all-containers=true

  ## Muestra solo las últimas 20 líneas de salida del pod nginx
  kubectl logs --tail=20 nginx

  ## Muestra todos los registros del pod nginx escritos en la última hora
  kubectl logs --since=1h nginx

  ## Muestra los registros de un kubelet con un certificado de servicio expirado
  kubectl logs --insecure-skip-tls-verify-backend nginx

  ## Devuelve los registros instantáneos del primer contenedor de un trabajo llamado hello
  kubectl logs job/hello

  ## Devuelve los registros instantáneos del contenedor nginx-1 de un despliegue llamado nginx
  kubectl logs deployment/nginx -c nginx-1

Ver los registros (logs) de un contenedor

En este paso, aprenderás cómo ver los registros de un contenedor que se está ejecutando en un pod.

  1. Comienza creando un despliegue (deployment) con una réplica y un contenedor Nginx:

    kubectl create deployment nginx --image=nginx --replicas=1
  2. Espera a que el pod esté listo:

    kubectl wait --for=condition=Ready pod -l app=nginx
  3. Utiliza el comando kubectl logs para ver los registros del contenedor Nginx:

    kubectl logs POD_NAME

Reemplaza POD_NAME con el nombre del pod creado en el paso 1, y puedes obtener el POD_NAME con el comando kubectl get pod -l app=nginx.

Ver los registros de un contenedor específico en un pod

En este paso, aprenderás cómo ver los registros de un contenedor específico que se está ejecutando en un pod.

  1. Crea un pod con dos contenedores: Nginx y 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. Espera a que el pod esté listo:

    kubectl wait --for=condition=Ready pod nginx-busybox
  3. Utiliza el comando kubectl logs para ver los registros del contenedor BusyBox:

    kubectl logs nginx-busybox -c busybox

Seguir los registros (logs) en tiempo real

En este paso, aprenderás cómo seguir los registros en tiempo real a medida que se generan.

  1. Utiliza el comando kubectl logs con la opción -f para seguir los registros en tiempo real:

    kubectl logs -f nginx-busybox
  2. Abre una nueva terminal y crea una shell en el contenedor Nginx:

    kubectl exec -it nginx-busybox -c nginx -- /bin/sh
  3. Genera algunos registros ejecutando un comando dentro del contenedor:

    curl 127.0.0.1
  4. Vuelve a la primera terminal donde estás siguiendo los registros y observa que se muestra la nueva entrada de registro.

Ver los registros de múltiples contenedores

En este paso, aprenderás cómo ver los registros de múltiples contenedores que se están ejecutando en un pod.

  1. Crea un pod con dos contenedores: Nginx y 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. Espera a que el pod esté listo:

    kubectl wait --for=condition=Ready pod nginx-fluentd
  3. Utiliza el comando kubectl logs para ver los registros de ambos contenedores:

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

Resumen

¡Felicidades, has completado con éxito el laboratorio (lab) de comandos de registros (logs) de Kubernetes! En este laboratorio, has aprendido cómo ver los registros de los contenedores que se ejecutan en un pod utilizando el comando kubectl logs. También has aprendido cómo ver los registros de contenedores específicos y múltiples contenedores, seguir los registros en tiempo real y generar registros desde dentro de un contenedor. Estas habilidades son esenciales para solucionar problemas en un clúster de Kubernetes.