학습일지/workflows

KubeCon2023 - Cross Cluster Execution of Argo Workflows

inspirit941 2024. 7. 22. 17:35
반응형

https://youtu.be/SPdxfr4SWO4?si=bO185_hiWBI5Ehjo 

 

 

 

스크린샷 2024-07-22 오후 3 58 01

 

발표자: Shri Javadekar. OuterBounds에서 일하고 있음.

  • metaflow라는 오픈소스 contributing하는 회사.

스크린샷 2024-07-22 오후 3 58 10

 

갑자기 metaflow 프로덕트 소개

  • Data Science / Data intensive Application에서 필요한 data 전달
  • compute workflows / data versioning 지원
  • Python API 제공
  • Netflix에서 출발한 오픈소스

스크린샷 2024-07-22 오후 4 00 45

 

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의 구분

스크린샷 2024-07-22 오후 4 08 09

 

어디까지를 cross-cluster라 할 것인지는 사람마다 해석이 다를 수 있으니, Cross Cluster Argo Workflows의 정의를 명확히 해야 한다.

  • 각 Step별로 different cluster에 할당할 것인지?
  • Workflow Template 단위로 클러스터에 배포할 것인지?
    • Argo Event와 관련된 주제.
  • Argo Control Plane이 배포된 클러스터와, Workflow Pod가 배포될 클러스터를 분리할 것인지?
    • 이번 발표에서 소개할 내용.

스크린샷 2024-07-22 오후 4 21 11스크린샷 2024-07-22 오후 4 34 17

 

"필요한 작업만 클러스터에서 실행되도록 하고 싶다"

  • Control Plane마저도 별도의 클러스터에 두고, Data science가 실행되는 작업만 지정된 k8s Cluster에서 수행한다.
    • control plane 클러스터는 플랫폼팀에서 관리하고, workload 클러스터는 데이터 사이언스 팀이 관리하는 방식
  • kubeConfig 정보만 control plane에 전달해줄 수만 있으면 된다.

스크린샷 2024-07-22 오후 4 55 51

 

단, Execution-Plane 클러스터에서 workflow를 실행하기 위한 RBAC 설정은 잘 해줘야 한다.

Demo

스크린샷 2024-07-22 오후 4 58 34

방법 2. Argo Event

스크린샷 2024-07-22 오후 4 59 31스크린샷 2024-07-22 오후 5 20 42

 

Cron Schedule이나 특정 event가 발생했을 때, Execution Plane에 workflow를 배포하는 구조.

  • argo Event controller has a much bigger footprint

Control Plane에서 특정 이벤트 발생 시 Execution Plane으로 workflow 실행을 요청하면 된다.

스크린샷 2024-07-22 오후 5 22 18스크린샷 2024-07-22 오후 5 23 41스크린샷 2024-07-22 오후 5 23 56

 

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 여러 개 배포하면 됨.
반응형