airflow
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. 리스타트가 몇번 됐는데 한번 찾아봐야겠습니다.