쿠버네티스(Kubernetes) 클러스터 운영 및 앱 배포, 디버깅 시 일상적으로 자주 쓰이는 필수 kubectl 명령어 모음집입니다.
1. 클러스터 및 컨텍스트(Context) 정보 확인 컨텍스트 및 네임스페이스 설정 # 현재 연결된 클러스터 정보 확인 kubectl cluster-info # Kubeconfig 컨텍스트 목록 조회 kubectl config get-contexts # 현재 활성화된 컨텍스트 확인 kubectl config current-context # 컨텍스트 전환 kubectl config use-context my-cluster-context # 현재 컨텍스트의 기본 네임스페이스 변경 kubectl config set-context --current --namespace=my-namespace 2. 리소스 조회 및 상세 상태 확인 (Get & Describe) 기본 리소스 목록 조회 (kubectl get) # 특정 네임스페이스의 포드(Pod) 목록 조회 kubectl get pods # 모든 네임스페이스의 포드 조회 (-A 또는 --all-namespaces) kubectl get pods -A # IP, 노드 위치 등 추가 정보를 포함하여 조회 (-o wide) kubectl get pods -o wide # 다양한 리소스 목록 동시에 조회 kubectl get pods,svc,deploy -n default # 모든 주요 리소스 요약 조회 kubectl get all -n default # YAML 또는 JSON 형식으로 출력 kubectl get pod my-pod -o yaml kubectl get deploy my-deploy -o json 주요 리소스 단축어 매핑 리소스 이름 단축어 설명 pods po 파드 deployments deploy 디플로이먼트 services svc 서비스 namespaces ns 네임스페이스 persistentvolumeclaims pvc 영구 볼륨 요청 configmaps cm 컨피그맵 secrets secret 시크릿 리소스 상세 정보 및 이벤트 분석 (kubectl describe) # 포드 상세 정보 및 이벤트(Event) 확인 (배포 실패, OOM, ImagePullBackOff 원인 분석) kubectl describe pod my-pod # 노드 상세 정보 및 리소스 할당 현황 확인 kubectl describe node worker-node-1 # 서비스 엔드포인트 및 레이블 설정 상세 확인 kubectl describe svc my-service 3. 리소스 생성 / 수정 / 삭제 (Apply, Edit, Delete) YAML 선언형 리소스 관리 # 매니페스트(YAML) 파일 적용/업데이트 kubectl apply -f deployment.yaml # 디렉토리 내의 모든 YAML 파일 적용 kubectl apply -f ./manifests/ # 선언된 리소스 삭제 kubectl delete -f deployment.yaml 리소스 직접 수정 및 삭제 # 실행 중인 리소스의 YAML을 에디터로 즉시 수정 kubectl edit deployment my-deploy # 특정 리소스 직접 삭제 kubectl delete pod my-pod kubectl delete deployment my-deploy -n default # 강제 포드 삭제 (Terminating 상태에 갇혔을 때) kubectl delete pod my-pod --grace-period=0 --force 명령형(Imperative) 리소스 생성 (테스트용) # 네임스페이스 생성 kubectl create namespace dev # 빠른 테스트용 포드 생성 kubectl run nginx-test --image=nginx:alpine # 빠른 디플로이먼트 생성 kubectl create deployment web-app --image=nginx --replicas=3 4. 디버깅 및 트러블슈팅 (Logging & Exec) 로그 확인 (kubectl logs) # 포드 로그 조회 kubectl logs my-pod # 실시간 로그 스트리밍 (-f) kubectl logs -f my-pod # 최근 100줄 출력 후 실시간 감시 kubectl logs --tail=100 -f my-pod # 멀티 컨테이너 포드에서 특정 컨테이너 로그 지정 (-c) kubectl logs -f my-pod -c app-container # 이전(재시작 전 Crash 발생) 컨테이너 로그 확인 (--previous) kubectl logs my-pod --previous # 특정 라벨을 가진 모든 포드의 로그 합쳐서 확인 (-l) kubectl logs -f -l app=web-app 컨테이너 내부 접속 및 명령 실행 (kubectl exec) # 포드 내부 대화형 터미널 접속 kubectl exec -it my-pod -- /bin/bash kubectl exec -it my-pod -- /bin/sh # 접속 없이 명령 단발성 실행 kubectl exec my-pod -- env 포트 포워딩 (kubectl port-forward) # 로컬 8080 포트를 포드의 80 포트로 바인딩하여 로컬 접근 테스트 kubectl port-forward pod/my-pod 8080:80 # 로컬 8080 포트를 서비스로 포워딩 kubectl port-forward svc/my-service 8080:80 자원 사용량 모니터링 (kubectl top) # 노드별 CPU/메모리 사용량 확인 (Metrics Server 필요) kubectl top nodes # 포드별 CPU/메모리 사용량 확인 kubectl top pods -n default --sort-by=cpu 5. 디플로이먼트 & 스케일링 & 롤아웃 관리 스케일링 (스케일 인/아웃) # 파드 개수 변경 (Replicas 조정) kubectl scale deployment my-deploy --replicas=5 롤아웃(Rollout) 및 롤백(Rollback) # 배포 진행 상태 확인 kubectl rollout status deployment/my-deploy # 배포 이력(히스토리) 확인 kubectl rollout history deployment/my-deploy # 이전 버전으로 배포 롤백 kubectl rollout undo deployment/my-deploy # 특정 히스토리 버전을 지정하여 롤백 kubectl rollout undo deployment/my-deploy --to-revision=2 # 포드 일괄 재시작 (무중단 롤링 업데이트 재배포) kubectl rollout restart deployment/my-deploy 6. 노드 점검 및 스케줄링 제어 # 노드에 스케줄링 중단 설정 (유지보수 모드) kubectl cordon worker-node-1 # 노드 스케줄링 재개 kubectl uncordon worker-node-1 # 노드의 모든 파드를 다른 노드로 이주(Evict) 후 안전 비우기 kubectl drain worker-node-1 --ignore-daemonsets --delete-emptydir-data 7. 유용한 팁 & 템플릿 템플릿(Dry-run) 생성 YAML 템플릿 초안 빠르게 뽑아내기 (--dry-run=client -o yaml) # 실행 없이 Pod 템플릿 YAML 출력 kubectl run my-pod --image=nginx --dry-run=client -o yaml > pod.yaml # Deployment 템플릿 YAML 생성 kubectl create deployment my-app --image=nginx:alpine --replicas=3 --dry-run=client -o yaml > deploy.yaml # Service 템플릿 YAML 생성 kubectl expose deployment my-app --port=80 --target-port=8080 --type=ClusterIP --dry-run=client -o yaml > svc.yaml 단축어 설정 (.bashrc 또는 .zshrc) # kubectl 단축어 k 등록 및 자동완성 설정 alias k='kubectl' complete -o default -F __start_kubectl k 추천 서드파티 도구 kubectx / kubens: 클러스터 컨텍스트 및 네임스페이스를 한 줄 명령어로 빠르게 전환하는 CLI 툴 k9s: 터미널 기반의 훌륭한 쿠버네티스 대시보드 UI 툴 마무리 쿠버네티스 리소스 트러블슈팅 시 kubectl get -> describe -> logs -> exec 흐름을 익혀두면 대부분의 장애 원인을 신속하게 파악할 수 있습니다!
...