카테고리 없음
[kubectl] Airflow Pod가 재시작되며 db없어지는 이슈 해결기
0hyeon의
2025. 5. 12. 16:26
반응형
Helm + Kubernetes 환경에서 발생한 PostgreSQL emptyDir 문제 및 해결 과정 기록
❗ 문제 개요
- Kubernetes 환경에서 Airflow를 Helm으로 배포하는 과정에서 발생한 Pod 무한 재시작(CrashLoopBackOff) 이슈
- Web, Scheduler Pod가 계속해서 CreateContainerConfigError, Database does not exist 오류 발생
- 원인은 PostgreSQL StatefulSet이 emptyDir로 구성되어 Pod 재시작 시 DB 초기화가 발생한 것
=> 즉 팟이 쿠버네티스위에서 재시작되는경우, emptyDir 상태로 DB명이 없어짐
💻 증상 요약
kubectl get pods
airflow-0hyeon-web-0 0/1 CreateContainerConfigError
airflow-0hyeon-scheduler-0 0/1 Init:0/1
kubectl logs airflow-0hyeon-scheduler-0 -c init-db
FATAL: database "airflow-0hyeon" does not exist
- emptyDir는 ephemeral volume이므로, Pod가 재시작되면 데이터가 전부 날아감
- PostgreSQL은 DB를 초기화하지만 Airflow는 매번 새 DB에 접속 시도 → 실패 반복 → 팟재시작 -> 실패 반복 (무한실패)
✅ 해결 전략
1. emptyDir → PersistentVolumeClaim 변경
volumes:
- name: dbvol
persistentVolumeClaim:
claimName: nfs-pvc
- 데이터가 Pod 생존과 무관하게 영속화됨
이럴경우 nfs-pvc안에 db를 저장해놓는 걸로 해결
반응형