본문 바로가기
IT/k8s

[k8s] kubectl 플러그인 추천: 생산성을 높이는 필수 도구 활용법

by 수누다 2026. 4. 18.

kubectl만으로는 부족했던 날들

쿠버네티스(Kubernetes)를 쓰다 보면 kubectl이 얼마나 강력한 도구인지 금방 느끼게 됩니다. 근데 동시에 "이걸 좀 더 편하게 할 수 없나?"라는 생각도 같이 오더라고요. 저도 처음 몇 년은 그냥 기본 kubectlalias 좀 걸어놓고 썼는데, 팀원이 플러그인 쓰는 걸 보고 나서 세상이 달라 보였습니다. 😅

특히 여러 클러스터를 동시에 관리하거나, 네임스페이스를 자주 전환하거나, 파드 로그를 한꺼번에 봐야 할 때 기본 kubectl만으로는 손이 너무 많이 가거든요. 오늘은 제가 실제로 쓰고 있는 kubectl 플러그인들을 소개해 드리려 합니다. 생산성이 진짜로 달라지는 것들만 골랐으니 한번 같이 살펴봐요.

krew를 중심으로 한 kubectl 플러그인 생태계 구조 다이어그램

kubectl 플러그인 생태계 — krew를 중심으로 다양한 플러그인이 연결되는 구조. 기본 kubectl에서 플러그인을 통해 기능이 확장되는 흐름을 보여줍니다.

krew란 뭔가요? kubectl 플러그인 패키지 매니저

kubectl 플러그인 얘기를 하려면 먼저 krew를 알아야 합니다. 쉽게 말해, kubectl 플러그인을 위한 aptbrew 같은 패키지 매니저예요. kubectl은 $PATHkubectl-플러그인이름 형태의 실행 파일이 있으면 자동으로 서브커맨드로 인식하는 구조거든요. krew는 이 kubectl 플러그인들을 설치·업데이트·삭제하는 걸 한 곳에서 관리해 줍니다.

공식 플러그인 인덱스에 200개가 넘는 플러그인이 등록돼 있고, 커뮤니티에서 계속 새로운 게 올라오고 있어요. 저도 처음엔 "그냥 직접 바이너리 받으면 되는 거 아닌가?" 싶었는데, 여러 플러그인을 쓰다 보니 krew 없이는 못 살겠더라고요 ㅎㅎ.

krew 설치 방법

macOS/Linux 기준으로 설치 방법은 아래와 같습니다. 공식 문서에서 제공하는 방법 그대로예요.

# krew 설치 (bash/zsh 기준)
(
  set -x; cd "$(mktemp -d)" &&
  OS="$(uname | tr '[:upper:]' '[:lower:]')" &&
  ARCH="$(uname -m | sed -e 's/x86_64/amd64/' -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/')" &&
  KREW="krew-${OS}_${ARCH}" &&
  curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/latest/download/${KREW}.tar.gz" &&
  tar zxvf "${KREW}.tar.gz" &&
  ./${KREW} install krew
)

# PATH에 krew bin 추가 (~/.bashrc 또는 ~/.zshrc에 추가)
export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"

# 설치 확인
kubectl krew version

설치 후 source ~/.zshrc 또는 터미널 재시작을 해줘야 PATH가 적용됩니다. 이 부분에서 한 번씩 헤매시는 분들이 있더라고요. ⚠️ PATH 적용 안 하면 플러그인이 인식 안 됩니다.

꼭 써야 할 kubectl 플러그인 추천 목록

이제 본론입니다. 제가 홈랩에서도, 실무에서도 실제로 쓰고 있는 플러그인들이에요. 설치 명령어와 기본 사용법을 같이 정리했습니다.

1. kubectx / kubens — 컨텍스트·네임스페이스 전환의 끝판왕

이게 없던 시절엔 어떻게 살았나 싶을 정도예요. kubectx는 클러스터 컨텍스트(context, 어느 클러스터에 연결할지 설정)를, kubens는 네임스페이스(namespace)를 빠르게 전환해 줍니다.

# krew로 설치
kubectl krew install ctx
kubectl krew install ns

# 컨텍스트 목록 보기 및 전환
kubectl ctx                    # 목록 출력
kubectl ctx my-production      # 프로덕션 클러스터로 전환
kubectl ctx -                  # 이전 컨텍스트로 돌아가기

# 네임스페이스 전환
kubectl ns                     # 목록 출력
kubectl ns kube-system         # kube-system으로 전환
kubectl ns -                   # 이전 네임스페이스로 돌아가기

특히 fzf(퍼지 검색 도구)가 설치돼 있으면 인터랙티브 선택 메뉴가 뜨는데, 이게 진짜 편합니다. 클러스터가 5개 넘어가면 이거 없이는 진짜 힘들어요.

2. stern — 여러 파드 로그를 한 번에

stern은 여러 파드의 로그를 동시에 스트리밍해주는 도구입니다. 기본 kubectl logs는 파드 하나밖에 못 보잖아요. 마이크로서비스 환경에서 여러 레플리카를 동시에 봐야 할 때 정말 유용해요.

# krew로 설치
kubectl krew install stern

# 특정 레이블의 파드 로그 전부 보기
kubectl stern -l app=my-api

# 특정 네임스페이스에서 이름 패턴으로 필터링
kubectl stern my-api -n production

# 지난 1시간치 로그부터 보기
kubectl stern my-api --since 1h

# 특정 컨테이너만 보기
kubectl stern my-api -c main-container

색깔별로 파드를 구분해서 출력해 주기 때문에 어느 파드에서 에러가 났는지 한눈에 보입니다. 처음 써봤을 때 "이게 왜 기본이 아니지?" 싶었어요 🎉.

3. kubectl-neat — YAML을 깔끔하게

kubectl get pod my-pod -o yaml 해보신 적 있으시죠? 출력이 어마어마하게 길게 나오는데, 대부분은 쿠버네티스가 자동으로 붙인 메타데이터라 실제로 내가 설정한 내용 파악하기가 힘들어요. kubectl-neat는 이 불필요한 필드들을 걸러내서 깔끔한 YAML만 보여줍니다.

# 설치
kubectl krew install neat

# 파드 YAML을 깔끔하게 출력
kubectl get pod my-pod -o yaml | kubectl neat

# 디플로이먼트도 동일하게 활용
kubectl get deployment my-deploy -o yaml | kubectl neat

# 파일로 저장해서 재활용
kubectl get deployment my-deploy -o yaml | kubectl neat > deploy-clean.yaml

기존 리소스를 백업하거나, 다른 환경에 옮겨 적용할 때 진짜 요긴합니다. 삽질 좀 줄여주는 고마운 플러그인이에요.

4. kubectl-tree — 리소스 의존관계 트리로 보기

kubectl-tree는 쿠버네티스 리소스의 오너십(ownerReference) 관계를 트리 형태로 시각화해 줍니다. 디플로이먼트 → 레플리카셋 → 파드로 이어지는 관계를 한 눈에 볼 수 있어요.

# 설치
kubectl krew install tree

# 디플로이먼트 트리 보기
kubectl tree deployment my-deploy

# 예시 출력
# NAMESPACE  NAME                                    READY  REASON  AGE
# default    Deployment/my-deploy                    -              2d
# default    └─ReplicaSet/my-deploy-7d6b9c8f5       -              2d
# default      ├─Pod/my-deploy-7d6b9c8f5-abc12      True           2d
# default      └─Pod/my-deploy-7d6b9c8f5-def34      True           2d

Helm으로 배포한 차트가 어떤 리소스들을 만들었는지 파악할 때도 편리해요. 신입 엔지니어분들한테 쿠버네티스 리소스 구조 설명할 때도 이걸 보여주면 이해가 훨씬 빠르더라고요.

5. kubectl-whoami — 현재 인증 정보 빠르게 확인

여러 클러스터, 여러 서비스 어카운트를 쓰다 보면 "내가 지금 어느 권한으로 붙어 있지?" 헷갈릴 때가 있어요. kubectl-whoami가 딱 그럴 때 씁니다.

# 설치
kubectl krew install whoami

# 현재 인증 주체 확인
kubectl whoami
# 출력 예시: system:serviceaccount:default:my-sa

RBAC(역할 기반 접근 제어) 트러블슈팅할 때 제일 먼저 쓰는 명령어가 됐습니다. 간단하지만 정말 자주 쓰게 되더라고요.

stern과 kubectx 등 kubectl 플러그인이 실행되는 터미널 화면

kubectx, stern, kubectl-tree 등 주요 플러그인이 터미널에서 실행되는 모습. 각 플러그인의 출력 형식과 색상 구분이 실제 작업 환경에서 어떻게 보이는지 확인할 수 있습니다.

6. kubectl-df-pv — PersistentVolume 용량 현황 한눈에

kubectl-df-pv는 PersistentVolume(영구 볼륨)의 사용량을 Linux df 명령어처럼 보여줍니다. 스토리지 모니터링할 때 Grafana 대시보드까지 열기 귀찮을 때 바로 CLI에서 확인할 수 있어서 편해요.

# 설치
kubectl krew install df-pv

# 전체 PV 사용량 확인
kubectl df-pv

# 예시 출력
# PVC           NAMESPACE     POD           CAPACITY  USED    AVAILABLE  PERCENTUSED  IUSED  IFREE   PERCENTIUSED
# data-pvc      production    my-db-0       50Gi      23Gi    27Gi       46%          ...    ...     ...

데이터베이스 파드 볼륨이 가득 차서 장애 난 경험 한 번쯤 있으시죠? 이걸로 주기적으로 확인하는 습관 들이시면 좋습니다. 💡

7. kubectl-images — 파드에서 쓰는 이미지 목록 확인

보안 감사나 이미지 버전 관리할 때 클러스터 전체에서 어떤 컨테이너 이미지가 쓰이고 있는지 한 번에 보고 싶을 때가 있어요. kubectl-images가 딱 그 역할입니다.

# 설치
kubectl krew install images

# 현재 네임스페이스의 모든 이미지 목록
kubectl images

# 특정 네임스페이스
kubectl images -n production

# 전체 네임스페이스
kubectl images -A

이미지 태그에 latest 쓴 파드 찾아내서 혼낼 때(?) 유용합니다 ㅎㅎ. 보안팀에서 취약 이미지 버전 쓰는 파드 찾을 때도 요긴하게 씁니다.

⚠️ 플러그인 쓸 때 주의사항과 삽질 경험

좋은 것만 얘기하면 섭섭하죠. 실제로 겪은 문제들도 공유합니다.

PATH 충돌 문제

krew로 설치한 플러그인과 시스템에 직접 설치된 바이너리가 이름이 겹치면 예상치 못한 동작이 생길 수 있어요. 예를 들어 sternbrew로도 설치하고 krew로도 설치한 경우가 그렇습니다. which kubectl-stern으로 어느 경로가 우선인지 확인하는 습관을 들이세요.

플러그인 버전 업데이트 누락

krew로 설치한 플러그인은 자동 업데이트가 안 됩니다. 주기적으로 아래 명령어 실행해 주세요.

# 설치된 플러그인 목록 확인
kubectl krew list

# 전체 업데이트
kubectl krew upgrade

# krew 자체 업데이트
kubectl krew update

클러스터 권한 문제

일부 플러그인은 클러스터 전체를 조회하는 ClusterRole 권한이 필요합니다. 제한된 권한의 kubeconfig로 쓰다가 에러 나는 경우가 있어요. ⚠️ 권한 오류가 나면 플러그인 문제가 아니라 RBAC 권한 문제일 가능성이 높습니다. kubectl auth can-i로 먼저 확인해보세요.

# 특정 동작 권한 확인
kubectl auth can-i list pods -A
kubectl auth can-i get persistentvolumes
krew를 통한 kubectl 플러그인 설치 및 관리 워크플로우 다이어그램

krew를 통한 kubectl 플러그인 설치·업데이트·삭제 워크플로우. 플러그인 인덱스에서 검색하고, 설치 후 PATH를 통해 kubectl 서브커맨드로 동작하는 흐름입니다.

플러그인 비교 정리표

지금까지 소개한 플러그인을 한 눈에 비교해 봤습니다.

플러그인 krew 설치명 주요 기능 추천 상황
kubectx ctx 클러스터 컨텍스트 전환 멀티 클러스터 환경
kubens ns 네임스페이스 전환 네임스페이스 자주 변경시
stern stern 다중 파드 로그 스트리밍 마이크로서비스 디버깅
kubectl-neat neat YAML 정리·간소화 리소스 백업·마이그레이션
kubectl-tree tree 리소스 의존관계 시각화 Helm 배포 구조 파악
kubectl-whoami whoami 현재 인증 주체 확인 RBAC 트러블슈팅
kubectl-df-pv df-pv PV 용량 현황 조회 스토리지 모니터링
kubectl-images images 사용 중인 이미지 목록 보안 감사·버전 관리

✅ 한 번에 설치하는 스크립트

위에서 소개한 플러그인을 한 번에 설치하고 싶으시면 아래 스크립트 쓰시면 됩니다.

#!/bin/bash
# kubectl 필수 플러그인 일괄 설치

PLUGINS=(
  ctx
  ns
  stern
  neat
  tree
  whoami
  df-pv
  images
)

# krew 인덱스 업데이트
kubectl krew update

# 플러그인 설치
for plugin in "${PLUGINS[@]}"; do
  echo "Installing kubectl $plugin..."
  kubectl krew install "$plugin"
done

echo "\n✅ 모든 플러그인 설치 완료!"
kubectl krew list

자주 묻는 질문 (FAQ)

Q. krew 없이도 플러그인 설치할 수 있나요?

네, 가능합니다. 플러그인 바이너리를 직접 다운로드해서 kubectl-플러그인이름 형태로 이름 짓고 $PATH에 있는 디렉토리에 넣으면 됩니다. 다만 버전 관리가 번거로워서 krew를 쓰는 게 훨씬 편해요.

Q. 플러그인이 kubectl 버전과 호환이 안 될 수도 있나요?

드물지만 있습니다. 특히 쿠버네티스 API 버전이 크게 바뀌는 경우 플러그인이 업데이트되기 전까지 문제가 생길 수 있어요. kubectl krew upgrade로 최신 버전 유지하시고, 문제 생기면 해당 플러그인의 GitHub 이슈 트래커 확인해 보세요.

Q. 회사 보안 정책상 외부 플러그인 설치가 어려운데요?

이 경우엔 플러그인 소스코드를 직접 검토하고 내부 아티팩토리(Artifactory) 같은 내부 저장소를 통해 배포하는 방식을 쓰는 팀도 있어요. krew도 커스텀 인덱스를 지원하니 내부 인덱스를 구축하는 것도 방법입니다.

kubectl 생산성 향상을 위한 필수 플러그인 8종 요약 인포그래픽

kubectl 생산성을 높이는 필수 플러그인 8종 요약. 각 플러그인의 역할과 추천 상황을 한눈에 정리한 인포그래픽입니다.

마무리 — CLI 환경도 투자할 가치가 있습니다

사실 처음엔 "플러그인 설치하고 관리하는 것도 귀찮은 일 아닌가?" 싶었는데, 한 번 손에 익으면 그냥 기본 kubectl로 돌아가기가 싫어지더라고요. 특히 stern이랑 kubectx/kubens는 진짜 하루에도 수십 번씩 쓰고 있습니다.

홈랩에서 먼저 익히고 실무에 가져가는 방식을 추천드려요. 처음부터 프로덕션 클러스터에서 새 도구 쓰다가 실수하면 곤란하니까요 😅. 오늘 소개한 플러그인들은 조회 위주라 부작용 걱정은 크게 안 하셔도 됩니다.

다음 글에서는 kubectl 단축키 설정과 쉘 자동완성(shell completion) 세팅 방법을 다뤄볼 예정입니다. 플러그인이랑 함께 쓰면 생산성이 한 단계 더 올라가거든요. 기대해 주세요! 💡

혹시 제가 소개 못 한 플러그인 중에 여러분이 즐겨 쓰는 게 있으면 댓글로 알려주세요. 저도 계속 배우는 중이라 좋은 도구 있으면 바로 써보고 싶습니다 🙂