Kubernetes Pending Pod 완벽 가이드! Scheduling 실패 원인과 해결 방법 이해하기

Kubernetes에서 Application을 배포했는데 Pod가 실행되지 않고 계속 Pending 상태로 남아있는 경우가 있습니다.

많은 사용자가 Pending 상태를 보면 Container 문제라고 생각하지만, 실제로는 대부분 Pod가 실행될 Node를 찾지 못하는 Scheduling 문제입니다.

Kubernetes는 Pod를 생성할 때 자동으로 적절한 Worker Node를 선택합니다.

하지만 다음과 같은 상황에서는 Pod를 배치하지 못할 수 있습니다.

  • Node CPU·Memory 부족
  • Node 조건 불일치
  • Resource Request 초과
  • Storage 연결 실패
  • Taints와 Toleration 문제

이때 Pod는 Pending 상태가 됩니다.

상태의미
PendingPod 생성 요청 후 실행 Node 대기
RunningContainer 정상 실행
Failed실행 실패
Succeeded작업 완료

Kubernetes Pending Pod 문제를 이해하면 Scheduler 동작 방식과 실제 Production 환경에서 발생하는 배포 문제 해결 방법을 알 수 있습니다.

Kubernetes Pending Pod란 무엇인가?

Pending은 Kubernetes가 Pod 생성 요청을 받았지만 아직 실행할 Node를 찾지 못한 상태입니다.

동작 과정:

Deployment 생성

ReplicaSet 생성

Pod 생성

Scheduler 확인

Node 선택 실패

Pending 상태 유지

즉 Container가 시작되기 전 단계에서 발생하는 문제입니다.

Kubernetes Scheduler의 역할

Pending 문제를 이해하려면 Scheduler 구조를 알아야 합니다.

Scheduler는 생성된 Pod를 어떤 Node에서 실행할지 결정합니다.

구조:

API Server

Scheduler

Node 선택

kubelet 실행

Container 시작

Scheduler가 적절한 Node를 찾지 못하면 Pod는 Pending 상태가 됩니다.

Pending Pod 원인 1: Node Resource 부족

가장 흔한 원인입니다.

예:

Pod 요구 사항:

CPU Request: 4 Core

Memory Request: 8GB

현재 Node:

CPU 여유 부족

Memory 여유 부족

결과:

Scheduler:

“실행 가능한 Node 없음”

Pending

확인:

kubectl describe pod pod-name

Event:

Insufficient cpu
Insufficient memory

Resource 상태를 확인해야 합니다.

Kubernetes Resource Request와 Pending 관계

Scheduler는 실제 사용량이 아니라 Request 값을 기준으로 Node를 선택합니다.

예:

Pod A

CPU Request:

2 Core

Memory Request:

4GB

Node에 해당 Resource 공간이 없으면 실행되지 않습니다.

확인:

kubectl describe node node-name

Resource 설계가 중요합니다.

Pending Pod 원인 2: NodeSelector 조건 불일치

Pod가 특정 Node에서만 실행되도록 설정한 경우 문제가 발생할 수 있습니다.

예:

Pod 설정:

nodeSelector:
  gpu: true

하지만 Cluster:

GPU Label Node 없음

결과:

Scheduling 실패

확인:

kubectl get nodes --show-labels

Node Label을 확인해야 합니다.

Pending Pod 원인 3: Node Affinity 설정 문제

Affinity는 더 세밀한 Node 배치 조건을 제공합니다.

예:

조건:

SSD Storage Node에서 실행

해당 Node 없음

Pending

확인:

  • nodeAffinity
  • required 조건
  • preferred 조건

잘못된 Affinity 설정은 배포 실패 원인이 됩니다.

Pending Pod 원인 4: Taints와 Tolerations 문제

Kubernetes Node에는 Taint를 설정할 수 있습니다.

예:

Master Node:

NoSchedule Taint 적용

일반 Pod 실행 제한

Pod:

Toleration 없음

Scheduling 실패

확인:

kubectl describe node node-name

Taint 설정을 확인해야 합니다.

Pending Pod 원인 5: Persistent Volume 문제

Storage가 필요한 Pod는 Volume 연결 문제로 Pending 상태가 될 수 있습니다.

구조:

Pod 생성

PVC 요청

PV 검색

Storage 연결 실패

Pending

확인:

kubectl get pvc

StorageClass와 PV 상태를 확인합니다.

Pending Pod 원인 6: Scheduler 문제

Scheduler 자체 문제도 발생할 수 있습니다.

확인:

kubectl get pods -n kube-system

확인:

  • kube-scheduler 상태
  • Event 오류

Control Plane 상태 확인이 필요합니다.

Kubernetes Pending Pod 분석 순서

실제 운영에서는 다음 순서로 확인합니다.

1단계

Pod 상태 확인

kubectl get pods

2단계

Event 확인

kubectl describe pod pod-name

3단계

Node Resource 확인

kubectl describe nodes

4단계

Label / Affinity 확인

5단계

Storage 확인

문제를 단계별로 좁혀가는 방식이 중요합니다.

Kubernetes Scheduler Event 해석

자주 발생하는 메시지:

Event의미
Insufficient cpuCPU 부족
Insufficient memoryMemory 부족
No nodes available실행 Node 없음
didn’t match node selector조건 불일치
unbound immediate PersistentVolumeClaimsStorage 문제

Event는 Kubernetes 장애 분석에서 가장 중요한 정보입니다.

Pending Pod 해결 방법

원인에 따라 해결 방법이 다릅니다.

Resource 부족

해결:

  • Node 추가
  • Resource Request 조정
  • Cluster Autoscaler 적용

Label 문제

해결:

  • Node Label 수정
  • Selector 조건 변경

Storage 문제

해결:

  • PV 생성
  • StorageClass 확인

Taint 문제

해결:

  • Toleration 추가
  • Node 설정 변경

Pending Pod와 Cluster Autoscaler 관계

Cloud 환경에서는 Cluster Autoscaler와 함께 사용됩니다.

구조:

Pod Pending 발생

Node 부족 판단

Cluster Autoscaler 실행

Node 추가

Pod 실행

자동 Infrastructure 확장이 가능합니다.

Pending Pod 예방 방법

운영 환경에서는 사전 설계가 중요합니다.

항목방법
Resource 관리Request 정확히 설정
Node 관리충분한 Capacity 확보
Label 관리배치 조건 검토
MonitoringResource 감시

예측 가능한 운영 환경을 만들 수 있습니다.

Kubernetes Pending Pod와 Monitoring 관계

Monitoring 시스템을 사용하면 Resource 부족을 미리 확인할 수 있습니다.

확인:

  • CPU 사용량
  • Memory 사용량
  • Node 상태
  • Scheduling 실패

장애 발생 전에 대응할 수 있습니다.

자주 묻는 질문

Pending 상태는 Application 오류인가요?

대부분 Application 문제가 아니라 Scheduler가 실행 위치를 찾지 못하는 문제입니다.

Pod를 삭제하면 Pending이 해결되나요?

원인이 해결되지 않으면 다시 Pending 상태가 됩니다.

가장 먼저 확인해야 하는 명령어는 무엇인가요?

kubectl describe pod 명령어로 Event를 확인하는 것이 가장 빠릅니다.

마무리

Kubernetes Pending Pod는 Scheduler가 적절한 Node를 찾지 못했을 때 발생하는 대표적인 운영 문제입니다.

확인 항목목적
Pod Event원인 확인
Node ResourceCPU·Memory 확인
Label/Affinity배치 조건 확인
PVCStorage 문제 확인

Pending Pod 분석 방법을 이해하면 Kubernetes 환경에서 배포 실패 원인을 빠르게 찾고 안정적인 Production 운영 환경을 구축할 수 있습니다.

다음 글에서는 Kubernetes Resource 부족 문제를 다루는 Kubernetes Resource Request 완벽 가이드! Scheduler 배치 기준과 CPU·Memory 관리 구조 이해하기를 알아보겠습니다.

댓글 남기기