Kubernetes에서 Pod를 생성했지만 실행되지 않고 계속 Pending 상태로 남아있는 경우가 있습니다.
Pod가 Pending이라는 것은 Kubernetes API Server에는 생성되었지만 실제 Node에 배치되지 못한 상태를 의미합니다.
예:
Deployment 생성
↓
Pod 생성
↓
Scheduler 확인
↓
적합한 Node 없음
↓
Pending 상태 유지
Application 자체 오류가 아니라 Kubernetes Scheduler가 Pod를 실행할 위치를 찾지 못하는 상황입니다.
| 상태 | 의미 |
|---|---|
| Pending | Node 배치 대기 |
| Running | 정상 실행 |
| Failed | 실행 실패 |
| Succeeded | 정상 종료 |
Pending Pod 문제를 이해하면 Resource 부족, Node 조건 문제, Scheduling 정책 오류를 분석하고 해결할 수 있습니다.
Kubernetes Pending Pod란?
Pending은 Pod Lifecycle의 초기 상태입니다.
정상적인 경우:
Pod 생성
↓
Scheduler 선택
↓
Node 배치
↓
Container 실행
하지만 문제가 발생하면:
Pod 생성
↓
Scheduler 배치 실패
↓
Pending 유지
상태가 계속됩니다.
Kubernetes Pod Scheduling 동작 구조
Pod가 실행되는 과정:
User
↓
kubectl apply
↓
API Server
↓
Scheduler
↓
Node 선택
↓
kubelet
↓
Container 실행
Pending 문제는 대부분 Scheduler 단계에서 발생합니다.
Kubernetes Pending Pod 주요 원인
대표 원인:
| 원인 | 설명 |
|---|---|
| CPU 부족 | Node Resource 부족 |
| Memory 부족 | 사용 가능한 Memory 부족 |
| Node Selector 오류 | 조건 맞는 Node 없음 |
| Taint 문제 | 배치 제한 |
| Affinity 오류 | Node 조건 불일치 |
| PVC 문제 | Storage 연결 실패 |
Scheduler 조건을 확인해야 합니다.
Kubernetes Resource 부족 문제
가장 흔한 원인입니다.
상황:
Pod Request:
CPU 4 Core
Memory 8GB
하지만:
Node 사용 가능:
CPU 2 Core
Memory 4GB
결과:
Scheduler 배치 불가
↓
Pending 발생
확인:
kubectl describe pod pod-name
Event:
Insufficient cpu
Resource 상태를 확인해야 합니다.
Kubernetes Resource Request와 Scheduling 관계
Scheduler는 Resource Request 기준으로 Node를 선택합니다.
구조:
Pod Request
↓
Scheduler 계산
↓
Node Capacity 확인
↓
배치 결정
중요:
실제 사용량이 아니라 Request 기준입니다.
Kubernetes Node 상태 확인
Node 상태 확인:
kubectl get nodes
Resource 확인:
kubectl describe node node-name
확인:
- CPU Capacity
- Memory Capacity
- Allocatable Resource
Node 여유 공간을 확인합니다.
Kubernetes NodeSelector 문제
Pod가 특정 Node만 선택하도록 설정할 수 있습니다.
예:
nodeSelector:
disktype: ssd
문제:
해당 Label이 있는 Node 없음
↓
Scheduler 배치 실패
↓
Pending 발생
확인:
kubectl get nodes --show-labels
Label 조건을 확인해야 합니다.
Kubernetes Node Affinity 문제
Affinity는 더 세밀한 Node 선택 조건입니다.
예:
특정 Region Node
↓
Pod 실행
하지만:
조건 만족 Node 없음
↓
Pending
Affinity 설정을 검토해야 합니다.
Kubernetes Taint와 Toleration 문제
Taint가 있는 Node는 기본적으로 Pod 배치를 막습니다.
구조:
Node
↓
Taint 설정
↓
Pod 배치 제한
해결:
Pod
↓
Toleration 추가
예:
Control Plane Node에 Application 배치 시 사용됩니다.
Kubernetes Pod Anti-Affinity 문제
Anti-Affinity는 같은 Node에 Pod가 몰리는 것을 방지합니다.
예:
Database Replica
↓
서로 다른 Node 배치
하지만:
사용 가능한 Node 부족
↓
Pending 발생
고가용성 구성에서 자주 발생합니다.
Kubernetes PVC Pending 문제
Storage 문제도 Pod Pending 원인이 됩니다.
구조:
Pod
↓
PVC 요청
↓
PV 연결 실패
↓
Pod Pending
확인:
kubectl get pvc
StorageClass와 PV 상태를 확인합니다.
Kubernetes Scheduler Event 확인 방법
Pending 원인은 Event에 표시됩니다.
확인:
kubectl describe pod pod-name
예:
Events:
FailedScheduling
0/3 nodes available
Scheduler 판단 결과를 확인할 수 있습니다.
Kubernetes Pending Pod 해결 순서
실제 운영 대응:
1단계
Pod 상태 확인
kubectl get pods
↓
2단계
Event 확인
kubectl describe pod
↓
3단계
Node Resource 확인
kubectl describe node
↓
4단계
Scheduling 조건 확인
↓
5단계
Resource 또는 Policy 수정
원인을 해결합니다.
Kubernetes Pending Pod 예방 방법
Production 환경에서는:
| 항목 | 방법 |
|---|---|
| Resource 관리 | Request 정확 설정 |
| Node 확장 | Cluster Autoscaler 활용 |
| Label 관리 | 명확한 Node 구분 |
| Monitoring | Resource 감시 |
| Capacity 계획 | Traffic 예측 |
사전 설계가 중요합니다.
Kubernetes Pending Pod와 Cluster Autoscaler 관계
Cloud 환경에서는 자동 해결이 가능합니다.
구조:
Pod Pending
↓
Node 부족 감지
↓
Cluster Autoscaler 실행
↓
Node 추가
↓
Pod Scheduling
Cloud Native 환경의 핵심 기능입니다.
Kubernetes Pending Pod와 Production 운영
대규모 Cluster에서는 Scheduling 전략이 중요합니다.
고려:
- Node Pool 분리
- Resource 예약
- Priority 설정
- Affinity 정책
서비스 중요도에 따라 배치 전략을 설계합니다.
Kubernetes Pending Pod 장점 있는 관리 구조
정상 운영 구조:
Monitoring
↓
Resource 분석
↓
Capacity 계획
↓
Autoscaling
↓
안정적 Scheduling
예측 가능한 운영 환경을 만들 수 있습니다.
자주 묻는 질문
Pending 상태면 Application 오류인가요?
아닙니다.
대부분 Node 배치 또는 Resource 문제입니다.
Pod를 삭제하면 해결되나요?
Resource나 Scheduling 조건이 해결되지 않으면 다시 Pending 됩니다.
가장 먼저 확인해야 하는 명령어는 무엇인가요?
kubectl describe pod에서 Event를 확인하는 것이 가장 빠릅니다.
마무리
Kubernetes Pending Pod는 Pod가 생성되었지만 적절한 Node에 배치되지 못하는 상태입니다.
| 확인 항목 | 역할 |
|---|---|
| Scheduler Event | 배치 실패 원인 확인 |
| Node Resource | CPU·Memory 확인 |
| Affinity | 배치 조건 확인 |
| PVC | Storage 연결 확인 |
Pending Pod 분석 방법을 이해하면 Kubernetes Scheduling 문제를 빠르게 해결하고 안정적인 Cluster 운영 환경을 구축할 수 있습니다.
다음 글에서는 Kubernetes Network 장애 분석을 위한 Kubernetes Network Troubleshooting 완벽 가이드! Service·DNS·CNI 연결 문제 해결 방법 이해하기를 진행하겠습니다.