티스토리 뷰
반응형
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를 저장해놓는 걸로 해결
반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 우테코
- k8s
- 42서울
- datalabeling
- 위즈윅에디터
- create_task
- semi-supervised
- un-supervised
- SSR
- CloudFlare
- planetscale배포
- supervised
- 타입스크립트
- 함수형프로그래밍
- next.js
- kubectl
- Tailwind
- Python
- iris
- nodejs
- 대수자료구조
- helm
- window
- 윈도우pscale설치
- asyncio.gather
- asyncio
- 비동기
- pscale
- nextj이미지저장
- ADT
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
글 보관함