Airflow, 쿠버네티스에서 더 안정적으로!

by DD
1년 전
조회수 10

컬리AirflowK8S 환경으로 전환하여 성능 및 비용 최적화를 달성함

CPU 과부하OOM 문제 해결을 위해 GitSync 설정 조정 및 자원 제한 정책 적용

실행 로그 부재 문제 해결을 위해 워커 스케일 아웃을 통해 동시 처리량 증가

K8S 환경에서의 Airflow 아키텍처

Airflow는 스케줄러, 워커, 웹 서버 등 여러 컴포넌트로 구성되며, Metadata DB와 정보를 주고받으며 동작한다. 구체적으로 Helm을 통해 K8S에 배포되며, 레디스 큐를 통해 작업이 워커에 할당된다. 따라서 각 컴포넌트의 자원 관리가 중요하며, GitSync를 통해 DAG를 관리한다.

OOM 문제 해결을 위한 자원 관리 전략

OOM 문제는 Container, Kubelet, OS 레벨에서 발생하며, 각 단계별로 해결 방법이 다르다. 자원 제한 정책(Resource Limits)을 통해 메모리 사용량을 제어하고, Taint와 Tolerations을 활용하여 노드 격리를 수행한다. 반면, 과도한 자원 할당은 비용 증가를 야기할 수 있으므로, 적절한 자원 요청(Requests) 설정이 필요하다.

워커 스케일 아웃을 통한 성능 개선

실행 로그 부재 문제는 CeleryExecutor의 작업 할당 과정에서 발생했다. BigQuery 작업 지연으로 인해 태스크가 scheduled 상태로 남아 로그가 기록되지 않았다. 따라서 워커 스케일 아웃을 통해 동시 처리량을 늘리고, 작업 지연 문제를 해결했다. 결과적으로 Airflow 안정성을 향상시켰다.

서버리스에서 쿠버네티스로 - Airflow 운영 경험기

댓글 0

첫 번째 댓글을 남겨보세요!