kubernetes

kubeflow 1.3 설치 (windows 10)

Hongma 2021. 12. 26. 14:19

kubeflow는 1.3부터 설치법이 완전히 바뀌었습니다.

이전과는 달리 kubeflow에서 사용하는 다양한 컴포넌트들을 kustomize 3.2.0버전을 통해서만 설치할 수 있도록 되었네요.

 

이 글은 kubeflow/manifests에 있는 example을 통해 기본적인 kubeflow 툴들을 설치하는 방법입니다.

* 참조 : kubeflow/manifests: A repository for Kustomize manifests (github.com)

(manifests는 kubernetes 1.19 버전에서 테스트 되었다고 합니다.)

 

kubernetes를 설치하는 방법은 다양합니다.

제 노트북 OS 는 windows 10 이기 때문에 본 글은 windows 10에서 kubeflow를 설치하는 방법입니다.

방법은 VM을 만들어서 설치하는 방법, minikube를 사용하는 방법, 또는 cloud 등등 다양합니다.

근데 학습용으로 설치를 한다면 minikube를 사용하는게 정신건강에 이롭습니다.

왜냐면 아직은 kubernetes 1.19가 kubeflow 버전에 가장 적합한데 minikube는 kubernetes version을 선택할 수 있습니다.

혹은 docker 4.1.0 version에서 kubernetes 1.21 version을 사용해도 설치는 됩니다.

kubeflow 1.5버전 부터는 kubernetes 1.22버전도 사용 가능하게 한다고 하네요.

 

어떤 방식이든 kubernetes 1.22 이전 버전(~1.21)으로만 하시면 됩니다. (1.22부터 설치할 api들 중 삭제된 것들이 있음.)

  • Switching to Emissary executor enables Kubeflow Pipelines deployment on Kubernetes >= v1.20, which runs on containerd runtime instead of Docker runtime.

Emissary executor 이슈 때문에 1.9를 설치하는게 편하네요.

minikube로 kubernetes를 설치하면 kubernetes 버전을 조절할 수 있습니다!

 

 

1. minikube(kubernetes) 설치

 

- 먼저 docker를 설치하세요. (minikube를 이용하기 위해 docker를 설치합니다.)

 

* Docker Settings -> Kubernetes -> Enable Kubernetes를 선택하진 마세요. 저희는 minikube를 따로 설치할 겁니다.

 

- Resources -> WSL INTEGRATION -> 자기가 사용하는 wsl에 통합되도록 체크 합니다.(저는 WSL2, Ubuntu 20입니다.)

 

- (선택사항) WSL resource 설정은 C:\Users\Username 폴더에 .wslconfig 파일로 가능합니다.(저는 간단하게 memory, cpu만 설정)

- (minikube에서도 리소스 설정이 가능하므로 꼭 하지 않아도 괜찮습니다.)

# Settings apply across all Linux distros running on WSL 2
[wsl2]

# Limits VM memory to use no more than 4 GB, this can be set as whole numbers using GB or MB
memory=10GB 

# Sets the VM to use two virtual processors
processors=10

 

- WSL에 minikube 설치 (minikube start | minikube (k8s.io))

(windows terminal이나 powershell을 관리자로 실행 후 wsl 입력하면 wsl로 접속됩니다.)

# download
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64  

# install
sudo install minikube-linux-amd64 /usr/local/bin/minikube  

# version
minikube version

 

- minikube 가동 (docker를 이용해서 설치하기 때문에 docker가 실행 중이어야 합니다.)

* kubernetes 1.22버전은 현재 manifests로 설치가 안됩니다. 1.19가 kubeflow의 default 버전입니다.

참조 : kubeflow/manifests: A repository for Kustomize manifests (github.com)

# cpu, memory 지정, kubernetes 버전 설정
minikube start --cpus 6 --memory 8096 --kubernetes-version=v1.19.16

# minikube에 kubectl 설치(안해도 됩니다.)
minikube kubectl -- get pods -A

 

2. kubectl 설치

계속 WSL 환경입니다.

- kubectl 다운로드 -> 권한 변경 -> /usr/local/bin 으로 이동

# download
curl -LO "https://dl.k8s.io/release/v1.19.16/bin/linux/amd64/kubectl"

# 설치 및 경로 설정
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

# 버전 확인
kubectl version

 

3. kustomize 설치

- 위와 동일

# download
wget https://github.com/kubernetes-sigs/kustomize/releases/download/v3.2.0/kustomize_3.2.0_linux_amd64

# 권한 변경
chmod u+x kustomize_3.2.0_linux_amd64

# 이동
sudo mv kustomize_3.2.0_linux_amd64 /usr/local/bin/kustomize

# 버전 확인
kustomize version

 

4. kubeflow 설치(manifests의 example components)

# kubeflow manifests download
git clone -b v1.3.1 https://github.com/kubeflow/manifests.git

# manifests 폴더 이동
cd manifests

# components 설치 및 실행
while ! kustomize build example | kubectl apply -f -; do echo "Retrying to apply resources"; sleep 10; done

- container 구동까지 시간이 조금 걸립니다. kubectl get pods -A로 확인하면서 기다려보세요.

 

 

5. kubeflow dashboard

kubectl port-forward -n istio-system svc/istio-ingressgateway 8080:80

포트 연결 되면 8080으로 접속해보시면 됩니다.

ID : user@example.com

PW : 12341234

 

 

6. minikube 종료 혹은 삭제

# 종료
minikube stop

# 삭제
minikube delete

# 재시작
minikube start