관리 메뉴

중요한건 꺾이지 않는 맥북

kubeflow 본문

MLOPS

kubeflow

개발허재 2023. 1. 1. 15:11

kubeflow 설치

docker 와 kubectl이 설치되었다는 가정하에 진행한다. kubectl은 v1.21.7 버전이다.

쿠버네티스 클러스터는 빠르고 간편하게 구축할 수 있는 Minikube로 세팅하였다. v1.24.0 버전이다.

minikube 클러스터 구축 진행

minikube start --driver=docker   --kubernetes-version=v1.21.7   --extra-config=apiserver.service-account-signing-key-file=/var/lib/minikube/certs/sa.key   --extra-config=apiserver.service-account-issuer=kubernetes.default.svc --cpus=8 --memory=24g disk=100g

  • driver = docker
  • k8s version = v1.21.7
  • cpu, ram, disk 사이즈는 각자 컴퓨팅 환경에 맞게 구성하면 된다.

https://github.com/kubeflow/manifests 의 readme의 커스터마이즈 build 순서대로 진행해도 되지만 나는

$ git clone https://github.com/kubeflow/manifests.git
$ cd manifests/
$ while ! kustomize build example | kubectl apply -f -; do echo "Retrying to apply resources"; sleep 10; done

의 반복문을 통해서 manifests 하위 폴더인 example의 kustomization.yaml을 읽어서 모두 설치하는 방식으로 진행했다.

만약, 모든 컴포넌트 설치를 원치않다면 하나하나 설치하는 것을 추천한다.

모두 빌드 됐다면,

위와 같은 running pod 목록을 확인할 수 있다.

 

Kubeflow central dashboard에 web browser로 접속하기 위한 포트 포워딩

kubectl port-forward --address=0.0.0.0 svc/istio-ingressgateway -n istio-system 8888:80

나는 원격으로 VM에 kubeflow를 띄운 환경이었기 때문에 --address=0.0.0.0 을 넣어주었다.

 

정상적으로 접근이되면 위와 같은 대쉬보드 화면을 볼 수 있다.

 

Notebooks 메뉴에서 노트북 하나 생성한 후 ui를 확인하면 

status 가 ✅ 표시가 되면 오른쪽 끝부분에  CONNECT라고 표시가 뜨며 CONNECT를 클릭해서 들어가면 jupyterlab 환경에 접속이 가능하다.

또한, kubeclt get pods -A 해서 파드 목록을 조회하면 

위와같이 파드 안에 두개의 컨테이너가 running 중인것을 확인할 수 있다.

이것은, Istio proxy를 서비스 배포 시에 Sidecar 활용 패턴으로 자동으로 Injection 해준 것을 의미한다.

* Istio 는 Service Mesh 를 쉽게 구성가능하도록 지원하는 플랫폼으로 proxy 가 sidecar 형태로 추가되어 네트워크를 조절할 수 있다. 네트워크를 조절기능의 대표적인 것은 네트워크 쉬프팅이 있다. Canary Release 나 A/B Test 에서는 서로 다른 버전의 서비스로 호출되는 네트워크의 흐름 비중을 조절가능해야 한다.

실제로 kubectl describe pod test-0 -n kubeflow-user-example-com 로 확인해보면

위와 같이 두개의 컨테이너가 띄워져 있는 것을 볼 수 있다.