Satellite Logo
곽선생 Tech Blog
Published on
Authors

1. 개요

K9s는 Kubernetes 클러스터를 관리하기 위한 CLI 기반 도구로, 실시간 모니터링, 리소스 탐색, 문제 진단 등 다양한 기능을 제공합니다.

k9s를 이용하면 kubectl로 일일이 커맨드를 작성하는 게 아니라 UI로 쿠버네티스를 빠르게 이용할 수 있어서 간편하게 클러스터 관리를 할 수 있습니다.


2. 주요 특징

  • 실시간 리소스 모니터링: Kubernetes 리소스 상태 및 로그를 실시간으로 확인
  • 간편한 네비게이션: 직관적인 CLI 인터페이스와 키보드 중심 탐색
  • YAML 편집 및 관리: 리소스 YAML 파일의 직접 수정 및 적용
  • 다중 클러스터 지원: 여러 클러스터를 손쉽게 전환하며 관리 가능
  • 확장성: 설정 커스터마이징과 플러그인 지원
  • 통합 도구 지원: Pulse, Xray, Popeye 등의 추가 기능 제공

3. 설치 방법

3.1 플랫폼별 설치

  • MacOS

    brew install k9s
    
  • Linux

    curl -sS https://webinstall.dev/k9s | bash
    
  • Windows


4. 기본 사용법

4.1 실행 및 탐색

  • 실행: k9s 명령어로 실행.
  • 리소스 탐색: : 입력 후 리소스 이름 입력 (예: :pod, :svc).

4.2 주요 작업

  • 리소스 상세보기: 선택한 리소스의 세부 정보 확인.
  • YAML 편집: e 키를 눌러 리소스 YAML 수정.

5. 주요 단축키

단축키기능
/리소스 검색
:리소스 종류 전환 (예: :pod)
Enter선택한 리소스의 세부 정보 보기
e리소스 YAML 편집
d리소스 삭제
q현재 화면 종료
Ctrl+a모든 리소스 보기
Ctrl+f리소스 필터링

6. K9s와 kubectl 명령어 비교

작업 유형kubectl 명령어 예시K9s 사용 방법
Pod 목록 보기kubectl get pods:pod 입력 후 Enter
Pod 상세 정보 보기kubectl describe pod <pod-name>해당 Pod 선택 후 Enter
Pod 로그 보기kubectl logs <pod-name>해당 Pod 선택 후 l
Pod 삭제kubectl delete pod <pod-name>해당 Pod 선택 후 d
Deployment 목록 보기kubectl get deployments:deploy 입력 후 Enter
Deployment 상세 보기kubectl describe deployment <deploy-name>해당 Deployment 선택 후 Enter
YAML 편집kubectl edit <resource-type> <name>해당 리소스 선택 후 e
네임스페이스 변경kubectl config set-context --namespace=<ns>:ns 입력 후 네임스페이스 선택
클러스터 컨텍스트 변경kubectl config use-context <context>:ctx 입력 후 컨텍스트 선택
리소스 생성kubectl apply -f <file.yaml>YAML 파일을 CLI 외부에서 생성 후 적용

7. Pulse, Xray, Popeye 기능

7.1 Pulse

  • 목적: 클러스터 리소스의 전반적인 상태를 실시간으로 모니터링
  • 사용법:
    :pulse
    
    • 실행 후 대시보드에서 기본적으로 Pulse 뷰 조회
    • 대시보드 상단에서 클러스터 요약 데이터를 확인 가능
  • 기능:
    • 실시간 클러스터 상태 시각화
      • 클러스터의 리소스 사용량, 네임스페이스 상태, 파드 상태 등의 주요 정보 요약
    • 상태 모니터링
      • 파드, 노드, 네임스페이스, 워크로드 등 클러스터에서 실행 중인 리소스의 상태를 실시간으로 확인 가능
    • 경고 및 오류 탐지
      • CrashLoopBackOff, Pending 상태와 같은 이슈를 한눈에 파악

7.2 Xray

  • 목적: 리소스 간 관계를 시각화하여 종속성 및 상태 파악
  • 사용법:
    :xray <ressource>
    
    • 특정 네임스페이스나 리소스를 지정하여 계층 뷰를 탐색. 예: :xray deploy로 디플로이먼트 기반 뷰를 확인.
  • 기능:
    • 리소스 종속성 탐색
      • 파드, 서비스, 디플로이먼트, 컨피그맵, 시크릿 등 Kubernetes 리소스 간의 관계를 트리 구조로 표시.
    • 문제 탐지
      • 잘못된 매핑이나 누락된 리소스를 쉽게 파악할 수 있음. 예를 들어, 특정 서비스가 제대로 연결되지 않은 경우 표시됨.
    • 상세 정보 확인
      • 리소스를 선택하면 해당 리소스의 메타데이터, 라벨, 어노테이션 등을 확인 가능

7.3 Popeye

  • 목적: 클러스터 구성 및 설정 진단.
  • 사용법:
    :popeye
    
  • 기능:
    • 리소스 상태 분석

      • 클러스터 내 리소스의 설정 오류나 비효율성을 스캔합니다. 예를 들어, 사용되지 않는 ConfigMap, 시크릿, 레이블 등이 감지됨
    • 베스트 프랙티스 점검

      • Kubernetes 리소스가 모범 사례를 따르고 있는지 확인. CPU/메모리 리소스 요청 및 제한 설정, 태그 누락 등의 문제를 파악
    • 점수화된 리포트

      • 클러스터 상태를 점수로 요약하여 전반적인 상태를 정량적으로 이해할 수 있게 제공

8. 활용 팁

8.1 설정 파일 커스터마이징

  • $HOME/.k9s/config.yml 파일 수정으로 개인화된 환경 구성

8.2 클러스터 전환

  • kubectl config use-context 명령어와 함께 사용

8.3 Popeye 진단 활용

  • 정기적으로 Popeye 실행하여 클러스터 상태 점검

8.4 K9s 단축키 연습

  • K9s에서 제공하는 다양한 단축키를 적극적으로 활용하여 빠른 작업 속도 가능
  • 잘 모르는 단축키는 ? 키를 눌러 바로 확인 가능

8.5 Log View 커스터마이징

  • Pod 로그 확인 시 필터를 추가하여 필요한 정보를 빠르게 추출
    • 예: 특정 키워드 검색을 위해 / 입력 후 검색어 입력

8.6 사용자 정의 리소스 뷰

  • 커스터마이즈된 리소스 뷰를 생성하여 자주 확인하는 정보를 한 화면에서 관리
  • 예: 특정 네임스페이스 또는 라벨 기반 필터링.

8.7 고급 필터링 활용

  • Ctrl+f를 사용하여 특정 조건의 리소스를 빠르게 필터링
    • 예: 특정 상태(Pending, Running)만 필터링

8.8 명령어 출력 저장

  • Ctrl+s를 눌러 현재 화면의 데이터를 파일로 저장 가능
    • 로그나 리소스 상태를 기록해야 하는 경우 유용