Ver los registros del pod suele ser el primer paso para diagnosticar un problema con las cargas de trabajo del clúster. Aquí se explica cómo usar Kubectl para transmitir registros en vivo a su terminal, lo que le permite inspeccionar la salida de su aplicación.
Comenzando
Contenidos
Asegúrese de tener Kubectl instalado y conectado a su clúster. Puede especificar un archivo Kubeconfig configurando la variable de entorno KUBECONFIG en su shell:
exportar KUBECONFIG=~/.kube/my-cluster.yaml
Luego use Kubectl para listar sus pods:
kubectl obtener vainas
Recuerde agregar la marca –namespace cuando sus pods estén fuera del espacio de nombres predeterminado:
kubectl –namespace my-namespace obtener pods
Agregar un alias temporal al shell es una buena manera de acortar este paso, ya que lo ayuda a ejecutar varios comandos en el mismo espacio de nombres:
alias k=»kubectl –namespace my-namespace» k obtener pods
Acceder a los registros del pod
el comando kubectl logs le permite inspeccionar los registros producidos por un pod con nombre:
kubectl registra el nombre del pod
Los registros existentes del pod se emitirán a su terminal. Cuando el pod está formado por más de un contenedor, también debe especificar el nombre del contenedor que desea inspeccionar:
kubectl logs nombre-pod nombre-contenedor
Como alternativa, configure la marca –all-containers para incluir líneas de registro producidas por cualquiera de los contenedores en el pod. Tenga en cuenta que es posible que vea resultados detallados y repetitivos cuando se usa este indicador en un pod ocupado:
kubectl registra el nombre del pod –todos los contenedores
También puede obtener los registros de un conjunto de pods con una determinada etiqueta. Esto le permite agregar registros de diferentes pods, siempre que todos compartan la misma etiqueta:
kubectl logs -l mi-etiqueta=mi-valor –todos-los-contenedores
Registros de transmisión continua
El comando logs plan emite los registros de pod almacenados actualmente y luego sale. Agregue el comando de señal -f (–follow) para seguir los registros y transmitirlos en vivo a su terminal.
Kubectl emitirá cada nueva línea de registro en su terminal hasta que detenga el comando con Ctrl + C. Esto es equivalente a usar tail -f con un archivo de registro local en un entorno sin contenedor.
Ver registros más antiguos
Los registros de kubectl no incluirán líneas de registro producidas por contenedores antiguos que alguna vez fueron miembros del grupo pero que fueron reemplazados. Se puede acceder a estos registros agregando el indicador -p (–anterior).
Luego, Kubectl revelará todo el registro almacenado para el pod, incluidas las líneas que emitieron los contenedores que ya se terminaron.
Obtener registros recientes
A veces no es necesario ver todo el flujo de registro. Kubectl admite un indicador –since que muestra las líneas de registro emitidas después de un cierto tiempo:
kubectl registra el nombre del pod –since=2h
Este comando mostrará el resultado del registro de nombre de pod que se produjo en las últimas dos horas. Otra variante, –since-time, admite un Cumple con RFC3339 cadena de marca de tiempo en lugar de la expresión de tiempo relativo que se muestra arriba.
el indicador –tail es otra opción para condensar registros. Esto limita la cantidad de líneas que se muestran, evitando una terminal abarrotada cuando solo necesita ver una salida muy reciente:
# Muestra las últimas 10 líneas del registro 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. Agregue la marca –timestamps para que Kubectl agregue marcas de tiempo al comienzo de las líneas cuando su carga de trabajo no las proporcione.
También puede agregar los nombres de los pods y contenedores inspeccionados a las líneas de registro. Esta funcionalidad está habilitada con el indicador –prefix. Se puede combinar con –timestamps para mostrar la hora en que se creó cada fila y la fuente de la que se originó.
Acceso a registros de otros tipos de recursos
Los registros de kubectl funcionan con recursos de trabajo e implementación además de pods:
kubectl registra el trabajo/mi-trabajo kubectl registra el despliegue/mi-despliegue
Obtendrá los registros del primer contenedor del trabajo o la implementación. Use la marca –all-containers para mostrar los registros creados por cualquiera de los contenedores correspondientes. Puede usar todas las marcas descritas anteriormente si está viendo un pod, una implementación o un trabajo.
Gestión de registros más avanzada
Kubectl no incluye una forma de filtrar, buscar o transformar sus registros. Lo mejor es canalizar la salida de registros de kubectl a herramientas de terminal establecidas como awk, grep o sed para este propósito.
kubectl registra my-pod | expresión-búsqueda grep
Del mismo modo, use las funciones de redirección existentes de su shell para guardar los registros en un archivo:
kubectl registra my-pod > my-pod-logs.txt
Resumen
Kubectl le permite acceder a registros de sus recursos por contenedor o agregados. Puede ver una instantánea de los registros recopilados actualmente, transmitir continuamente nuevas líneas a su terminal y acceder a las líneas del historial emitidas por contenedores cerrados.
El comando viene con algunas opciones de personalización limitadas, incluido un limitador de conteo de líneas y un filtrado de fecha simple. Cuando se requiera un análisis más exigente, canalice la salida a los comandos de terminal de Unix para analizar rápidamente sus registros y encontrar las causas de los errores en sus aplicaciones.
Kubectl recopila registros de salida estándar y flujos de errores de sus contenedores. Es importante asegurarse de escribir la salida para estos flujos correctamente, ya que un contenedor mal configurado dará como resultado una salida vacía cuando ejecute los registros de kubectl.