중요한건 꺾이지 않는 맥북
kubeflow 본문
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 로 확인해보면
위와 같이 두개의 컨테이너가 띄워져 있는 것을 볼 수 있다.
'MLOPS' 카테고리의 다른 글
Minio와 Postgresql를 활용하여 Multi-Tenant MLflow 배포하기 (0) | 2023.05.13 |
---|---|
Kubeflow - Multi Tenancy(user) (0) | 2023.01.27 |
Kubeflow - Kubeadm K8s Single Cluster (0) | 2023.01.08 |
CLOps-MLOps의 시작 (0) | 2022.08.13 |
모델 서빙을 하기 위한 필수 요소 및 빅테크 기업들의 기술 (0) | 2022.01.21 |