티스토리 뷰

카테고리 없음

airflow

미니대왕님 2024. 8. 30. 11:49

step 1. install helm chart Airflow

1. 헬름부터 설치 
Installing Helm
## 스크립트 방식
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh



2.아파치  airflow 설치
helm repo add apache-airflow https://airflow.apache.org
helm upgrade --install airflow apache-airflow/airflow --namespace airflow --create-namespace

 

설치는 했는데 pending 에 오류투성이 입니다. 

 

헬름을 다시 삭제하고 pvc 설정후 다시 진행 하겠습니다. 

삭제 방법은 helm  list 후에 airflow 검색이 되면 

helm delete airflow 하시면 됩니다. 

root@master:/home/vagrant# helm list
NAME    NAMESPACE       REVISION        UPDATED                                 STATUS  CHART           APP VERSION
airflow airflow         1               2024-08-28 15:12:50.561705512 +0000 UTC failed  airflow-1.15.0  2.9.3
root@master:/home/vagrant# helm delete airflow
release "airflow" uninstalled

 

Persistent Volume 배포Permalink

Airflow Chart 설치 시 배포 되는 PVC에 연결될 PV를 미리 배포 해줍니다.

10GB 2개, 110GB 2개로 설정해주었습니다. 최소 용량이 얼마나 필요한지 모르겠으나

적어도 2개 PVC가 110GB 이상을 요구하는 것 같았습니다.

 

그렇지 않은 경우 Pending 상태로 무한 대기상태에 빠지더군요.

참고로 아래 yaml을 사용하여 PV를 배포하기 전에 node local에 yaml에 정의한 PV 경로를 꼭 미리 생성해 주세요.

그렇지 않으면 배포된 airflow chart에서 권한 문제로 인해 Pod가 일정시간마다 재시작 되는 문제가 발생합니다.

 

#pvc.yaml


apiVersion: v1
kind: PersistentVolume
metadata:
  name: persistent-volume-1
spec:
  capacity:
    storage: 10G
  accessModes:
  - ReadWriteOnce
  local:
    path: /home/vagrant/pv1
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - {key: kubernetes.io/hostname, operator: In, values: [worker1]}
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: persistent-volume-2
spec:
  capacity:
    storage: 10G
  accessModes:
  - ReadWriteOnce
  local:
   path: /home/vagrant/pv2
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - {key: kubernetes.io/hostname, operator: In, values: [worker2]}
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: persistent-volume-3
spec:
  capacity:
    storage: 110G
  accessModes:
  - ReadWriteOnce
  local:
    path: /home/vagrant/pv3
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - {key: kubernetes.io/hostname, operator: In, values: [worker1]}
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: persistent-volume-4
spec:
  capacity:
    storage: 110G
  accessModes:
  - ReadWriteOnce
  local:
    path: /home/vagrant/pv4
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - {key: kubernetes.io/hostname, operator: In, values: [worker2]}

 

 

 

 

 

 

 

 

1번 라인에서 Helm Chart를 등록하고 2번 라인에서 Helm Chart를 통해서 설치를 진행합니다.

설치된 Helm의 이름은 airflow이며 이 Helm Chart를 통해서 설치되는 위치는 새로 생성한 airflow namespace에 설치됩니다.

 

step 2. 설치 확인하기

kubectl get po -n airflow

 

kubectl 명령어를 통해서 방금 생성한 airflow namespace에 pod를 조회해 보자.

 

다음과 비슷한 내용을 얻었다면 

설치 성공!

 

step 3. 접속 Airflow

kubectl get svc -n airflow

airflow webserver의 SVC 즉 service 이름을 찾아 냅니다.

저는 그냥 airflow-webserver 로 되어있더군요 

 

kubectl port-forward svc/airflow-webserver 8080:8080 -n airflow

포트포워딩을 통해서 내부에만 존재하는 Airflow의 포트를 노출시켜 줍니다. 

요런식으로 나왔다면 웹브라우저를 열어서 localhost:8080 으로 접속을 합니다.

이렇게 접속이 되는 모습을 확인 가능합니다.

 

 

 

ps. 리스타트가 몇번 됐는데 한번 찾아봐야겠습니다.

댓글