MLOps 구축기 - Kubeflow

문주은·2024년 1월 16일

1. kubeflow 설치 환경

sudo rm -rf /tmp/juju-mk*
sudo rm -rf /tmp/minikube.*

export KUBECONFIG=~/.kube/config

(base) user@GPU10:~/.kube$ kubectl get secrets -n cert-manager --show-labels
NAME                                  TYPE                                  DATA   AGE   LABELS
cert-manager-cainjector-token-h7k6v   kubernetes.io/service-account-token   3      29m   <none>
cert-manager-token-bhfc7              kubernetes.io/service-account-token   3      29m   <none>
cert-manager-webhook-token-9bfpm      kubernetes.io/service-account-token   3      29m   <none>
default-token-zqxwn                   kubernetes.io/service-account-token   3      29m   <none>

2.kubeflow 설치

2-1) kustomize 설치

## kustomize 설치
$ curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh"  | bash
$ sudo mv kustomize /usr/local/bin/

2-2) kubeflow 설치

## kubeflow 설치
$ wget https://github.com/kubernetes-sigs/kustomize/releases/download/v3.2.0/kustomize_3.2.0_linux_amd64
$ sudo mv kustomize_3.2.0_linux_amd64 /usr/bin/kustomize 
$ sudo chmod 777 /usr/bin/kustomize
$ git clone https://github.com/kubeflow/manifests.git
$ cd manifests
$ git checkout -b v1.6.0-branch
$ while ! kustomize build example | kubectl apply -f -; do echo "Retrying to apply resources"; sleep 10; done
>> 설치하는데 시간 소요

2-3) pods 정상 작동 여부 확인

## kubeflow 설치 후 접속 테스트
$ kubectl get service -n istio-system istio-ingressgateway
NAME                   TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE 
istio-ingressgateway   LoadBalancer   10.000.000.000   <pending>     15021:31548/TCP,80:31738/TCP,443:32478/TCP,31400:30554/TCP,15443:30297/TCP   39d

2-4) Port - Forwarding

$ 포트포워딩
$ kubectl port-forward svc/istio-ingressgateway -n istio-system 9080:80 --address 0.0.0.0

> http://192.168.0.37:9080
  id : user@example.com
  pw : 12341234

3. Kubeflow - Jupyter notebook 설치

3-1.jupyter notebook install

  • kubeflow dashboard에서 Notebooks를 활용해 connect

3-2.conda install

  • kubeflow에 기본적으로 conda 환경 설치 완료
  • 커널 연동
    - ipykernel과 'test_env' conda 환경 연동
    - $ python -m ipykernel install --user --name {가상환경이름} --display-name {표시할 커널이름}
    - $ python -m ipykernel install --user --name test_env --display-name test_env
  • 커널 연결 해제
    - $ jupyter kernelspec uninstall {커널이름}
  • install packages
    - $ pip install {패키지명} --no-cache-dir (Killed 상태로 install 되지 않을 때)

++발생 가능한 에러

1) failed to create fsnotify watcher

$ kubectl get pods -n kubeflow 실행 시, CrashLoopBackOff pod 에러 로그 확인

$ kubectl logs -f katib-controller-58fdc877c4-n79nd -n kubeflow
{"level":"error","ts":1682659782.0940566,"logger":"entrypoint","msg":"Unable to run the manager","error":"too many open files","stacktrace":"runtime.main\n\t/usr/local/go/src/runtime/proc.go:250"}
failed to create fsnotify watcher: too many open files
  • 해결 방법
$ sudo sysctl fs.inotify.max_user_instances=1280
$ sudo sysctl fs.inotify.max_user_watches=655360
운영체제에서 파일 오픈 최대 개수 제한으로 인해 발생.
-- > 제한 수 늘림
profile
Data Engineer

0개의 댓글