개발 창고/Server

kubectl 명령어 꿀팁 모음: 실전에서 바로 써먹는 노하우

Royzero 2025. 7. 18. 22:00
반응형

들어가며

쿠버네티스를 다룰 때 가장 많이 접하게 되는 도구가 바로 kubectl입니다.
기본 명령어에 익숙해졌다면 이제는 더 빠르고 편리하게 작업하는 방법을 익힐 차례입니다.

이번 포스트에서는 실무에서 유용한 kubectl 명령어 활용 팁들을 정리했습니다.

  • 실수 방지하는 방법
  • 반복작업 자동화
  • 짧고 강력한 단축 명령어 사용법
  • 고급 조회 방법

등 다양한 팁을 예제와 함께 소개합니다.


1. 자동완성(Auto Completion) 활성화

Bash 사용자

source <(kubectl completion bash)

추가로 .bashrc에 아래 라인을 넣어두면 영구 적용됩니다:

echo "source <(kubectl completion bash)" >> ~/.bashrc

Zsh 사용자

echo "source <(kubectl completion zsh)" >> ~/.zshrc

2. alias로 명령어 짧게 쓰기

kubectl은 너무 길다? 단축키로 만들면 됩니다.

alias k=kubectl

또는 자주 쓰는 명령어 묶음도 별칭 등록:

alias kgp="kubectl get pods"
alias kaf="kubectl apply -f"
alias kdp="kubectl describe pod"

.zshrc 또는 .bashrc에 등록해두면 영구 적용됩니다.


3. 네임스페이스 생략 없이 쓰기

-n 옵션 매번 쓰기 귀찮다면?

kubectl config set-context --current --namespace=dev

이후부터는 아래처럼 간단히 쓸 수 있습니다:

kubectl get pods     # == kubectl get pods -n dev

4. watch와 함께 실시간 모니터링

리소스 상태 변화를 실시간으로 확인하고 싶다면 --watch를 붙이세요.

kubectl get pods --watch

또는 특정 리소스에 이벤트 변화 감시:

kubectl get events --watch

5. wide 옵션으로 IP, 노드 정보까지 보기

kubectl get pods -o wide

추가로 출력되는 정보:

  • Pod이 실행되는 노드 이름
  • Pod IP
  • 컨테이너 이미지

6. yaml/json 출력으로 구조 확인

YAML 출력

kubectl get pod mypod -o yaml

JSON 출력

kubectl get pod mypod -o json

필요한 값만 jq로 뽑기

kubectl get pod mypod -o json | jq '.spec.containers[].image'

7. context 전환 팁

여러 개의 클러스터(context)를 사용할 때 유용합니다.

kubectl config get-contexts
kubectl config use-context my-cluster

현재 context 확인:

kubectl config current-context

8. 자주 쓰는 리소스 템플릿 생성

dry-run으로 yaml 생성

kubectl create deployment myapp --image=nginx --dry-run=client -o yaml > myapp.yaml

명령어로 생성만 하지 않고, yaml 형태로 출력해서 수정/관리할 수 있습니다.


9. grep, awk, jq와 함께 쓰기

kubectl은 단독으로도 강력하지만, shell 도구와 함께 쓰면 더 강력해집니다.

예: CrashLoopBackOff 상태인 파드만 보기

kubectl get pods --all-namespaces | grep CrashLoopBackOff

예: 특정 이미지 사용하는 파드 찾기

kubectl get pods -o json | jq '.items[] | select(.spec.containers[].image | contains("nginx")) | .metadata.name'

10. 리소스 일괄 삭제 (label 기반)

kubectl delete는 label 셀렉터와 함께 쓰면 매우 유용합니다.

kubectl delete pods -l app=myapp

같은 라벨을 가진 리소스를 한 번에 제거할 수 있습니다.


11. 리소스 상태 조건 필터링

--field-selector 사용:

kubectl get pods --field-selector status.phase=Running

지금 실행 중인 파드만 필터링됩니다.


12. rollout 상태 보기 & 되돌리기

상태 보기

kubectl rollout status deployment/myapp

되돌리기

kubectl rollout undo deployment/myapp

13. diff로 적용 전 변경점 확인

kubectl diff -f deployment.yaml

apply 전에 어떤 변경이 발생하는지 확인할 수 있는 매우 유용한 기능입니다.


14. 꼭 기억해야 할 실전 명령어 요약

목적 명령어
자동완성 source <(kubectl completion bash/zsh)
별칭 등록 alias k=kubectl
네임스페이스 설정 kubectl config set-context --current --namespace=dev
yaml 미리 생성 kubectl create deployment --dry-run=client -o yaml
리소스 감시 kubectl get pods --watch
실행 중인 파드 필터 kubectl get pods --field-selector status.phase=Running
rollout 되돌리기 kubectl rollout undo deployment/myapp
변경 사항 확인 kubectl diff -f file.yaml

마무리

kubectl은 단순한 CLI 도구를 넘어서, 쿠버네티스를 통제하는 손과 발입니다.
이번 시간에 소개한 팁들을 잘 익혀두면 운영 중 실수도 줄이고, 반복 작업도 훨씬 효율적으로 처리할 수 있습니다.

반응형