Kubernetes를 다루다 보면 kubectl 명령어의 방대한 옵션과 반복 입력에 지칠 때가 종종 있습니다. 수많은 리소스를 조회하고, 복잡한 출력 결과를 해석하다 보면 ‘더 쉽고 효율적인 클러스터 관리 방법은 없을까?’라는 생각이 들죠. 이런 고민을 하는 분들에게 K9s를 추천합니다.

K9s는 터미널에서 동작하는 Kubernetes 전용 TUI(Terminal User Interface) 도구입니다. 단축키 몇 개만으로 복잡한 CLI(Command Line Interface) 작업을 빠르게 처리하는 게 특징이죠. 이로써 Kubernetes 클러스터 관리의 효율성과 생산성을 크게 높여줍니다.

이 글에서는 K9s의 개요와 설치 방법, 주요 기능과 고급 기능 활용법을 단계별로 살펴보겠습니다. Kubernetes 초보자도 쉽게 따라 할 수 있도록 실습 화면을 함께 제공합니다.

K9s란?

K9s는 효율적인 Kubernetes 클러스터 관리를 돕는 오픈 소스 TUI 도구입니다. 2019년 첫 공개 이후 빠르게 성장해 현재 수만 명이 사용하는 인기 프로젝트로 자리 잡았습니다.

주요 특징

K9s에는 다음 4가지 핵심 특징이 있습니다.

  • 터미널 기반 대시보드: K9s는 ’Kubernetes 대시보드의 터미널 버전’입니다. 터미널 기반 UI 도구라 모든 조작을 키보드로 수행합니다. 특히 명령어 입력 대신 인터랙티브 UI와 단축키로 다양한 작업을 손쉽게 처리할 수 있습니다. 단축키에 익숙해지면 업무 효율성이 크게 향상됩니다.
  • kubectl 호환성: K9s는 내부적으로 kubectl을 래핑해 동작합니다. 따라서 기존 kubeconfig와 인증 설정을 그대로 사용할 수 있습니다.
  • 멀티 클러스터 지원: K9s는 kubeconfig에 등록된 여러 클러스터와 컨텍스트를 모두 지원합니다. 이에 멀티 클러스터 환경에서 유용합니다.
  • 실시간 모니터링: K9s는 Kubernetes API를 지속적으로 모니터링해 리소스 상태 변화를 실시간 반영합니다. 문제가 생기면 즉시 확인하고 대응할 수 있습니다.
    Pod 목록이 표시된 K9s 기본 인터페이스 | 인포그랩 GitLab
    Pod 목록이 표시된 K9s 기본 인터페이스

지원 기능

범용 CLI인 kubectl과 달리 K9s는 리소스 생성 기능을 제공하지 않습니다. 대신 운영에 필요한 대부분의 기능을 지원합니다.

  • 리소스 관리: 조회(get), 상세 확인(describe), 편집(edit), 로그 확인 등
  • 모니터링: 리소스별 메트릭 확인
  • 네트워킹: 포트 포워딩
  • 보안: RBAC(Role-Based Access Control) 규칙 조회

K9s는 표준 Kubernetes 리소스뿐만 아니라 CRD(Custom Resource Definition)도 다룹니다. Istio의 VirtualService, ArgoCD의 Application과 같은 확장 리소스도 K9s에서 편리하게 관리할 수 있습니다.

K9s vs 다른 Kubernetes 관리 도구

주요 Kubernetes 관리 도구인 K9s, OpenLens, kubectl의 차이점은 다음과 같습니다.

 | 인포그랩 GitLab


에어갭 환경 내 K9s 장점

‘에어갭(Air-gapped) 환경’은 물리적으로 외부 네트워크와 완전히 분리된 보안 환경입니다. 주로 금융, 국방, 중요 인프라 시설에서 사용하죠.

이런 폐쇄적 환경에는 여러 제약이 있습니다. 외부 인터넷 접속은 차단되고, 데스크톱 애플리케이션 설치나 웹 기반 도구의 포트 개방은 제한되죠. 추가 의존성 설치가 불가능할 때도 많습니다.

이렇게 제약이 많은 환경에서는 클러스터 관리 도구를 선택하기가 쉽지 않습니다. 그러나 K9s를 사용하면, 다음 장점으로 문제를 해결할 수 있습니다.

  • 단일 바이너리 배포: 복잡한 설치 과정이나 의존성 없이 바이너리 하나로 실행
  • 터미널 완결성: SSH 접속만으로 모든 기능 사용 가능
  • 직관적인 UI: 마우스 없이도 빠르게 탐색할 수 있는 키보드 중심 인터페이스
  • 실시간 모니터링: 리소스 상태를 실시간 확인하고 즉시 대응
  • 강력한 필터링: 복잡한 환경에서도 원하는 리소스를 빠르게 검색

K9s의 개념과 특징을 이해했으니, 이제 직접 사용할 차례입니다. 먼저 설치 방법부터 살펴보겠습니다.

K9s 설치 방법

K9s는 macOS, Linux, Windows 등 주요 운영 체제(OS)를 모두 지원합니다. 아래에서는 macOS와 Ubuntu, 에어갭 환경의 설치 방법을 소개합니다. Windows와 다른 Linux 배포판의 설치 방법은 K9s 공식 GitHub 리포지터리를 확인하세요.

macOS

Homebrew 패키지를 이용해 설치할 수 있습니다. 터미널에서 다음 명령어를 실행하세요.

brew install k9s

Ubuntu

터미널에서 다음 명령어로 .deb 패키지를 다운로드 받아 설치하세요.

wget https://github.com/derailed/k9s/releases/latest/download/k9s_linux_amd64.deb && apt install ./k9s_linux_amd64.deb && rm k9s_linux_amd64.deb

에어갭 환경

네트워크가 제한된 환경에서는 바이너리를 직접 전송해 설치할 수 있습니다. 아래 단계를 순서대로 진행하세요.

# 1. 인터넷이 가능한 환경에서 다운로드 및 체크섬 확인
wget https://github.com/derailed/k9s/releases/latest/download/k9s_Linux_amd64.tar.gz
wget https://github.com/derailed/k9s/releases/latest/download/checksums.txt
grep k9s_Linux_amd64.tar.gz checksums.txt | sha256sum -c

# 2. 내부 시스템으로 전송
# 방법 1: SCP를 통한 전송
scp k9s_Linux_amd64.tar.gz user@internal-server:/tmp/
# 방법 2: USB 등 물리적 매체 사용 (보안 정책에 따라 승인된 방법 사용)

# 3. 대상 시스템에서 설치
tar -xzf k9s_Linux_amd64.tar.gz
chmod +x k9s
sudo mv k9s /usr/local/bin/
k9s version # 설치 확인

설치를 확인하려면 k9s version 명령어를 실행하세요. 정상적으로 설치됐다면, 다음과 같이 버전 정보가 표시됩니다.

K9s 버전 확인 명령어 실행 결과 | 인포그랩 GitLab
K9s 버전 확인 명령어 실행 결과

K9s 설치를 확인했다면, 이제 실행할 차례입니다. K9s 실행 전에 먼저 Kubernetes 클러스터와 kubectl의 정상 동작 여부를 확인하세요. kubectl get pods가 동작해야 K9s에서도 동일한 정보를 불러올 수 있습니다.

K9s 주요 기능 활용법

이제 K9s의 주요 기능 활용법을 실제 화면과 함께 알아보겠습니다.

Pod 목록 조회

K9s를 처음 실행하면 기본 네임스페이스(default)의 Pod 목록 화면이 뜹니다. default 네임스페이스에 Pod가 없다면, 아래와 같이 빈 화면이 보일 수 있습니다.

K9s 실행 직후 화면. `pods(default)` 뷰에 Pod가 없어 빈 목록이 표시됨 | 인포그랩 GitLab
K9s 실행 직후 화면. pods(default) 뷰에 Pod가 없어 빈 목록이 표시됨

당황하지 마세요. K9s UI 상단에는 현재 보고 있는 리소스와 네임스페이스가 표시됩니다. 기본값으로 pods (default)가 선택돼 있고, 해당 네임스페이스에 Pod가 없어서 빈 화면이 나타난 것입니다.

모든 네임스페이스의 Pod를 확인하는 방법은 두 가지입니다.

  1. 빠른 방법: 숫자키 0을 누르면, 네임스페이스 필터가 all로 전환
  2. 명령 모드 사용: 콜론(:) 키를 눌러 ‘명령 모드’로 진입한 후, ns를 입력. all 항목 선택
    모든 네임스페이스의 Pod를 표시한 화면. 상단에 `pods(all)`로 표시됨. Pod 상태와 정보가 실시간 갱신됨 | 인포그랩 GitLab
    모든 네임스페이스의 Pod를 표시한 화면. 상단에 pods(all)로 표시됨. Pod 상태와 정보가 실시간 갱신됨

내비게이션: K9s는 VI 스타일의 키보드 단축키를 사용합니다.

 | 인포그랩 GitLab


K9s 도움말 화면: `?` 키를 눌렀을 때 표시되는 단축키 목록 | 인포그랩 GitLab
K9s 도움말 화면: ? 키를 눌렀을 때 표시되는 단축키 목록

리소스 타입 전환: 명령 모드(:)에서 다양한 리소스를 볼 수 있습니다.

:pods     # pod 목록
:svc # service 목록
:deploy # deployment 목록
:ns # namespace 목록
:nodes # node 목록
:ctx # 컨텍스트 전환
명령 모드에서 리소스 타입(ns)을 입력하는 화면 | 인포그랩 GitLab
명령 모드에서 리소스 타입(ns)을 입력하는 화면

Pod 로그 확인

애플리케이션 상태를 파악하려면 로그 확인이 필수입니다. K9s에서는 단축키 하나로 Pod 로그를 볼 수 있습니다.

  1. 로그를 확인할 Pod 선택
  2. l 키(L의 소문자) 입력
  3. 해당 Pod의 로그 뷰어 화면으로 전환
    Pod의 실시간 로그 스트리밍 화면. 상단에 단축키 안내가 표시됨 | 인포그랩 GitLab
    Pod의 실시간 로그 스트리밍 화면. 상단에 단축키 안내가 표시됨

로그 화면에서는 해당 Pod(컨테이너)의 표준 출력 로그를 실시간 스트리밍으로 볼 수 있습니다. 기본적으로 자동 스크롤이 활성화돼 새로운 로그가 계속 추가됩니다.

  • 주요 단축키
    • s: 자동 스크롤 일시 정지/재개
    • w: 로그 줄바꿈
    • Shift + c: 화면 클리어
    • Esc: 이전 화면으로 이동

K9s의 로그 화면에서는 터미널 특성상 마우스로 텍스트를 선택하기가 어렵습니다. 로그를 복사하려면 터미널 자체의 복사 기능을 사용하거나, kubectl logs 명령어를 사용하는 걸 권장합니다.

macOS에서는 로그 화면에서 c 키를 누르면 로그 내용이 복사되고, 리소스 화면에서 같은 키를 누르면 리소스 이름(예: Pod 이름)이 복사됩니다. 단, 다른 OS에서는 c 키를 활용한 복사 기능이 완벽하게 지원되지 않을 수 있습니다.

리소스 삭제

K9s에서는 Kubernetes 리소스도 간편하게 삭제할 수 있습니다. Pod 삭제를 예로 살펴보겠습니다.

  1. Pod 목록 화면에서 삭제하려는 Pod를 방향키로 선택
  2. Ctrl + d 키를 누르면 삭제 확인 창 표시
  3. OK 버튼을 클릭하면 해당 Pod 삭제
    `Ctrl + d` 키를 눌렀을 때 나타나는 삭제 확인 창 | 인포그랩 GitLab
    Ctrl + d 키를 눌렀을 때 나타나는 삭제 확인 창

아울러 K9s에서는 여러 리소스를 한 번에 삭제할 수 있습니다. 

  1. Space 키를 눌러 삭제할 리소스를 선택 (초록색으로 표시)
  2. Ctrl + d 키로 일괄 삭제
    Pod 3개를 선택한 뒤, `Ctrl + d` 키를 누르면 삭제 확인 창이 뜨는 모습 | 인포그랩 GitLab
    Pod 3개를 선택한 뒤, Ctrl + d 키를 누르면 삭제 확인 창이 뜨는 모습

데몬셋(DS)의 모든 Pod를 재시작하는 방법도 간단합니다.

  1. Space 키로 Pod를 여러 개 선택
  2. Ctrl + d 키로 삭제

복잡한 kubectl delete 명령과 라벨 셀렉터를 사용하지 않아도 돼 편리합니다.

컨테이너 셸 접속

Pod를 선택한 뒤 s 키를 누르면 해당 Pod의 컨테이너에 접속할 수 있습니다. 이는 컨테이너 내부에서 명령어를 실행하거나, 파일을 확인할 때 유용합니다.

컨테이너가 3개인 Pod에서 `s` 키를 눌렀을 때 나타나는 컨테이너 선택 화면 | 인포그랩 GitLab
컨테이너가 3개인 Pod에서 s 키를 눌렀을 때 나타나는 컨테이너 선택 화면

포트 포워딩

Service나 Pod에서 Shift + f 키를 누르면 포트 포워딩을 설정할 수 있습니다. 이로써 로컬 머신에서 클러스터 내부 서비스에 접근할 수 있습니다.

`Shift + f` 키를 눌렀을 때 나타나는 포트 포워딩 설정 화면 | 인포그랩 GitLab
Shift + f 키를 눌렀을 때 나타나는 포트 포워딩 설정 화면

K9s 고급 기능 활용법

다음으로 K9s의 고급 기능 활용법을 실제 화면과 함께 살펴보겠습니다.

실시간 필터링

/ 키로 검색 모드에 진입해 리소스를 필터링할 수 있습니다. 이 기능은 리소스가 많은 클러스터에서 특히 유용합니다.

  1. 현재 보고 있는 리소스 목록 화면에서 / 키를 눌러 필터 모드 진입
  2. 하단에 나타나는 프롬프트에 특정 문자열 입력
  3. Enter 키를 누르면, 해당 문자열을 포함하는 리소스만 표시

예를 들어, 모든 네임스페이스의 Service 목록에서 /controller를 입력하면, 이름이나 레이블에 "controller”가 들어간 Service만 보여줍니다.

Service 목록에서 `/controller`로 필터링한 결과 | 인포그랩 GitLab
Service 목록에서 /controller로 필터링한 결과

네임스페이스/컨텍스트 전환

K9s에서는 네임스페이스와 컨텍스트를 손쉽게 전환할 수 있습니다. 이로써 여러 환경을 하나의 터미널에서 효율적으로 관리할 수 있습니다.

네임스페이스 전환

자주 사용하는 네임스페이스는 숫자키로, 전체 목록에서 네임스페이스를 선택하려면 명령어로 전환할 수 있습니다.

  • 방법 1: 숫자 단축키 (빠른 전환)
    • 0, 1, 2... 사용
    • 화면 상단의 <0> all, <1> argo-cd, <2> default는 단축키 슬롯
    • :
      • 2 키를 누르면 default 네임스페이스로 전환
      • 0 키를 누르면 모든 네임스페이스 보기로 전환
        `<1> argocd`로 표시되면 `1` 키를 눌러 Argocd 네임스페이스로 바로 전환 | 인포그랩 GitLab
        <1> argocd로 표시되면 1 키를 눌러 Argocd 네임스페이스로 바로 전환

  • 방법 2: :ns 명령어 (목록 탐색)
    • :ns를 입력한 다음, Enter 키를 누르면 현재 클러스터의 네임스페이스 목록 표시
    • 방향키로 선택한 후 Enter 키를 누르면 해당 네임스페이스로 전환, 기본 리소스 화면(보통 Pods) 표시
    • 장점: 네임스페이스 전환과 리소스 조회를 한 번에 처리

컨텍스트 전환

여러 클러스터의 접속 정보가 kubeconfig에 등록됐다면, K9s에서 다음과 같이 전환할 수 있습니다.

  • 방법 1: K9s 실행 시
    • 컨텍스트 선택 화면이 나타남
    • 원하는 클러스터를 선택하면 해당 컨텍스트로 진입
  • 방법 2: 실행 중 전환
    • :ctx 명령어 사용
    • :ctx 입력 후 Enter 키를 누르면 컨텍스트 목록 표시
    • 원하는 클러스터를 선택하면 해당 클러스터의 리소스 뷰로 즉시 전환
      `:ctx` 입력 후 나타난 컨텍스트 목록 | 인포그랩 GitLab
      :ctx 입력 후 나타난 컨텍스트 목록

멀티 클러스터 환경에서는 터미널을 여러 개 열 필요 없이 하나의 K9s에서 클러스터를 빠르게 전환하며 관리할 수 있습니다.

리소스 상세 보기, 편집

Kubernetes 리소스를 운영할 때는 세부 정보를 확인하고, 설정을 변경해야 할 때가 있습니다. K9s에서는 Describe, YAML 보기, Edit 기능으로 이러한 작업을 쉽게 처리할 수 있습니다.

리소스 상태 정보 조회 (Describe)

다음 순서에 따라 리소스 상태 정보를 확인할 수 있습니다.

  1. 리소스 선택
  2. d 키 누름
  3. 상세 정보 표시: 이벤트 로그, 환경 변수, 마운트 정보 등 리소스의 내부 상태 정보

예를 들어, ‘CrashLoopBackOff’로 재시작을 반복하는 Pod라면 Describe 화면에서 최근 이벤트로 오류 원인을 파악할 수 있습니다. Describe 화면에서 Esc 키를 누르면 다시 목록으로 돌아갑니다.

Kubernetes default Service의 Describe 화면 | 인포그랩 GitLab
Kubernetes default Service의 Describe 화면

리소스 편집 (Edit)

다음 순서에 따라 리소스를 편집할 수 있습니다.

  1. 리소스 선택
  2. e 키 누름
  3. 기본 에디터(예: Vim) 실행
  4. YAML 편집 후 저장
  5. 변경 사항 적용
  6. K9s 화면에서 업데이트된 리소스 상태 확인

이렇게 kubectl 명령을 따로 치지 않고도 Deployment의 Replica를 늘리는 등 설정을 신속히 변경할 수 있습니다.

Kubernetes default Service의 YAML 편집 화면 | 인포그랩 GitLab
Kubernetes default Service의 YAML 편집 화면

리소스별 특화 기능

K9s는 리소스 유형에 따라 특화된 기능을 제공합니다.

  • Service: Enter 키로 연결된 Pod(엔드포인트) 목록 확인
  • ConfigMap/Secret: v 키로 값 열람
  • Secret: x 키로 base64 인코딩된 값 자동 디코딩
    디코딩된 인증서 내용 | 인포그랩 GitLab
    디코딩된 인증서 내용

클러스터 리소스 상태 대시보드 실행

:pulses 명령으로 클러스터의 주요 리소스(Pods, Deployments 등) 상태를 한눈에 보는 대시보드를 실행할 수 있습니다. 여기서는 리소스별 헬스 상태와 CPU/메모리 사용 현황을 실시간 모니터링합니다.

클러스터 리소스 상태 대시보드 | 인포그랩 GitLab
클러스터 리소스 상태 대시보드

 | 인포그랩 GitLab


XRay 모드 - 리소스 관계 시각화

:xray 명령으로 Kubernetes 리소스 간의 관계를 트리 형태로 시각화할 수 있습니다. 이 기능은 복잡한 애플리케이션의 구조를 한눈에 파악할 때 유용합니다.

XRay 모드 화면 - ArgoCD Namespace의 Deployment와 관련 리소스의 트리 구조 | 인포그랩 GitLab
XRay 모드 화면 - ArgoCD Namespace의 Deployment와 관련 리소스의 트리 구조

장애 원인 탐색, 디버깅

K9s에서는 시각화와 빠른 탐색 기능으로 장애를 효율적으로 해결할 수 있습니다. 문제가 있는 리소스를 색상으로 구분하고, 단축키로 원인을 빠르게 추적해 장애 대응 시간을 단축할 수 있습니다.

장애 원인 탐색

시나리오: Pod가 ‘CrashLoopBackOff’ 상태로 재시작 반복

  1. K9s가 문제 Pod를 빨간색으로 표시
  2. 해당 Pod 선택 후, d 키를 누름
  3. 최근 이벤트에서 “Back-off restarting failed container” 메시지 확인
  4. l 키를 눌러 로그에서 상세 오류 파악
    문제가 생긴 Pod가 빨간색으로 표시된 모습 | 인포그랩 GitLab
    문제가 생긴 Pod가 빨간색으로 표시된 모습

디버깅

시나리오: 애플리케이션 설정 오류로 확인

  1. Esc 키를 눌러 : 명령 모드에서 Deployment로 이동
  2. e 키를 눌러 잘못된 환경 변수나 이미지 수정
  3. 에디터 저장 시 적용 완료
    문제가 발생한 Pod에서 로그를 확인하는 모습 | 인포그랩 GitLab
    문제가 발생한 Pod에서 로그를 확인하는 모습

K9s를 사용하면, 장애 탐색부터 해결까지 모든 과정을 하나의 터미널에서 처리할 수 있습니다. kubectl로 여러 명령을 차례로 실행하는 것보다 훨씬 더 빠르고 직관적입니다.

맺음말

K9s는 개발부터 운영까지 폭넓게 활용할 수 있는 도구입니다. 배포 파이프라인 모니터링, CI/CD로 생성된 리소스 확인과 디버깅, 교육용 Kubernetes 리소스 구조 시연 등 다양한 용도로 사용할 수 있습니다.

K9s는 뛰어난 가시성과 직관적인 조작으로 이슈에 빨리 대응하는 데 유용합니다. 특히 반복 작업을 효율화해 개발자 피로를 줄이고, 전반적인 개발자 경험을 개선할 수 있습니다.

K9s를 처음 접하면 색다른 인터페이스에 적응하는 데 시간이 걸릴 수 있습니다. 그러나 적은 학습 투자로 높은 효율을 얻을 수 있는 도구입니다. 특히 마우스 없이 키보드만으로 Kubernetes를 다룰 수 있어 클러스터 모니터링이 새롭고 흥미로운 경험이 될 수 있습니다.

여러분도 K9s로 Kubernetes를 한층 더 수월하게 관리하세요. 이 도구로 문제를 신속히 해결해 서비스 안정성을 높이고, 업무 효율성도 함께 향상하시면 좋겠습니다. 감사합니다.

참고 자료

  1. K9s 공식 GitHub 리포지터리, https://github.com/derailed/k9s
  2. K9s 공식 홈페이지, https://k9scli.io/
  3. “k9s Walkthrough”, Kodekloud, https://notes.kodekloud.com/docs/Kubernetes-Troubleshooting-for-Application-Developers/Prerequisites/k9s-Walkthrough

완벽한 GitLab 구축부터 성공적인 DevOps 도입까지! 인포그랩과 DevOps 라이프사이클을 함께하세요.