registros de kubectl - continuamente


99
kubectl logs <pod-id>

obtiene los registros más recientes de mi implementación - Estoy trabajando en un error y me interesa conocer los registros en tiempo de ejecución - ¿Cómo puedo obtener un flujo continuo de registros?

editar: pregunta corregida al final.

Respuestas:


175
kubectl logs -f <pod-id>

Puedes usar la -fbandera:

-f, --follow=false: Specify if the logs should be streamed.

https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#logs


¿Qué pasa con los registros de servicio o cualquier otra cosa que no sean los pods?
Alexander Mills

4
esto funciona por un corto tiempo y luego los registros se detienen. Tengo que ctrl-c para salir de kubectl, luego reiniciarlos. Esto muestra más registros después, pero se detiene nuevamente. ¿Alguien sabe por qué los registros se detienen en lugares aleatorios cuando, obviamente, todavía los genera el pod?
pferrel

20

kubectl logs --help te guiará:

Ejemplo:

# Begin streaming the logs of the ruby container in pod web-1
kubectl logs -f -c ruby web-1

Banderas:

-f, --follow[=false]: Specify if the logs should be streamed.

También puede agregar --since=10mo comenzar desde ese tiempo relativo.


¿Puede haber más de un contenedor en una vaina?
Alexander Mills

@AlexanderMills sí, este es el patrón de "sidecar"
grokpot

6

Necesitaba acceder a los registros de un módulo de larga duración y -fcomencé a transmitir registros de hace días, lo que me habría llevado horas llegar a donde necesitaba ver (solo los últimos minutos más o menos).

Hay una --since=10mbandera, pero eso no pareció funcionar para mí.

Lo que hizo maravillas fue --tail=100dónde 100está el número de líneas recientes para mostrar.


4

Espere a que Kubes haga girar la cápsula y luego continúe ...

k8s_pod=some_pod
kubectl get pods -w $k8s_pod | while read LOGLINE
do
   [[ "${LOGLINE}" == *"Running"* ]] && pkill -P $$ kubectl
done

troncos de cola

for line in $(kubectl get pods | grep $k8s_pod | awk '{print $1}'); do
    kubectl logs -f $line | tee logfile
done

buscar indicador de éxito

tail logfile | grep successful! 
RESULT=$?
exit $RESULT

'¡exitoso!' Es posible que deba cambiar según su módulo.
ddtraveller

Tomé esas dos primeras partes de varias otras publicaciones de stackoverflow, por lo que no puedo atribuirme el crédito por completo, pero espero que el combo sirva bien a los demás ...
ddtraveller

4

Si desea obtener el flujo de registros de una aplicación de varios pods , puede usar kubetail , por ejemplo:

kubectl get pods

NAME                   READY     STATUS    RESTARTS   AGE
app2-v31-9pbpn         1/1       Running   0          1d
app2-v31-q74wg         1/1       Running   0          1d

kubetail app2

Con ese comando, kubetail está siguiendo los registros de pod app2-v31-9pbpn y app2-v31-q74wg


1

Prueba esto,

troncos de cola de las vainas

kubectl --tail <"no of lines"> registros <"pod_name">

Ejemplo :

kubectl --tail 100 registros app_pod


0

kubctl logs -f = true [nombre-pod] -c [nombre-contenedor]

Si solo tiene un contenedor sobre el pod, el nombre del contenedor no es necesario; de lo contrario, use el nombre del contenedor con la opción -c. -si seguir es falso por defecto. Si no lo configura como verdadero, obtendrá una instantánea de los registros de su contenedor.


0

Puede seguir los registros con -f

kubectl logs -f <pod_name>

Si los registros se detienen, lo más probable es que el módulo se bloquee, ¿puede comprobar si el módulo se está ejecutando realmente o no? Verifique la edad tal vez o:

kubectl describe deploy/ds <deploy_or_ds_name>?

O también puede consultar los registros del contenedor dentro de la vaina, ya que hay varios contenedores

kubectl -f <pod_name> -c <container_name> 
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.