03. Week3 파드 상태 및 로그 확인 - chuirang/DevOps GitHub Wiki

파드 상태 및 로그 확인

1. Pod 상태 확인

$ kubectl get po

2. Pod 상태 확인 (Condition, Events 확인)

$ kubectl describe po <pod_name>

3. Pod 로그 확인 (stdout only)

// 1) 기본형
$ kubectl logs <pod_name>		

// 2) --tail <count> -f 옵션 추가 (실시간)
$ kubectl logs --tail 10 -f <pod_name>	

// 3) Pod에서 컨테이너가 여러개인 경우 -c 옵션으로 컨테이너 이름 지정
$ kubectl logs -c <container_name> <pod_name> 

// 4) 바로 직전에 종료된 컨테이너 로그 확인
//    (컨테이너가 뜨자마자 에러로 죽은 경우, --previous 옵션으로 이전 컨테이너 로그 확인 가능)
$ kubectl logs --previous <pod_name> 	

예시) Restart 가 발생한 Pod의 이전 로그 확인 (컨테이너 3개로 구성된 Pod)

wonkilee.lee@u2004-master:~$ kubectl get po -n kube-system
NAME                                       READY   STATUS    RESTARTS   AGE
<생략>
csi-nfs-controller-68f9d6dd85-s87b7        3/3     Running   8          36d
<생략>

wonkilee.lee@u2004-master:~$ kubectl logs --tail 10 csi-nfs-controller-68f9d6dd85-s87b7 -c csi-provisioner --previous -n kube-system
k8s.io/klog/v2.Fatalf(...)
        /workspace/vendor/k8s.io/klog/v2/klog.go:1502
main.main()
        /workspace/cmd/csi-provisioner/csi-provisioner.go:180 +0xa8e

goroutine 6 [chan receive]:
k8s.io/klog/v2.(*loggingT).flushDaemon(0x2604640)
        /workspace/vendor/k8s.io/klog/v2/klog.go:1169 +0x8b
created by k8s.io/klog/v2.init.0
        /workspace/vendor/k8s.io/klog/v2/klog.go:417 +0xdf

4. Pod에 진입하여 로그 확인 (bash 나 sh 를 실행해서 attach 하여 로그 확인)

$ kubectl exec -it <pod_name> -- sh 

5. Pod가 실행된 워커 노드에서 log dir로 접근하여 로그 확인할 수 있음 (/var/log/pods/)

root@u2004-second:/var/log/pods/fancy13_resource-pod_e7dc3e08-4106-4737-8317-516a1650c6bb/busybox-pod# tail -f 0.log
{"log":"The app is running!\n","stream":"stdout","time":"2021-08-05T07:31:07.1600004Z"}

6. Pod에 log directory 가 PV 로 연결된 경우는 df -h 로 마운트 경로를 확인하고, 직접 접근하여 확인 가능

7. grafana, elk 에서 로그 확인

Grafana with Loki 예시)

grafana 에서 Explore > Datasource: Loki 지정 > 예시와 같이 작성 후 'Run Query' 실행

Log labels: {app="php-apache",namespace="youngdo7kim"}

https://user-images.githubusercontent.com/20136723/128319119-8bf70045-7b80-45a2-b0de-c7f623576f70.png

8. Node 에서 kubelet 로그 확인 (보통 특정 노드의 이슈로 Pod가 실행/종료가 안되는 경우)

jounalctl -u kubelet -f 
jounalctl -u kubelet --since=<DATE> --until=<DATE>
⚠️ **GitHub.com Fallback** ⚠️