Kubernetes는 버전 1.25 이상과 minikube가 이미 설치되어 있다는 전제이다.
설치 순서
설치하고자 하는 Kubeflow 버전에 따라 설치 과정이 달라진다.
Kubeflow v1.2 이하 : kfctl 설치 → Kubeflow 설치
Kubeflow v1.3 이상 : kustomize 설치 → Kubeflow 설치
Kubeflow 설치 방식이 버전 1.2까지는 kfctl를 사용하였으나, 1.3부터는 kustomize를 사용한다.
우리는 현재 kubeflow 최신버전인 v1.6 을 설치하기 위해 kustomize 설치할 것이다.
k9s 설치
디렉토리 만들기
mkdir k9s_v0.26.7
cd k9s_v0.26.7
k9s 다운로드
wget https://github.com/derailed/k9s/releases/download/v0.26.7/k9s_Linux_x86_64.tar.gz
압축 풀기
tar xvf k9s_Linux_x86_64.tar.gz
k9s 실행파일 /usr/local/bin/ 로 옮기기
mv k9s /usr/local/bin
kustomize 설치
디렉토리 만들기
mkdir kustomize
cd kustomize
kustomize v4.5.7 다운로드
(* 2023.3.5 기준 kustomize의 최신버전은 5.0.0 인데 v4.5.7 으로 설치하는 이유는 다음 스텝인 kubeflow 설치에서 개별 컴포넌트 설치가 가능한 버전이기 때문이다.
Kubeflow is compatible with Kustomize 4.5.7 only for installing the individual components.
출처 : https://github.com/kubeflow/manifests#installation
개별 컴포넌트로 설치할 건 아니지만 다다익선으로)
kustomize v4.5.7 다운로드
wget https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize%2Fv4.5.7/kustomize_v4.5.7_linux_amd64.tar.gz
압축 풀기
tar xvf kustomize_v4.5.7_linux_amd64.tar.gz
kustomize 실행파일 /usr/local/bin/ 로 옮기기
mv kustomize /usr/local/bin/
설치 확인
kustomize version
kubeflow 설치
디렉토리 만들기
mkdir kubeflow
cd kubeflow
github에서 Kubeflow Manifests 최신 소스를 받아온다.
git clone https://github.com/kubeflow/manifests.git
cd manifests
여기서 바로 kubeflow를 설치하면 서비스가 ClusterIP로 만들어진다. 즉 localhost 로만 접속이 가능하고 외부에서 접속이 불가능해진다. 외부 접속을 원하는 경우 service.yaml의 type을 LoadBalancer로 변경한다.
vim /root/kubeflow/manifests/common/istio-1-16/istio-install/base/patches/service.yaml
Kubeflow 설치
Kubeflow를 설치하는 방법으로는 단일 명령어 설치와 개별 컴포넌트 설치가 있다.
컴포넌트 하나하나 실행시키는 방법은 kubeflow github 참고
단일 명령어
while ! kustomize build example | kubectl apply -f -; do echo "Retrying to apply resources"; sleep 10; done
위의 명령어를 실행했는데
error: resource mapping not found for name: "webhook" namespace: "knative-serving" from "STDIN": no matches for kind "HorizontalPodAutoscaler" in version "autoscaling/v2beta2" |
위의 에러와 함께 Retry를 하는 무한루프에 빠질 수 있다.
이유 : Profiles + KFAM 컴포넌트가 제대로 불러와지지 않아 발생한 것 같다. Profiles + KFAM가 설치되지 않으니 kubeflow-user-example-com에 필요한 조건이 형성되지 않아 위와 같은 에러가 발생한 것으로 추정. 따라서 무한 루프를 강제 종료 한 뒤 Profiles + KFAM와 kubeflow-user-example-com를 직접 설치하면 정상 작동한다.
1. ctrl + c 로 종료
2. kubectl get pods --all-namespaces 명령어로 확인하여 모든 pod가 Runnig 이 될때까지 대기(단, Training operator의 경우 crashloopbackoff 또는 Error 상태가 되도 무방)
3. 아래 명령어 실행 후
kustomize build apps/profiles/upstream/overlays/kubeflow | kubectl apply -f -
kustomize build common/user-namespace/base | kubectl apply -f -
kubectl get pods --all-namespaces 명령어로 다시 모든 pod가 Runnig 인지 확인
설치 확인
컴포넌트가 제대로 실행됐는지 namespace 별로 하나하나 확인해 본다. 제대로 실행되지 않았거나 namespace가 존재하지 않은 경우 kubeflow github를 참고해 실행한다.
kubectl get pods -n cert-manager
kubectl get pods -n istio-system
kubectl get pods -n knative-eventing
kubectl get pods -n auth
kubectl get pods -n knative-serving
kubectl get pods -n kubeflow
kubectl get pods -n kubeflow-user-example-com
kubeflow 실행하기
ClusterIP 로 만든경우 아래의 명령어로 접속할 수 있다.
포트 포워딩
kubectl port-forward svc/istio-ingressgateway -n istio-system 8080:80
브라우저에서 접속
localhost:8080
id : user@example.com
passwd : 12341234
입력
접속 성공!
http 접속 문제
https://velog.io/@seokbin/Kubeflow-V1.4-설치-및-초기-설정User-추가-CORS
참고
https://yangoos57.github.io/blog/mlops/kubeflow/installation_guide/
https://github.com/kubeflow/manifests#installation
댓글