본문 바로가기

MLOps/트러블 슈팅

[트러블 슈팅] Airflow webserver 접속이 계속 refused 된다고? (AWS EC2, Microk8s, helm chart)

Airflow Webserver 접속이 계속 거부되는 경우

상황

  • EKS가 아닌 AWS EC2위에 직접 쿠버네티스를 설치
  • Helm chart를 사용해 Airflow를 Pod 단위로 배포를 시도
  • 하지만 Webserver 접속은 계속 거부가 되는 상태

개요

최소 3일 이상의 삽질 중에 더 못하겠다고 스택오버플로우에 질문하자마자 20분 뒤에 혼자 해결하고 답변을 달아버린 능지처참 사건

스택오버플로우에서 자문자답하는 사람의 글 보러가기

 

I installed airflow using microk8s helm, but access to localhost:8080 is denied

I am just getting started with Kubernetes. I'm using microk8s and I'm currently having a mental breakdown. My 5 days are being spent here. I currently have airflow installed using microk8s helm. Ho...

stackoverflow.com


사용한 차트

## add this helm repository
helm repo add airflow-stable https://airflow-helm.github.io/charts

## update your helm repo cache
helm repo update

 

Override를 위한 values.yaml

https://github.com/airflow-helm/charts/blob/main/charts/airflow/sample-values-KubernetesExecutor.yaml

확인 사항 1

Q. 파드가 정상 작동 중인가?

A. 정상 작동 중

확인 사항 2

Q. Webserver log에 특이사항 없나?

A. 매우 정상

확인 사항 3

Q. 포트포워딩 했는가?

A. 8080으로 했음

kubectl port-forward svc/airflow-web 8080:8080 --namespace airflow

확인 사항 4

Q. 포트 포워딩이 제대로 되었는가? 

A. 파드 리소스 상태랑 사용 중인 포트 확인했음

# 파드 리소스 상세 내용
kubectl describe pod <pod name> -n airflow

# 사용중인 포트 확인
netstat -lntp

확인 사항 5

Q. Host Port가 0?! 저게 문제인 거 아님?

A. 공식 문서에는 반드시 필요한 것이 아니면 사용하지 말라고 적혀있음. 결론 문제가 아님

확인 사항 6

Q. EC2에서 보안 그룹 설정했음?

A. 인바운드 규칙에 8080 추가함

 

확인 사항 7

Q. 확인 사항 2번에, 200 다음에 187 뭐임! 수상하다

A. 그냥 로그 포맷임, 전송된 바이트수가 187이라는 뜻 (참고)

(진짜 이거 확인할 때는 지푸라기 잡는 느낌. 지금 와서 보면 누가봐도 정상인 로그..)

health HTTP/1.1" 200 187 "-" "kube-probe/1.26"

확인 사항 8

Q. Airflow에서 사용하는 MetaDB 문제인가!

A. Error 관련 로그가 있었지만, Webserver 접속 거부랑 아무 관련이 없었음


결국에

아.. 분명 포트 쪽 문제인데, 잘못된 건데 뭐지.. 하고

Service type을 ClusterIP에서 NodePort로 변경 함

spec:
  type: NodePort

드디어 성공했다.. 감격 (ClusterIP에서 왜 localhost 접속도 안되는 거지..)