들어가며
쿠버네티스를 다룰 때 가장 많이 접하게 되는 도구가 바로 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 도구를 넘어서, 쿠버네티스를 통제하는 손과 발입니다.
이번 시간에 소개한 팁들을 잘 익혀두면 운영 중 실수도 줄이고, 반복 작업도 훨씬 효율적으로 처리할 수 있습니다.
'개발 창고 > Server' 카테고리의 다른 글
Pod 라벨링 시스템 이해하기: 왜 Kubernetes에서 라벨이 중요한가? (3) | 2025.07.20 |
---|---|
핵심 리소스, Pod: 쿠버네티스 기본 단위 이해하기 (3) | 2025.07.19 |
kubectl 기본명령어: 쿠버네티스 제어의 시작 (6) | 2025.07.17 |
Kubernetes 설치하기: 내 손으로 클러스터 만들기 (3) | 2025.07.16 |
Kubernetes의 장점: 왜 쿠버네티스를 써야 할까? (4) | 2025.07.15 |