본문 바로가기
쿠버네티스

k9s, kustomize, kubeflow 설치하기

by 오렌지마끼야또 2023. 3. 6.
728x90
반응형

 

 

 

 

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

 

 

 

 

728x90
반응형

댓글