k9s 완벽 가이드 — kubectl보다 10배 빠른 쿠버네티스 TUI 대시보드

@JavaPark · April 18, 2026 · 12 min read

안녕하세요, 자바파커입니다.

"kubectl get pods 치고, describe 치고, logs 치고… 하루에 같은 명령을 몇 십 번 반복하고 있습니다."

솔직히 저도 그랬습니다. 쿠버네티스 운영이 익숙해질수록 반복 타이핑이 쌓이고, 멀티 컨텍스트·멀티 네임스페이스를 오갈 때는 kubectl config use-context·-n namespace 옵션 붙이는 것만으로도 피곤해집니다.

결론부터 말씀드리면 — k9s는 이 반복을 키보드 몇 개로 줄여주는 쿠버네티스 TUI 대시보드입니다. ~/.kube/config만 있으면 바로 동작하고, Pod 목록·로그·exec·port-forward를 전부 한 화면에서 처리합니다. 오늘은 설치부터 실전 워크플로우, 커스터마이징까지 정리하겠습니다.

이전 편을 안 보셨다면 K8S에 대한 이해kubectl 실전 명령어 가이드부터 읽고 오시면 흐름이 이어집니다.


k9s란?

k9s는 터미널에서 동작하는 쿠버네티스 TUI(Text UI) 대시보드입니다. Go로 작성된 단일 바이너리이고, 오픈소스(Apache 2.0)입니다.

  • ~/.kube/config를 그대로 사용 — kubectl이 되면 k9s도 됩니다
  • 실시간 리프레시 (기본 2초 간격)
  • 키보드 단축키 기반 내비게이션
  • 로그 스트리밍·exec·port-forward·edit 모두 한 화면에서

핵심 장점: "어떤 리소스가 어떤 상태인지" 한눈에 보여주기 때문에, 디버깅과 탐색이 압도적으로 빠릅니다. kubectl이 "정밀한 외과용 칼"이라면 k9s는 "넓게 스캔하는 관제실 모니터"에 가깝습니다.


설치 — OS별 한 줄 명령어

# macOS
brew install derailed/k9s/k9s

# Linux (snap)
snap install k9s --devmode

# Linux (바이너리 직접 다운로드)
curl -sS https://webinstall.dev/k9s | bash

# Windows (scoop)
scoop install k9s

# Windows (winget)
winget install k9s

설치 후 확인:

k9s version
# 또는 바로 실행
k9s

k9s가 뜨면 현재 컨텍스트의 리소스가 보입니다. 설정 끝.

주의: k9s는 현재 컨텍스트를 그대로 사용합니다. 실수로 운영 클러스터에서 실행하지 않도록 kubectl config current-context로 먼저 확인하는 습관을 들이세요.


화면 구성 — 3줄로 끝

k9s는 UI가 단순합니다.

영역 역할
상단 헤더 현재 컨텍스트·클러스터·네임스페이스·단축키 힌트
리스트 뷰 현재 조회 중인 리소스(Pod, Deployment 등) 테이블
커맨드바 :를 눌러 리소스 전환 (:pod, :svc, :ns …)

리스트 항목을 화살표로 선택하고, 단축키 한 글자로 액션을 실행하는 흐름입니다.


필수 단축키 20개 — 외우면 끝

k9s는 단축키가 전부입니다. 이 표만 외우면 일상의 90%가 커버됩니다.

k9s 핵심 단축키 치트시트 — 이동·조작·뷰·시스템 4개 영역
k9s 핵심 단축키 치트시트 — 이동·조작·뷰·시스템 4개 영역

1) 리소스 이동 (커맨드모드 :)

단축키 동작
:pod Pod 목록
:deploy Deployment 목록
:svc Service 목록
:ing Ingress 목록
:ns Namespace 선택
:ctx Context 선택
:events 클러스터 이벤트
:node Node 목록

2) Pod/리소스 조작

단축키 동작
d describe (Events까지 한 화면에)
l logs (실시간 스트리밍)
p 직전 컨테이너 로그 (previous)
s shell — exec -it bash/sh 진입
f port-forward (로컬 포트 프롬프트)
e edit (YAML 인라인 수정)
y YAML 뷰 (읽기 전용)
Ctrl+K kill (리소스 삭제)

3) 뷰 제어

단축키 동작
/ 필터 — 이름으로 실시간 검색
Esc 뒤로 가기 · 필터 해제
0~9 네임스페이스 숫자 전환
? 전체 단축키 도움말
Space 다중 선택 (Ctrl+D 로 일괄 삭제)
:q 종료

4) XRay 뷰 (리소스 관계 시각화)

단축키 동작
:xray pod Pod → Container → Volume → ConfigMap 트리 구조로 조회

xray는 한 번 써보면 빠져나올 수 없습니다. "이 Deployment가 쓰는 ConfigMap이 뭐지?"를 클릭 한 번(Enter)으로 드릴다운합니다.


실전 워크플로우 — "Pod가 죽었을 때"

kubectl 편에서 본 5단계 디버깅을 k9s로 하면 총 10초입니다.

kubectl vs k9s Pod 디버깅 작업 속도 비교 — 90초 vs 10초
kubectl vs k9s Pod 디버깅 작업 속도 비교 — 90초 vs 10초

1. k9s 실행                        → k9s
2. Pod 화면 이동                   → :pod
3. 문제 Pod 필터                   → / nginx
4. describe 열기                   → d     (Events 즉시 확인)
5. 로그 보기                       → l
6. 직전 로그 보기 (Crash인 경우)   → p
7. 컨테이너 진입 (필요 시)         → s

kubectl로 같은 작업을 하면 7~8개 명령을 쳐야 하는데, k9s는 키보드 7번입니다. 디버깅 루프의 마찰이 크게 줄어듭니다.

포트포워딩 실전

f 하나로 끝납니다.

  1. :svc → Service 목록
  2. 원하는 Service 선택 → f
  3. 로컬 포트 입력 (예: 8080) → 엔터
  4. 자동으로 port-forward 시작, 브라우저에서 localhost:8080 접속

종료도 Ctrl+C 한 번. 포트포워딩 창을 따로 관리할 필요가 없습니다.


커스터마이징 — 나에게 맞게 튜닝

1) Skin (테마)

~/.config/k9s/skins/ 에 YAML 추가하면 색상 테마 변경 가능합니다. 인기 스킨:

  • dracula
  • one-dark
  • solarized-dark
  • nord

k9s skins 레포에 공식 프리셋이 있습니다.

2) 리소스 별칭 (aliases)

자주 쓰는 리소스는 단축어로 만들 수 있습니다. ~/.config/k9s/aliases.yaml:

alias:
  pp: v1/pods
  dp: apps/v1/deployments
  sec: v1/secrets

이제 :pp 로 Pod 목록 이동이 됩니다.

3) 핫키 (hotkeys)

Function 키에 액션을 바인딩할 수 있습니다. ~/.config/k9s/hotkeys.yaml:

hotKeys:
  shift-1:
    shortCut: Shift-1
    description: "View pods in prod ns"
    command: "pod -n production"

Shift+1 한 번에 prod 네임스페이스 Pod로 이동합니다. 반복 작업이 많다면 적극 활용하세요.

4) 플러그인 — stern, jq 연동 예시

~/.config/k9s/plugins.yaml에 외부 도구 바인딩 가능. 예: Pod 선택 상태에서 Shift+L을 누르면 stern으로 멀티 Pod 로그 스트리밍.

plugins:
  stern:
    shortCut: Shift-L
    description: "Logs with stern"
    scopes:
      - po
    command: stern
    background: false
    args:
      - --tail
      - "50"
      - $FILTER

kubectl vs k9s — 언제 뭘 쓰나?

둘 다 써야 합니다. 역할이 다릅니다.

상황 추천 이유
탐색·디버깅 k9s 실시간 뷰, 키 몇 개로 끝
자동화 스크립트 kubectl 파이프·jsonpath·exit code 처리 가능
CI/CD 파이프라인 kubectl 비대화형, 재현 가능
장애 대응(온콜) k9s 빠른 Pod·로그·이벤트 스캔
YAML 배포·apply kubectl 선언적 상태 관리 원칙
멀티 클러스터 모니터링 k9s :ctx 로 즉시 전환 가능

현실적 조합: 평소 모니터링·디버깅은 k9s, 배포·자동화는 kubectl. 실제 운영자들이 쓰는 패턴입니다.


자주 겪는 이슈 3가지

1) "context를 못 찾는다"

kubectl config current-context 먼저 확인. k9s는 kubectl과 같은 설정을 씁니다.

2) "네임스페이스가 자꾸 default로 돌아간다"

→ k9s 실행 시 -n <ns>로 고정. 또는 ~/.config/k9s/config.yaml에서 currentNamespace 지정.

3) "리소스가 너무 많아서 느리다"

refreshRate를 늘려서 리프레시 주기 조정 (기본 2초 → 5~10초). 대형 클러스터에서 권장.

# ~/.config/k9s/config.yaml
k9s:
  refreshRate: 5
  maxConnRetry: 5
  enableMouse: false

FAQ

Q. 운영 환경에서 k9s 써도 되나요?

읽기(조회·로그)는 문제없습니다. 단, Ctrl+K(삭제)·e(edit)·s(shell) 같은 쓰기 액션은 RBAC로 제한하는 걸 권장합니다. 실수로 Pod를 지우는 걸 방지하기 위해, 운영 컨텍스트는 ClusterRoleview 정도로 바인딩해두세요.

Q. Lens나 Headlamp 같은 GUI는 어떤가요?

k9s는 터미널·단축키 중심, Lens/Headlamp는 GUI 중심입니다. SSH 세션 안에서 쓸 거라면 k9s가 거의 유일한 선택입니다. 로컬 개발 중심이면 GUI 도구도 좋은 선택인데, 키보드만으로 속도를 내고 싶다면 k9s가 훨씬 빠릅니다.

Q. kubectl 안 써도 되나요?

아니요. 자동화·CI/CD·apply 기반 GitOps에서는 여전히 kubectl이 기본입니다. k9s는 탐색·디버깅 레이어라고 생각하세요. 둘 다 있어야 온전합니다.

Q. 로그를 파일로 저장하고 싶어요.

로그 뷰에서 s 키로 저장 가능합니다. 기본 저장 경로는 /tmp 하위. 또는 plugin에 kubectl logs ... > file.log 명령을 바인딩하는 방법도 있습니다.


마무리 — 다음 단계

k9s는 "도입 후 kubectl 쓰는 시간이 절반으로 줄었다"는 후기가 가장 많은 도구입니다. 체감 생산성 변화가 크기 때문에, 오늘 바로 설치해서 30분만 써보세요. 단축키 ? 한 번 누르고 d·l·f 세 개만 익혀도 효과가 즉시 나타납니다.

오늘 정리 핵심:

  • k9s는 실시간 TUI 대시보드, kubectl과 역할 분담
  • 단축키 20개 중 d / l / p / s / f / / 이 6개가 하루의 80%
  • :ctx·:ns·:xray는 멀티 클러스터 운영자의 필수
  • 커스터마이징(aliases·hotkeys·plugin)으로 반복 작업을 지속 줄이세요

시리즈 다음 주제

  • Helm으로 K8S 패키지 관리하기
  • HPA·VPA로 오토스케일링 구성
  • Ingress + cert-manager로 HTTPS 자동화
  • ArgoCD로 GitOps 배포 파이프라인
  • kustomize로 환경별 YAML 관리

여러분은 어떤 k9s 단축키나 플러그인을 가장 유용하게 쓰고 계신가요? 댓글로 공유해주시면 다음 편에 반영하겠습니다.

@JavaPark
AI 시대의 개발자 도구, 실전 경험을 공유합니다