Kubectl만으로 특정 워크로드에 대한 모든 이벤트를 필터링하는 직관적인 방법?

제목 그대로 질문을 드립니다. 즉, 특정 Kubernetes 네임스페이스에 배포된 워크로드에 대한 모든 이벤트를 필터링하는 직관적인 방법을 찾고 있는데… Kubernetes 오브젝트의 정확한 이름을 요구하는 듯해서요.

2 Likes

안녕하세요. :hugs:

문의 주신 내용과 같이 “특정 Kubernetes 네임스페이스에 배포된 워크로드에 대한 모든 이벤트를 필터링” 하는 방법으로 여러 가지가 있을 것 같습니다.

1) 리눅스 grep 커맨드를 활용해서 특정 키워드(메시지)로 필터링

kubectl events -A | grep "Pod/coredns-*"
kube-system   14m                      Normal    SandboxChanged            Pod/coredns-668d6bf9bc-trpnf                 Pod sandbox changed, it will be killed and re-created.
kube-system   14m                      Normal    SandboxChanged            Pod/coredns-668d6bf9bc-rm2m8                 Pod sandbox changed, it will be killed and re-created.
  1. kubectl --field-sclector 특정 리소스를 지정 + grep 커맨드 활용하여 특정 키워드(메시지)로 필터링
kubectl get events --field-selector involvedObject.kind=Pod -A | grep Started
kube-system   16m         Normal    Started          pod/coredns-668d6bf9bc-rm2m8                 Started container coredns
kube-system   16m         Normal    Started          pod/coredns-668d6bf9bc-trpnf                 Started container coredns

위에 1), 2) 방식은 리눅스 파이프라인(|)과 grep 명령어를 활용해서 특정 키워드로 이벤트 필터링이 가능하지만, 직관적인 방법은 아닙니다. 그래서 오픈소스 도구를 활용하면 보다 직관적인 방법으로 Kubernetes 이벤트를 필터링할 수 있습니다.

3) 터미널에서 k8s 클러스터를 사용하기 쉬운 UI로 관리할 수 있는 CLI 도구 (K9S 사용)
k9s 도구를 사용하여 events 이벤트 조회하고 원하는 문자열은 슬러쉬(/)를 입력해서 필요한 키워드만 필터링할 수 있고 숫자 0~9를 입력하면 원하는 namespace에 대한 event만 조회도 가능합니다. 이벤트 상세 내용을 조회 하고자 한다면 단축키(d)를 눌러서 보다 상세한 정보를 즉각 조회도 가능합니다.

참고 :

4 Likes

@sepiros62 님 답변 감사합니다. 잘 보고 활용해보겠습니다.

1 Like