☸️ Kubectl Cheat Sheet: 기초부터 실무 레전드 명령어까지
기존에 기록해두었던 기본적인 kubectl 명령어를 기반으로, 실제 운영 및 트러블슈팅 환경에서 바로 꺼내 쓸 수 있도록 가독성과 내용을 대폭 업그레이드한 치트시트(Cheat Sheet)입니다.
실무에서 자주 쓰이는 옵션, 출력 포맷 변경(-o wide, -o yaml), 꿀팁 명령어들을 카테고리별로 체계화했습니다.
1. 클러스터 탐색 및 오브젝트 정의 확인
클러스터의 자원 종류를 파악하고, YAML 스펙 작성을 위해 구조를 조회할 때 유용합니다.
| 명령어 | 설명 | 비고 |
| kubectl api-resources | 클러스터에서 지원하는 모든 오브젝트 목록 조회 | 숏컷(Shortname) 확인 가능 |
| kubectl explain pod | Pod 오브젝트의 구조와 상위 필드 설명 확인 | |
| kubectl explain deployment | Deployment 오브젝트의 구조 및 설명 확인 | |
| kubectl explain pod.spec.containers | Pod 내 컨테이너 설정 항목들의 상세 속성 확인 | [추천] YAML 작성 시 유용 |
2. 클러스터 노드 및 인프라 상태 조회
클러스터를 구성하는 노드의 상태와 리소스 여유 공간을 빠르게 모니터링합니다.
| 명령어 | 설명 | 비고 |
| kubectl get nodes | 클러스터 전체 노드 목록 조회 | |
| kubectl get nodes -o wide | 노드의 Internal/External IP, OS, 커널 버전 포함 조회 | [업그레이드] |
| kubectl top node | 각 노드의 CPU, Memory 실시간 사용량 확인 | Metrics Server 필요 |

3. 오브젝트 생성, 변경 및 편집 (Declarative vs Imperative)
선언형(YAML) 방식과 명령형 방식을 아우르는 오브젝트 관리 명령어입니다.
| 명령어 | 설명 | 비고 |
| kubectl apply -f deployment.yaml | 파일에 정의된 대로 오브젝트 생성 및 변경 사항 반영 | 선언형 방식 핵심 |
| kubectl diff -f deployment.yaml | 현재 실행 중인 오브젝트와 로컬 YAML 파일의 차이점 비교 | 실운영 배포 전 필수 체크 |
| kubectl edit deployment/hello-deployment | 실행 중인 배포 자원을 텍스트 에디터로 즉시 편집 및 적용 | 에디터 환경 실행 |
| kubectl scale -f deployment.yaml --replicas=3 | 파일 기준 오브젝트의 Replicas(배포 개수)를 3개로 조정 | |
| kubectl scale deployment/hello-deployment --replicas=5 | 특정 배포명을 지정하여 즉시 스케일 아웃 | [업그레이드] |
4. 자원 조회 및 모니터링 (Get & Describe)
실행 중인 자원의 상태를 실시간으로 모니터링하고 상세 스펙을 추적합니다.
| 명령어 | 설명 | 비고 |
| kubectl get pods | 현재 네임스페이스의 Pod 목록 조회 | |
| kubectl get pods -o wide | Pod의 할당된 IP와 실행 중인 노드 정보까지 포함 조회 | [추천] |
| kubectl get pods -w | Pod의 상태 변화를 실시간으로 감시 (Watch 모드) | [업그레이드] |
| kubectl get all | Pod, Service, Deployment, ReplicaSet 등 전체 자원 일괄 조회 | 현재 NS 기준 |
| kubectl describe pod/<pod-name> | 특정 Pod의 상세 상태, 변경 이력 및 Event 로그 확인 | 트러블슈팅 1단계 |
5. 트러블슈팅 및 로그 분석 (Logs & Execute)
애플리케이션 장애나 컨테이너 내부 상태를 점검할 때 가장 많이 쓰이는 명령어입니다.
| 명령어 | 설명 | 비고 |
| kubectl logs deployment/hello-deployment -c nginx | 특정 디플로이먼트 내 nginx 컨테이너의 로그 출력 | |
| kubectl logs deployment/hello-deployment -c nginx -f | 로그를 실시간으로 계속 출력 (Stream/Watch 모드) | Ctrl + C로 종료 |
| kubectl logs -l app=hello --tail=100 -f | 레이블(app=hello) 기준 컨테이너들의 최신 로그 100줄 실시간 확인 | [실무 추천] Pod가 여러 개일 때 |
| kubectl exec -it <pod-name> -c nginx -- /bin/sh | 실행 중인 컨테이너 내부 셸(Shell)에 대화형으로 접속 | [업그레이드] |
| kubectl attach deployment/hello-deployment -c nginx | 실행 중인 컨테이너 프로세스에 Standard Attach 접속 |
6. 네트워크 및 포트 포워딩
외부 노출 없이 로컬 환경에서 클러스터 내부의 서비스에 접근하여 테스트할 때 사용합니다.
| 명령어 | 설명 | 비고 |
| kubectl port-forward pod/<pod-name> 8080:80 | 로컬 PC의 8080 포트를 Pod의 80 포트로 포워딩 | 대화형 유지 필요 |
| kubectl port-forward svc/hello-service 8080:80 | Pod 대신 Service 오브젝트를 타겟으로 포트 포워딩 | [실무 추천] 세션 유지가 안정적 |
반응형
💡 실무 생산성을 높이는 kubectl 꿀팁 (Cheat)
1. 자주 쓰는 네임스페이스 고정하기
매번 명령어 뒤에 -n <namespace>를 붙이기 번거롭다면, 현재 컨텍스트의 기본 네임스페이스를 고정해두면 좋습니다.
Bash
kubectl config set-context --current --namespace=<원하는-네임스페이스명>
2. 타자 속도를 줄여주는 Alias 설정 (.bashrc 또는 .zshrc)
Bash
alias k='kubectl'
complete -o default -F __start_kubectl k # k 입력 시에도 자동완성 지원
3. YAML 파일 템플릿 빠르게 만들기 (Dry-run)
직접 처음부터 YAML을 타이핑하지 말고, 명령형 구문 뒤에 --dry-run=client -o yaml을 붙여서 뼈대를 빠르게 생성하세요.
Bash
# Pod 생성 템플릿 파일 뽑기
kubectl run my-pod --image=nginx --dry-run=client -o yaml > pod-template.yaml
# Deployment 생성 템플릿 파일 뽑기
kubectl create deployment my-deploy --image=nginx --replicas=3 --dry-run=client -o y
반응형
댓글