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.
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.
Navegar a tu directorio de trabajo:
Abre la terminal y navega hasta la carpeta de proyecto predeterminada:
cd /home/labex/projectIniciar 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.
Verificar que Minikube esté en ejecución:
Comprueba el estado del clúster de Minikube:
minikube status- Busca componentes como
kubeletyapiserverlistados comoRunning(En ejecución). - Si el clúster no está en ejecución, vuelve a ejecutar
minikube start.
- Busca componentes como
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
Visualización de registros (logs) de contenedores
En este paso, aprenderás cómo ver los registros de un contenedor que se está ejecutando en un pod.
Comienza creando un despliegue (deployment) con una réplica y un contenedor Nginx:
kubectl create deployment nginx --image=nginx --replicas=1Espera a que el pod esté listo:
kubectl wait --for=condition=Ready pod -l app=nginxUtiliza el comando
kubectl logspara 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.
Visualización de registros (logs) 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.
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" EOFEspera a que el pod esté listo:
kubectl wait --for=condition=Ready pod nginx-busyboxUtiliza el comando
kubectl logspara ver los registros del contenedor BusyBox:kubectl logs nginx-busybox -c busybox
Seguimiento de registros (logs) en tiempo real
En este paso, aprenderás cómo seguir los registros en tiempo real a medida que se generan.
Utiliza el comando
kubectl logscon la opción-fpara seguir los registros en tiempo real:kubectl logs -f nginx-busyboxAbre una nueva terminal y crea una shell en el contenedor Nginx:
kubectl exec -it nginx-busybox -c nginx -- /bin/shGenera algunos registros ejecutando un comando dentro del contenedor:
curl 127.0.0.1Vuelve a la primera terminal donde estás siguiendo los registros y observa que se muestra la nueva entrada de registro.
Visualización de registros (logs) 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.
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 EOFEspera a que el pod esté listo:
kubectl wait --for=condition=Ready pod nginx-fluentdUtiliza el comando
kubectl logspara 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.


