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.

npr
fuente

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

Yu-Ju Hong
fuente
¿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.

manojlds
fuente
¿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.

arshbot
fuente
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
ddtraveller
fuente
'¡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

db80
fuente
1

Prueba esto,

troncos de cola de las vainas

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

Ejemplo :

kubectl --tail 100 registros app_pod

Saurabh Bishnoi
fuente
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.

Mandíbulas
fuente
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> 
Abhi Gadroo
fuente