kubectl 로그-연속


106
kubectl logs <pod-id>

배포에서 최신 로그를 가져옵니다.-버그에 대해 작업 중이며 런타임에 로그를 알고 싶습니다. 어떻게 연속 로그 스트림을 얻을 수 있습니까?

편집 : 마지막에 수정 된 질문.

답변:


181
kubectl logs -f <pod-id>

다음 -f플래그 를 사용할 수 있습니다 .

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

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


서비스 또는 포드 이외의 다른 로그는 어떻습니까?
Alexander Mills

4
이것은 잠시 동안 작동하고 로그가 중지됩니다. kubectl에서 벗어나려면 Ctrl-c를 누른 다음 다시 시작해야합니다. 이후에 더 많은 로그가 표시되지만 다시 중지됩니다. 로그가 여전히 포드에 의해 생성되고있을 때 로그가 임의의 지점에서 중지되는 이유를 아는 사람이 있습니까?
pferrel

21

kubectl logs --help 당신을 안내 할 것입니다 :

예:

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

플래그 :

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

--since=10m상대적인 시간 전부터 추가 하거나 시작할 수도 있습니다 .


포드에 둘 이상의 컨테이너가있을 수 있습니까?
Alexander Mills

예 @AlexanderMills, 이것은이다 "사이드카"패턴
grokpot

6

오래 실행되는 포드의 로그에 액세스해야 -f했고 며칠 전부터 로그 스트리밍을 시작했습니다.보기에 필요한 위치 (지난 몇 분 정도)에 도달하는 데 몇 시간이 걸렸을 것입니다.

거기에있다 --since=10m플래그는,하지만 나를 위해 작동하지 않았다.

무엇을 놀라게 했는가 --tail=100, 100표시 할 최근 줄의 수는 어디에 있습니까 ?


4

kubes가 포드를 회전시킬 때까지 기다린 다음 계속 진행하십시오.

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

꼬리 통나무

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

성공 지표 찾기

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

'성공한!' 포드에 따라 변경해야 할 수도 있습니다.
ddtraveller

나는 완전히 그 있지만 콤보 I 희망이 아니라 다른 사람에게 봉사합니다에 대한 크레딧을받을 수 없어 그래서 난 ... 여러 가지 다른 유래 게시물에서 그 첫 두 부분을했다
ddtraveller

4

다중 포드 앱에서 로그 스트림을 가져 오려면 kubetail 을 사용할 수 있습니다 . 예 :

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

해당 명령으로, kubetail입니다 미행 포드의 로그 APP2-v31-9pbpn APP2-V31-q74wg을


2

-f로 로그를 추적 할 수 있습니다.

kubectl logs -f <pod_name>

로그가 중지 된 경우 포드가 충돌하는 것 같습니다. 포드가 실제로 실행 중인지 확인할 수 있습니까? 나이를 확인하거나 :

kubectl describe deploy/ds <deploy_or_ds_name>?

또는 여러 컨테이너가있는 포드 내부의 컨테이너에 대한 로그를 확인할 수도 있습니다.

kubectl logs -f <pod_name> -c <container_name> 

1

이 시도,

포드의 테일 로그

kubectl --tail < "no of lines"> 로그 < "pod_name">

:

kubectl --tail 100 개의 로그 app_pod


0

kubctl logs -f = true [pod-name] -c [container-name]

포드 위에 단일 컨테이너 만있는 경우 컨테이너 이름이 필요하지 않고 -c 옵션과 함께 컨테이너 이름을 사용합니다. -f ie follow는 기본적으로 false입니다. true로 설정하지 않으면 컨테이너 로그의 스냅 샷이 생성됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.