1. POD FAILED 현상
- OOMKilled / Memory cgroup 초과
- Evicted(DiskPressure/EphemeralStorage/MemoryPressure)
- DeadlineExceeded (Job activeDeadlineSeconds 초과)
- Exit code ≠ 0 (프로세스 조기 종료, entrypoint 오타, 권한 문제)
2. POD FAILED 해결 방안
- OOMKilled: 🧭 resources.requests/limits 합리화, 메모리 leak 점검, VPA/HPA 도입, GC/힙 옵션 조정
- Evicted: 노드 DiskPressure해소(이미지/컨테이너/워킹디렉 정리), ephemeral-storage requests/limits 및 emptyDir.sizeLimit 설정, 노드풀 디스크/사이즈 증설
- Job 실패: backoffLimit, activeDeadlineSeconds, 재시도 간격 재설계. 반복 실패면 InitContainer로 프리체크, 종속 서비스 준비(health/endpoint) 확인
- Exit code ≠ 0 : 권한·엔트리포인트: securityContext, command/args 검증, 실행 비사용자(shell) 문제 해결
3. BackOff 계열(CrashLoopBackOff, ImagePullBackOff, ErrImagePull 등등..)
- CrashLoopBackOff
a. 원인 : 어플리케이션 예외/의존 미준비/잘못된 CMD, liveness probe 오탐 등
b. 대응방법 :
- Startup, Readness, Liveness Probe 분리
- InitContainer로 의존 리소스(DB 등) 준비 확인
- 애플리케이션 종료 신호 처리(SIGTERM)와 graceful shutdown 구성 - ImagePullBackOff / ErrImagePull
a. 원인 : 레지스트리 인증, 네트워크 혹은 이미지 태그 오타
b. 대응방법 :
- ACR 사용 시 AKS-ACR 연결(Managed Identity attach-acr), 또는 imagePullSecrets 설정
- 프록시/NSG/DNS 확인, 사설 레지스트리면 프라이빗 엔드포인트/방화벽 예외
- 태그 고정(immutable), imagePullPolicy: IfNotPresent 적절히 사용 - CreateContainerConfigError / CreateContainerError
a. pod pending과 동일한 대응을 통해 예방 가능
4. (추가) Nodegroup Scale-in시 고려할 Pod Lifecycle 설정
- Scale-in 시 연결 드레이닝, 데이터 무결성 보장이 중요합니다.
- 핵심 체크리스트는 아래와 같습니다.
- Pod Disruption Budget(PDB): 과도한 동시 축출 방지Copy
- preStop hook + terminationGracePeriodSecondsCopy
-> preStop에서 LB 등록 헤제/세션 종료/큐 flush
-> SIGTERM 후 readiness가 자동 false되지만, 어플리케이션 자체 graceful 필요 - readinessProbe 엄격화: 종료 직전 트래픽 유입 차단 속도를 높이고 정상 동작 중에만 Ready 유지
- PDB + HPA 조합: 축출 가능한 파드 수와 자동 확장 균형 맞추기
- safe-to-evict 어노테이션: 스케일인 시 지우면 안되는 파드에 다음과 같이 safe-to-evict 어노테이션 추가
- 빈약한 스테이트풀 방지: StatefulSet은 PodManagementPolicy=Parallel와 PodAntiAffinity로 분산, 스토리지는 RWO/PV 바인딩 존 일치.
5. 참고 문서
- Azure Kubernetes Service에서 Pod 스케줄러 오류 문제 해결 https://learn.microsoft.com/ko-kr/troubleshoot/azure/azure-kubernetes/availability-performance/troubleshoot-pod-scheduler-errors
- AKS 클러스터에서 OOMKilled 문제 해결 https://learn.microsoft.com/ko-kr/troubleshoot/azure/azure-kubernetes/availability-performance/troubleshoot-oomkilled-aks-clusters
- 노드 준비 안 됨 오류의 기본 문제 해결 https://learn.microsoft.com/ko-kr/troubleshoot/azure/azure-kubernetes/availability-performance/node-not-ready-basic-troubleshooting
- Pod가 CrashLoopBackOff 모드 상태에 중단됨 https://learn.microsoft.com/ko-kr/troubleshoot/azure/azure-kubernetes/create-upgrade-delete/pod-stuck-crashloopbackoff-mode
- https://hjin9445s-organization.gitbook.io/archive/work/undefined/cds
6. 추가 검색 내용
① OOMKilled (메모리 초과로 프로세스 KILL)원인
② Evicted (노드 DiskPressure로 퇴거)원인
③ Job 실패 (backoffLimit, activeDeadlineSeconds 등)원인
④ Exit code ≠ 0 (권한/엔트리포인트/커맨드 등)원인
|
① CrashLoopBackOff컨테이너가 시작하자마자 비정상 종료(exit≠0) → kubelet이 지수적 back-off(수초→수분 상한)로 재시도하는 상태.주된 원인
진단 포인트
해결/예방A. 프로브 분리/튜닝
C. 정상 종료/그레이스풀 셧다운
E. 기타
② ImagePullBackOff / ErrImagePull이미지 풀 실패. ErrImagePull은 즉시 오류, 그 다음부터 back-off로 재시도하며 ImagePullBackOff.주된 원인
진단 포인트
해결/예방A. 인증 구성
③ CreateContainerConfigError / CreateContainerError스케줄링은 됐는데 컨테이너 생성 단계에서 실패.
주된 원인
진단 포인트
해결/예방 스니펫A. CM/Secret 정확 매칭B. subPath/마운트 정합 C. 보안 컨텍스트/쓰기 경로 D. PodSecurity 정책과의 합의
|
'Azure 상식' 카테고리의 다른 글
| AKS GPU Sharing에 관한 고찰 (1) | 2025.08.26 |
|---|---|
| AKS 장애 대응 - Node Not Ready, POD Pending 등 이슈 원인 파악 및 해결 방안 (1) | 2025.08.25 |
| Azure Virtual Network 암호화 (2) | 2025.08.25 |
| PV/PVC with Azure File 구성시 필요한 Network 설정 (1) | 2025.08.25 |
| Azure Storage 암호화 (0) | 2025.08.25 |