Kubernetes

[k8s] Events

비번변경 2022. 9. 1. 20:25

Events

쿠버네티스 리소스 타입 중 하나로 다른 리소스의 상태 변화, 에러 등 시스템에 특정 메시지를 전파해야 할 때 자동으로 만들어진다.

events

쿠버네티스 클러스터를 개발하고 운영하면서 디버깅할 때 유용하다.

 

 

Events 조회

Events 리소스에 대해 알지 못해도 한 번쯤은 이미 봤을 텐데, describe 명령어로 확인할 수 있기 때문이다.

pod events

Events 항목에 나열된 목록이 바로 Events 리소스에 해당한다.

 

다른 리소스와 마찬가지로 get 명령으로도 조회할 수 있다.

kubectl get events

kubectl get events

--field-selector 옵션을 사용하면 원하는 정보만을 찾아볼 수 있다.

# Warning 유형만 확인
kubectl get events --field-selector type=Warning

# Node에서 발생한 이벤트 제외
kubectl get events --field-selector involvedObject.kind!=Node

# nginx Pod에서 발생한 이벤트
kubectl get events --field-selector involvedObject.kind=Pod,involvedObject.name=nginx

kubectl get events --field-selector type=Warning

 

Events는 일종의 로그와 비슷한 역할이기 때문에 다른 리소스와 다르게 계속 유지되지 않는다. 기본적으로 1시간 동안 유지되었다가 자동으로 삭제한다.

 

 

필드

Events 리소스는 아래와 같은 정보를 가진다.

  • Last Seen : 이벤트가 발생한 시점
  • Type : 이벤트 유형. 이미지 pull, deployments 업데이트 등 단순 정보성 이벤트, Pod 오류와 같은 경고성 이벤트, node Notready와 같은 오류 이벤트가 존재한다.
  • Reason : 이벤트가 발생한 이유. 별도의 형식 없이 사람이 이해할 수 있는 128자 이하의 문자열이다.
  • Object : 이벤트가 발생한 객체
  • Message : 이벤트 메시지

 

중요 이벤트

쿠버네티스에는 수많은 종류의 이벤트가 있지만, 아래의 이벤트는 매우 중요하다.

이벤트 발생 상황
CrashLoopBackOff 포드가 시작 후 충돌로 인해 재시작을 반복하는 경우에 발생한다.
ImagePullBackOff  이미지 pull 불가 시 발생한다.
Evicted  노드가 CPU, MEM 등 리소스를 확보하기 위해 포드를 삭제해야 할 때에 발생한다. 다른 노드에 포드를 스케쥴링해야 한다.
FailedMount / FailedAttachVolume PV에 접근할수 없는 경우 발생한다.
FailedSchedulingEvents 스케쥴러가 포드를 실행할 노드를 찾을 수 없는 경우에 발생한다.
NodeNotReady 노드를 사용해 포트를 실행할 수 없을 때 발생한다.

 

 

참고 문서

https://binux.tistory.com/95

https://kubernetes.io/docs/tasks/debug/debug-application/debug-running-pod/

https://isitobservable.io/observability/kubernetes/how-to-collect-kubernetes-events