본문 바로가기
Devops·아키텍처/Kubernetes

Kubectl Cheat Sheet: 기초부터 실무 레전드 명령어까지

by 플로거 2024. 7. 1.

☸️ 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
반응형

댓글