[KUBERNETES] k9s는 뭐고 왜 쓰는 걸까?

굿굿·2026년 5월 13일

CI/CD

목록 보기
14/73

쿠버네티스를 처음 공부하면 보통 kubectl 명령어부터 익힌다. Pod를 보고, Deployment를 보고, Service를 확인하고, 로그를 보고, describe로 이벤트를 확인한다. 그런데 어느 순간부터 이런 생각이 든다. “매번 명령어 치는 거 너무 귀찮은데?” 이때 많이 쓰는 도구가 바로 k9s다.

k9s란?

k9s는 터미널에서 실행하는 Kubernetes 클러스터 관리 도구다.

쉽게 말하면, kubectl get pods, kubectl describe pod, kubectl logs, kubectl delete pod 같은 작업을 터미널 UI로 편하게 할 수 있게 해주는 프로그램이다.

쿠버네티스를 GUI처럼 볼 수 있지만, 완전한 웹 대시보드는 아니다. 브라우저에서 보는 도구가 아니라 터미널 안에서 키보드로 조작하는 도구다.

kubectl get pods
kubectl get deployments
kubectl describe pod redis
kubectl logs redis

이런 명령어들을 매번 직접 치는 대신, k9s에서는 화면에서 리소스를 선택하고 단축키로 바로 확인할 수 있다.

왜 이름이 k9s일까?

Kubernetes를 줄여서 k8s라고 부른다.

Kubernetes
K + 중간 8글자 + s
= k8s

k9s는 이 k8s를 관리하는 터미널 도구라서 비슷한 이름을 가진다. 공식적으로는 쿠버네티스 클러스터를 빠르게 탐색하고 관리하기 위한 터미널 UI 도구라고 보면 된다.

k9s를 왜 쓰는가?

쿠버네티스에서는 확인해야 할 리소스가 많다.

Pod
Deployment
ReplicaSet
Service
ConfigMap
Secret
Namespace
Node
Ingress
PersistentVolume
PersistentVolumeClaim

이걸 전부 kubectl 명령어로만 확인하면 초반에는 공부가 되지만, 실무에서는 꽤 번거롭다.

예를 들어 Pod 상태를 확인한다고 해보자.

kubectl get pods
kubectl describe pod my-pod
kubectl logs my-pod
kubectl get events

문제가 생기면 여기에 namespace까지 붙는다.

kubectl get pods -n dev
kubectl describe pod my-pod -n dev
kubectl logs my-pod -n dev

k9s를 쓰면 이런 작업을 화면 안에서 이동하면서 처리할 수 있다.

Pod 목록 보기
→ 특정 Pod 선택
→ 로그 보기
→ describe 보기
→ 삭제하기
→ 다른 namespace로 이동

명령어를 아예 안 치는 것은 아니지만, 반복 작업이 훨씬 줄어든다.

k9s는 kubectl을 대체하는 도구일까?

완전히 대체하는 도구는 아니다.

k9s는 kubectl을 편하게 쓰도록 도와주는 도구에 가깝다. 쿠버네티스의 기본 원리와 명령어를 모르면 k9s 화면을 봐도 “이게 왜 문제인지” 판단하기 어렵다.

즉, 관계는 이렇게 보면 된다.

kubectl = 기본기
k9s = 운영 편의 도구

처음에는 kubectl로 직접 쳐보는 게 좋다. 그래야 Pod, Deployment, Service, Namespace 같은 개념이 잡힌다. 그다음 k9s를 쓰면 훨씬 편하다.

k9s 실행 방법

설치가 되어 있다면 터미널에서 그냥 이렇게 실행하면 된다.

k9s

그러면 현재 kubeconfig에 연결된 클러스터를 기준으로 k9s가 실행된다.

여기서 중요한 점은 k9s도 결국 현재 내 kubectl 설정을 따라간다는 것이다.

즉, 아래 명령어로 보이는 클러스터가 k9s에서도 기준이 된다.

kubectl config current-context

현재 context가 잘못되어 있으면 k9s도 엉뚱한 클러스터를 보게 된다.

k9s에서 자주 쓰는 화면

k9s를 실행하면 기본적으로 Pod 목록이 보이는 경우가 많다. 여기서 명령어처럼 리소스 이름을 입력해서 다른 화면으로 이동할 수 있다.

예를 들어 :를 누르고 리소스 이름을 입력한다.

:pod
:deploy
:svc
:ns
:node
:cm
:secret

각각 의미는 다음과 같다.

입력의미
:podPod 목록 보기
:deployDeployment 목록 보기
:svcService 목록 보기
:nsNamespace 목록 보기
:nodeNode 목록 보기
:cmConfigMap 보기
:secretSecret 보기

이게 편한 이유는 kubectl get 명령어를 매번 칠 필요 없이 바로바로 리소스를 이동할 수 있기 때문이다.

k9s에서 Pod 로그 보기

쿠버네티스에서 가장 자주 보는 것 중 하나가 로그다.

기존에는 이렇게 본다.

kubectl logs my-pod

namespace가 있으면 이렇게 해야 한다.

kubectl logs my-pod -n dev

k9s에서는 Pod 목록에서 해당 Pod에 커서를 올리고 로그 단축키를 누르면 바로 로그를 볼 수 있다.

보통 흐름은 이렇다.

k9s 실행
→ Pod 목록 확인
→ 문제 있는 Pod 선택
→ 로그 확인
→ describe 확인
→ 이벤트 확인

특히 CrashLoopBackOff, ImagePullBackOff, Pending 같은 상태를 볼 때 유용하다.

k9s에서 describe 보기

쿠버네티스 문제를 볼 때 describe는 거의 필수다.

kubectl describe pod my-pod

여기서 보는 정보는 대략 이런 것들이다.

Pod가 어느 Node에 올라갔는지
컨테이너 상태가 어떤지
환경변수는 무엇인지
마운트된 볼륨은 무엇인지
최근 이벤트는 무엇인지
이미지 pull에 실패했는지
스케줄링에 실패했는지

k9s에서는 리소스를 선택한 뒤 describe 화면으로 바로 들어갈 수 있다. 그래서 문제 상황에서 명령어를 다시 치지 않아도 된다.

예를 들어 Pod가 계속 안 뜬다면 k9s에서 Pod를 선택하고 describe를 보면 된다.

Events:
FailedScheduling
FailedPull
BackOff
Unhealthy

이런 이벤트를 확인하면 문제 원인을 빠르게 좁힐 수 있다.

k9s에서 namespace 바꾸기

쿠버네티스에서는 namespace 때문에 헷갈리는 경우가 많다.

kubectl get pods

이렇게 쳤는데 아무것도 안 보일 수 있다. 실제로는 default namespace에는 없고 dev나 kube-system namespace에 있을 수 있기 때문이다.

k9s에서는 namespace를 바꿔가면서 리소스를 볼 수 있다.

:ns

를 입력하면 namespace 목록을 볼 수 있고, 원하는 namespace로 이동할 수 있다.

이게 편한 이유는 다음과 같다.

default에 Pod가 없는지
dev namespace에 있는지
kube-system 쪽 문제가 있는지
모든 namespace 기준으로 봐야 하는지

이런 걸 빠르게 확인할 수 있다.

k9s에서 리소스 삭제하기

k9s에서는 리소스를 선택하고 삭제할 수도 있다.

예를 들어 Pod를 삭제하면 쿠버네티스가 Deployment 기준으로 다시 Pod를 만들 수도 있다.

kubectl delete pod my-pod

k9s에서는 화면에서 선택 후 삭제 단축키로 처리할 수 있다.

다만 주의해야 한다. k9s는 보기만 하는 도구가 아니라 실제 클러스터 리소스를 수정하거나 삭제할 수 있는 도구다.

그래서 실무 클러스터에서는 특히 조심해야 한다.

운영 namespace인지 확인
삭제 대상이 Pod인지 Deployment인지 확인
현재 context가 진짜 원하는 클러스터인지 확인

k9s에서 무심코 삭제하면 실제 운영 리소스가 날아갈 수 있다.

k9s가 특히 좋은 상황

k9s는 이런 상황에서 좋다.

Pod 상태를 계속 확인해야 할 때
로그를 자주 봐야 할 때
namespace를 왔다 갔다 해야 할 때
Deployment, Service, Pod 관계를 빠르게 확인해야 할 때
CrashLoopBackOff 원인을 찾아야 할 때
Node 상태나 리소스 사용량을 보고 싶을 때
kubectl 명령어가 너무 길어질 때

예를 들어 실무에서 장애를 볼 때 이런 흐름이 자주 나온다.

서비스 접속 안 됨
→ Pod가 살아 있는지 확인
→ Service selector가 맞는지 확인
→ Pod 로그 확인
→ describe로 Events 확인
→ 이미지 문제인지, 포트 문제인지, 환경변수 문제인지 확인

이걸 kubectl로만 하면 명령어를 계속 바꿔 쳐야 한다.

k9s에서는 화면 이동으로 빠르게 볼 수 있다.

k9s와 Lens의 차이

쿠버네티스 관리 도구 중에는 Lens 같은 GUI 도구도 있다.

둘 다 쿠버네티스를 편하게 보기 위한 도구지만 느낌이 다르다.

도구특징
kubectl기본 CLI
k9s터미널 기반 UI
Lens데스크톱 GUI
Kubernetes Dashboard웹 기반 대시보드

k9s는 터미널에서 바로 실행되기 때문에 개발자나 DevOps 엔지니어가 빠르게 보기 좋다. 서버에 접속해서 작업하거나 로컬 터미널에서 클러스터를 확인할 때도 편하다.

Lens는 화면이 더 GUI스럽고 보기 좋지만, 가볍고 빠른 느낌은 k9s가 더 강하다.

k9s를 쓴다고 쿠버네티스를 잘하게 될까?

k9s를 쓴다고 자동으로 쿠버네티스를 잘하게 되는 것은 아니다.

중요한 건 화면에 나오는 정보를 해석하는 능력이다.

예를 들어 k9s에서 Pod 상태가 이렇게 나온다고 하자.

ImagePullBackOff

이걸 보고 “이미지를 못 가져오는구나”라고 해석해야 한다.

이미지 이름이 틀렸나?
태그가 틀렸나?
private registry 인증이 안 됐나?
네트워크 문제인가?

이렇게 원인을 좁힐 수 있어야 한다.

또 Pod 상태가 Pending이면 이렇게 생각해야 한다.

Node 리소스가 부족한가?
taint 때문에 스케줄링이 안 되나?
PVC가 바인딩되지 않았나?
nodeSelector가 맞지 않나?

즉, k9s는 문제를 해결해주는 도구라기보다는 문제를 빨리 보게 해주는 도구다.

실무적으로 보면 k9s는 어떤 도구인가?

실무에서는 쿠버네티스 리소스를 계속 확인해야 한다.

배포 후 Pod가 정상적으로 뜨는지, 로그에 에러가 없는지, Service가 제대로 연결되어 있는지, ConfigMap이나 Secret이 잘 들어갔는지 봐야 한다.

이때 k9s를 쓰면 운영자가 훨씬 빠르게 상황을 파악할 수 있다.

특히 DevOps나 Cloud Engineer 입장에서는 이런 흐름이 중요하다.

배포
→ Pod 상태 확인
→ 로그 확인
→ Service 연결 확인
→ 문제 발생 시 describe 확인
→ 이벤트 확인
→ 원인 추적

k9s는 이 흐름을 빠르게 만들어준다.

정리

k9s는 쿠버네티스를 터미널에서 편하게 관리할 수 있게 해주는 도구다. kubectl 명령어를 완전히 대체하는 것은 아니지만, Pod, Deployment, Service, Node, Namespace 같은 리소스를 빠르게 탐색하고 로그나 describe를 바로 확인할 수 있어서 실무에서 매우 유용하다. 다만 k9s는 클러스터 리소스를 실제로 삭제하거나 수정할 수 있기 때문에 현재 context와 namespace를 항상 확인해야 한다. 쿠버네티스 기본기는 kubectl로 익히고, 반복적인 확인과 운영 작업은 k9s로 편하게 보는 방식이 가장 좋다.

profile
https://greenapple0101.github.io/

0개의 댓글