Kubernetes Pending Pod 완벽 가이드! Resource 부족과 Scheduling 실패 원인 분석하기

Kubernetes에서 Pod를 생성했지만 실행되지 않고 계속 Pending 상태로 남아있는 경우가 있습니다.

Pod가 Pending이라는 것은 Kubernetes API Server에는 생성되었지만 실제 Node에 배치되지 못한 상태를 의미합니다.

예:

Deployment 생성

Pod 생성

Scheduler 확인

적합한 Node 없음

Pending 상태 유지

Application 자체 오류가 아니라 Kubernetes Scheduler가 Pod를 실행할 위치를 찾지 못하는 상황입니다.

상태의미
PendingNode 배치 대기
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 구분
MonitoringResource 감시
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 ResourceCPU·Memory 확인
Affinity배치 조건 확인
PVCStorage 연결 확인

Pending Pod 분석 방법을 이해하면 Kubernetes Scheduling 문제를 빠르게 해결하고 안정적인 Cluster 운영 환경을 구축할 수 있습니다.

다음 글에서는 Kubernetes Network 장애 분석을 위한 Kubernetes Network Troubleshooting 완벽 가이드! Service·DNS·CNI 연결 문제 해결 방법 이해하기를 진행하겠습니다.

댓글 남기기