문서 목차
QKS · Workloads
Pods
Pod 는 Kubernetes에서 가장 작은 배포 단위입니다. 하나 이상의 컨테이너가 동일한 네트워크 네임스페이스와 스토리지를 공유하며, 항상 같은 노드에서 함께 실행됩니다.
QUANTUM C&S
개요
Pod는 Kubernetes에서 가장 작은 배포 단위입니다. 하나 이상의 컨테이너가 동일한 네트워크 네임스페이스와 스토리지를 공유하며, 항상 같은 노드에서 함께 실행됩니다.
대부분의 경우 Pod를 직접 생성하지 않고, Deployment나 StatefulSet 같은 상위 오브젝트를 통해 관리합니다. 직접 생성한 Pod는 삭제되면 자동으로 재생성되지 않습니다.
QKS 콘솔에서 파드 확인
- 왼쪽 메뉴에서 Workloads > Pods를 선택합니다.
- 네임스페이스를 선택하면 파드 목록이 표시됩니다.
목록에서 확인할 수 있는 정보:
- 이름: Pod 이름
- 상태: Running / Pending / Failed 등
- 실행 노드: 어느 노드에서 실행 중인지
- 재시작 횟수: 컨테이너 재시작 횟수 (높으면 문제 징후)
- 생성 시간
파드 상태
| 상태 | 설명 | 조치 |
|---|---|---|
Running |
정상 실행 중 | — |
Pending |
스케줄링 대기 또는 이미지 다운로드 중 | 노드 리소스 확인 |
Succeeded |
모든 컨테이너가 정상 종료 | — |
Failed |
하나 이상의 컨테이너가 오류로 종료 | 로그 확인 |
CrashLoopBackOff |
컨테이너가 반복 재시작 중 | 로그, 환경 변수 확인 |
ImagePullBackOff |
이미지를 가져오는 데 실패 | 이미지 이름, 레지스트리 접근 확인 |
OOMKilled |
메모리 한도 초과로 강제 종료 | 메모리 limit 조정 |
Evicted |
노드 리소스 부족으로 퇴출됨 | 노드 리소스 확인 |
파드 상세 정보
파드 이름을 클릭하면 다음 정보를 확인할 수 있습니다:
- 컨테이너 목록: 이미지, 상태, 포트
- 리소스: CPU/메모리 요청량 및 제한량
- 환경 변수: 설정된 환경 변수 목록
- 볼륨 마운트: 마운트된 볼륨 목록
- 이벤트 로그: 스케줄링, 이미지 풀, 시작/종료 이벤트
kubectl로 관리
파드 조회
# 전체 네임스페이스 파드 목록
kubectl get pods -A
# 특정 네임스페이스 파드 목록
kubectl get pods -n <namespace>
# 파드 상세 정보 (이벤트 포함)
kubectl describe pod <pod-name> -n <namespace>
# 파드 상태 실시간 모니터링
kubectl get pods -n <namespace> -w
파드 로그 확인
# 로그 출력
kubectl logs <pod-name> -n <namespace>
# 실시간 로그 스트리밍
kubectl logs -f <pod-name> -n <namespace>
# 이전 컨테이너(재시작 전)의 로그
kubectl logs <pod-name> -n <namespace> --previous
# 멀티 컨테이너 파드에서 특정 컨테이너 로그
kubectl logs <pod-name> -c <container-name> -n <namespace>
파드 내부 접속
kubectl exec -it <pod-name> -n <namespace> -- /bin/sh
# bash가 있는 경우
kubectl exec -it <pod-name> -n <namespace> -- /bin/bash
파드 삭제
# 파드 삭제 (Deployment 관리 하에 있으면 자동 재생성됨)
kubectl delete pod <pod-name> -n <namespace>
# 강제 삭제 (정상 삭제가 되지 않을 때)
kubectl delete pod <pod-name> -n <namespace> --force --grace-period=0
트러블슈팅
CrashLoopBackOff
컨테이너가 시작 후 반복적으로 종료되는 상태입니다.
# 로그 확인 (현재)
kubectl logs <pod-name> -n <namespace>
# 이전 재시작 로그 확인
kubectl logs <pod-name> -n <namespace> --previous
# 이벤트 확인
kubectl describe pod <pod-name> -n <namespace>
일반적인 원인:
- 애플리케이션 시작 오류 (설정 파일, 환경 변수 누락)
- 데이터베이스 연결 실패
- 메모리 부족 (OOMKilled)
Pending 상태
kubectl describe pod <pod-name> -n <namespace>
# Events 섹션의 메시지 확인
일반적인 원인:
- 노드 리소스(CPU, 메모리) 부족
- GPU 리소스 요청 시 GPU 노드 풀이 없거나 GPU가 이미 모두 사용 중
- Node Selector 또는 Affinity 조건을 만족하는 노드 없음