Cómo ver los registros de pod de Kubernetes con Kubectl

La visualización de registros de pod suele ser el primer paso para diagnosticar un problema con las cargas de trabajo del clúster. A continuación, se explica cómo usar Kubectl para transmitir registros a su terminal, lo que le permite inspeccionar el resultado de su aplicación.

→ Índice de contenidos

Empezar

Asegúrese de tener Kubectl instalado y conectado a su clúster. Puede especificar un archivo Kubeconfig configurando el KUBECONFIG variable de entorno en su shell:

export KUBECONFIG=~/.kube/my-cluster.yaml

Luego use Kubectl para enumerar sus pods:

kubectl get pods

Recuerde agregar el --namespace marca cuando tus pods residen fuera del espacio de nombres predeterminado:

kubectl --namespace my-namespace get pods

Agregar un alias temporal a su shell es una buena manera de acortar este paso, ayudándolo a ejecutar varios comandos en el mismo espacio de nombres:

alias k="kubectl --namespace my-namespace"

k get pods

Acceso a los registros de pod

los kubectl logs El comando le permite inspeccionar los registros producidos por un Pod llamado:

kubectl logs pod-name

Los registros de Pod existentes se enviarán a su terminal. Cuando el pod consta de varios contenedores, también debe especificar el nombre del contenedor que desea inspeccionar:

kubectl logs pod-name container-name

Alternativamente, establezca el --all-containers marca para incluir líneas de registro producidas por cualquiera de los pods en el Pod. Tenga en cuenta que es posible que vea resultados prolijos y repetitivos cuando esta marca se usa en un pod ocupado:

kubectl logs pod-name --all-containers

También puede obtener registros de un conjunto de pods con una etiqueta determinada. Esto le permite agregar registros de diferentes pods, siempre que todos compartan la misma etiqueta:

kubectl logs -l my-label=my-value --all-containers

Registro de transmisión continua

Plan logs El comando genera los registros de Pod almacenados actualmente y luego sale. Añade el -f (--follow) marque el comando para seguir los registros y transmitirlos en directo a su terminal.

Kubectl emitirá cada nueva línea de registro en su terminal hasta que cancele el comando con Ctrl + C. Esto es equivalente a usar tail -f con un archivo de registro local en un entorno sin contenedores.

Ver registros anteriores

kubectl logs no incluirá las líneas de registro producidas por contenedores antiguos que alguna vez fueron miembros del Pod pero que desde entonces han sido reemplazados. Se puede acceder a estos registros agregando el -p (--previous) bandera.

Luego, Kubectl mostrará el registro completo almacenado para el Pod, incluidas las líneas emitidas por los contenedores que ya se terminaron.

Obtener registros recientes

A veces no es necesario ver todo el flujo de registros. Kubectl admite una --since banderas que aparecen las líneas de registro emitidas después de un tiempo determinado:

kubectl logs pod-name --since=2h

Este comando mostrará la salida del registro de pod-name que se ha producido en las últimas dos horas. Otra variante, --since-time, admite una cadena de marca de tiempo compatible con RFC3339 en lugar de la expresión de tiempo relativo que se muestra arriba.

los --tail flag es otra opción para condensar registros. Esto limita la cantidad de líneas mostradas, evitando un terminal completo cuando solo necesita ver una salida muy reciente:

# Shows the last 10 lines of the log
kubectl logs pod-name --tail=10

Kubectl no muestra marcas de tiempo de línea de forma predeterminada, ya que muchas aplicaciones ya las incluyen en su salida de registro. Añade el --timestamps para que Kubectl agregue marcas de tiempo al comienzo de las líneas cuando la carga de trabajo no las proporciona.

También puede anteponer los nombres de las vainas y contenedores inspeccionados para registrar filas. Esta función se activa con el --prefix bandera. Puede combinarse con --timestamps para ver la hora en que se creó cada fila y la fuente desde la que se originó.

Acceder a registros de otros tipos de recursos

kubectl logs trabaja con recursos de distribución y trabajo además de pods:

kubectl logs job/my-job
kubectl logs deployment/my-deployment

Obtendrá los registros del primer contenedor dentro del trabajo o distribución. Utilizar el --all-containers marca para ver los registros creados por cualquiera de los contenedores correspondientes. Puede utilizar todas las marcas descritas anteriormente si está viendo un pod, una distribución o un trabajo.

Gestión de registros más avanzada

Kubectl no incluye una forma de filtrar, buscar o transformar sus registros. Es mejor transmitir el kubectl logs salida en instrumentos terminales establecidos como awk, grep o sed para este propósito.

kubectl logs my-pod | grep search-expression

De manera similar, use las funciones de redireccionamiento existentes en su shell para guardar los registros en un archivo:

kubectl logs my-pod > my-pod-logs.txt

Resumen

Kubectl le permite acceder a los registros de sus recursos por contenedor o en forma agregada. Puede ver una instantánea de los registros recopilados actualmente, transmitir continuamente nuevas líneas a su terminal y acceder a las líneas históricas emitidas por los contenedores terminados.

El comando viene con algunas opciones de personalización limitadas, incluido un limitador de recuento de filas y un filtro de fecha simple. Cuando se requiera un análisis más extenso, redirija la salida a los comandos del terminal Unix para escanear rápidamente los registros y encontrar las causas de los errores en las aplicaciones.

Kubectl recopila registros de los flujos de error y de salida estándar de sus contenedores. Es importante asegurarse de escribir la salida en estos flujos correctamente, ya que un contenedor configurado incorrectamente dará como resultado una salida vacía cuando se ejecute. kubectl logs.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir Change privacy settings