학습일지/workflows
KubeCon2023 - Cross Cluster Execution of Argo Workflows
inspirit941
2024. 7. 22. 17:35
반응형
https://youtu.be/SPdxfr4SWO4?si=bO185_hiWBI5Ehjo
발표자: Shri Javadekar. OuterBounds에서 일하고 있음.
- metaflow라는 오픈소스 contributing하는 회사.
갑자기 metaflow 프로덕트 소개
- Data Science / Data intensive Application에서 필요한 data 전달
- compute workflows / data versioning 지원
- Python API 제공
- Netflix에서 출발한 오픈소스
Metaflow 예시: Python Class에 start, work, end 형태로 정의.
- build locally, run remotely.
이걸 GPU 붙어 있는 K8s, 또는 특정 데이터에 access 권한이 있는 k8s node 위에서 실행하려면... argo Workflow 사용하는 것이 좋다.
- python으로 정의한 Step을 Workflows Template으로 변환하면 됨
방법 1. Control Plane과 Execution Plane의 구분
어디까지를 cross-cluster라 할 것인지는 사람마다 해석이 다를 수 있으니, Cross Cluster Argo Workflows의 정의를 명확히 해야 한다.
- 각 Step별로 different cluster에 할당할 것인지?
- Workflow Template 단위로 클러스터에 배포할 것인지?
- Argo Event와 관련된 주제.
- Argo Control Plane이 배포된 클러스터와, Workflow Pod가 배포될 클러스터를 분리할 것인지?
- 이번 발표에서 소개할 내용.
"필요한 작업만 클러스터에서 실행되도록 하고 싶다"
- Control Plane마저도 별도의 클러스터에 두고, Data science가 실행되는 작업만 지정된 k8s Cluster에서 수행한다.
- control plane 클러스터는 플랫폼팀에서 관리하고, workload 클러스터는 데이터 사이언스 팀이 관리하는 방식
- kubeConfig 정보만 control plane에 전달해줄 수만 있으면 된다.
단, Execution-Plane 클러스터에서 workflow를 실행하기 위한 RBAC 설정은 잘 해줘야 한다.
Demo
방법 2. Argo Event
Cron Schedule이나 특정 event가 발생했을 때, Execution Plane에 workflow를 배포하는 구조.
- argo Event controller has a much bigger footprint
Control Plane에서 특정 이벤트 발생 시 Execution Plane으로 workflow 실행을 요청하면 된다.
Metaflow 예시.
- 오른쪽의 python code를 보면, first flow가 끝났을 경우에 실행되도록 하는 조건을 decorator로 정의해뒀다.
- first flow를 실행하면, second flow가 순차적으로 실행된다.
Q. control plane과 execution plane의 관계를 1:M으로 해도 되나?
- 예시는 1:1구조로 시연했지만, Argo Event로 설정하면 된다. multiple kubeConfig.
- 단, 1 Argo Workflow Controller for every Execution Plane Cluster. 하나의 클러스터에 Controller 여러 개 배포하면 됨.
반응형