Kubeflow 설치

이권동·2023년 3월 10일
0

MLOps

목록 보기
3/4

kubeflow를 설치해보자

이전까지는 쿠버네티스를 설치하고 클러스터를 구성해 보았다. 이제는 kubeflow를 설치하기 위한 세팅과 kubeflow manifests를 이용해서 설치를 한다.

kubeflow를 설치하기 이전 필요한 것

kubeflow를 설치하기 위해서 우선 가장 중요한것은 현재 k8s 버전에 호환되는 kubeflow 버전을 설치하거나 특정 kubeflow 버전을 설치하고 싶으면 k8s을 맞추는 것이다.

버전 종속성

kubeflow 1.6 버전을 설치하기 위해 필요한 dependency는 아래 링크에 확인하면 된다.
https://www.kubeflow.org/docs/releases/kubeflow-1.6/#dependency-versions-manifests

default storageclass

storageclass 는 쿠버네티스가 퍼시스턴트 볼륨을 동적으로 만들수 있게 사용가능한 스토리지를 정의한 리소스이다. 예를 들어 ceph 파일시스템이 존재하고 여기에 쿠버네티스가 사용할 수 있는 볼륨을 만들기위해 정보를 스토리지클래스로 저장한다. 저장된 정보에 의해서 외부 프로바이더가 ceph 파일시스템을 연결시켜서 쿠버네티스에서 사용할 수 있게된다.

여기서는 쉽게 구현 가능한 nfs 로 실습한다.

nfs 설치 (nfs 서버가 설치될 곳)

sudo apt-get install nfs-kernel-server

nfs server 설정 (nfs 서버가 설치될 곳)

sudo vi /etc/exports

/datafolder 192.168.0.0/16(rw,sync,no_subtree_check,no_root_squash)

첫번째는 exports 파일에 위와 같이 작성하면되는대 먼저 서버 폴더를 지정해주는대 일반적으로 디스크를 마운트한 폴더로 지정하면 된다. ex) /mnt/sdb
두번째로는 nfs 서버가 허용하는 IP를 설정해야되는대 만약 내 아이피가 192.168.~~ 으로 시작하면 위와같이 작성해주면되고 10.0.~~ 으로 시작하면 10.0.0.0/16 과 같이 작성해주면 된다.

sudo exportsfs -a

nfs provider 설치

git clone https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner.git
cd nfs-subdir-external-provisioner/deploy
kubectl create -f rbac.yaml
vi deployment.yaml 
env:
  - name: PROVISIONER_NAME
    value: k8s-sigs.io/nfs-subdir-external-provisioner
  - name: NFS_SERVER
    value: NFS SERVER IP
  - name: NFS_PATH
    value: NFS 데이터 폴더 경로
kubectl apply -f deployment.yaml
kubectl apply -f class.yaml
kubectl patch storageclass nfs-client -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'

kubeflow 설치

wget https://github.com/kubernetes-sigs/kustomize/releases/download/v3.2.0/kustomize_3.2.0_linux_amd64
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 manifast
while ! kustomize build example | kubectl apply -f -; do echo "Retrying to apply resources"; sleep 10; done

설치후 접속 테스트

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

위 서비스에 등록된 80:31738/TCP 부분에서 31738 부분을 확인하면 된다. 숫자는 매번 설치때마다 달라지면 http 로 접속할 수 있는 port이다.
http://NODE-IP:PORT/
로 접속하게되면


위와 같이 dex 로그인 페이지가 뜨는대 default 계정이 user@example.com / 12341234 이다.

profile
배워서 효율적으로 써먹자

0개의 댓글