minikube에 Kubeflow 1.4.1을 설치한다.
Kubeflow 설치 방식이 버전 1.2까지는 kfctl를 사용하였으나, 1.3부터는 kustomize를 사용한다.
✓ kfctl is a CLI for deploying and managing Kubeflow, Latest release: 1.2.0(21 Nov 2020), https://github.com/kubeflow/kfctl
▷ Kubeflow 1.2 in On-prem 구성
▷ Kubeflow 1.2 in Minikube 구성
✓ Kubeflow 1.4.1는 Istio 1.9.6, Knative 0.22.1을 포함하고 있다.
미니큐브 공식 홈페이지를 통해 brew install을 진행하겠습니다.
brew install minikube
# 드라이버 설치
brew install hyperkit
앞으로 Minikube kubectl을 이용해 작업을 진행할 것이기 때문에,
간단하게 미니쿠버를 어떻게 이용하는지 살펴봅시다.
관리자 액세스 권한이 있는 터미널에서(루트로 로그인하지 않음) 다음을 실행합니다.
minikube start --driver=hyperkit --kubernetes-version=1.20.11 --memory=12288 —cpus=6 --disk-size=55g --profile mk
(base) % minikube start --driver=hyperkit --kubernetes-version=1.20.11 --memory=8g —cpus=4 --profile kf-1.4
😄 [kf-1.4] Darwin 12.0.1 의 minikube v1.24.0
✨ 유저 환경 설정 정보에 기반하여 hyperkit 드라이버를 사용하는 중
💾 드라이버 docker-machine-driver-hyperkit 다운로드 중 :
> docker-machine-driver-hyper...: 65 B / 65 B [----------] 100.00% ? p/s 0s
> docker-machine-driver-hyper...: 8.35 MiB / 8.35 MiB 100.00% 6.55 MiB p/s
🔑 The 'hyperkit' driver requires elevated permissions. The following commands will be executed:
$ sudo chown root:wheel /Users/noharam/.minikube/bin/docker-machine-driver-hyperkit
$ sudo chmod u+s /Users/noharam/.minikube/bin/docker-machine-driver-hyperkit
Password:
💿 가상 머신 부트 이미지 다운로드 중 ...
> minikube-v1.24.0.iso.sha256: 65 B / 65 B [-------------] 100.00% ? p/s 0s
> minikube-v1.24.0.iso: 225.58 MiB / 225.58 MiB [] 100.00% 5.68 MiB p/s 40s
👍 kf-1.4 클러스터의 kf-1.4 컨트롤 플레인 노드를 시작하는 중
💾 쿠버네티스 v1.20.11 을 다운로드 중 ...
> preloaded-images-k8s-v13-v1...: 471.84 MiB / 471.84 MiB 100.00% 5.35 MiB
🔥 hyperkit VM (CPUs=2, Memory=8192MB, Disk=20000MB) 를 생성하는 중 ...
🐳 쿠버네티스 v1.20.11 을 Docker 20.10.8 런타임으로 설치하는 중
▪ 인증서 및 키를 생성하는 중 ...
▪ 컨트롤 플레인이 부팅...
▪ RBAC 규칙을 구성하는 중 ...
🔎 Kubernetes 구성 요소를 확인...
▪ Using image gcr.io/k8s-minikube/storage-provisioner:v5
🌟 애드온 활성화 : storage-provisioner, default-storageclass
❗ /usr/local/bin/kubectl is version 1.23.1, which may have incompatibilites with Kubernetes 1.20.11.
▪ Want kubectl v1.20.11? Try 'minikube kubectl -- get pods -A'
🏄 끝났습니다! kubectl이 "kf-1.4" 클러스터와 "default" 네임스페이스를 기본적으로 사용하도록 구성되었습니다.
(base) % minikube addons list -p kf-1.4
|-----------------------------|---------|--------------|-----------------------|
| ADDON NAME | PROFILE | STATUS | MAINTAINER |
|-----------------------------|---------|--------------|-----------------------|
| ambassador | kf-1.4 | disabled | unknown (third-party) |
| auto-pause | kf-1.4 | disabled | google |
| csi-hostpath-driver | kf-1.4 | disabled | kubernetes |
| dashboard | kf-1.4 | disabled | kubernetes |
| default-storageclass | kf-1.4 | enabled ✅ | kubernetes |
| efk | kf-1.4 | disabled | unknown (third-party) |
| freshpod | kf-1.4 | disabled | google |
| gcp-auth | kf-1.4 | disabled | google |
| gvisor | kf-1.4 | disabled | google |
| helm-tiller | kf-1.4 | disabled | unknown (third-party) |
| ingress | kf-1.4 | disabled | unknown (third-party) |
| ingress-dns | kf-1.4 | disabled | unknown (third-party) |
| istio | kf-1.4 | disabled | unknown (third-party) |
| istio-provisioner | kf-1.4 | disabled | unknown (third-party) |
| kubevirt | kf-1.4 | disabled | unknown (third-party) |
| logviewer | kf-1.4 | disabled | google |
| metallb | kf-1.4 | disabled | unknown (third-party) |
| metrics-server | kf-1.4 | disabled | kubernetes |
| nvidia-driver-installer | kf-1.4 | disabled | google |
| nvidia-gpu-device-plugin | kf-1.4 | disabled | unknown (third-party) |
| olm | kf-1.4 | disabled | unknown (third-party) |
| pod-security-policy | kf-1.4 | disabled | unknown (third-party) |
| portainer | kf-1.4 | disabled | portainer.io |
| registry | kf-1.4 | disabled | google |
| registry-aliases | kf-1.4 | disabled | unknown (third-party) |
| registry-creds | kf-1.4 | disabled | unknown (third-party) |
| storage-provisioner | kf-1.4 | enabled ✅ | kubernetes |
| storage-provisioner-gluster | kf-1.4 | disabled | unknown (third-party) |
| volumesnapshots | kf-1.4 | disabled | kubernetes |
|-----------------------------|---------|--------------|-----------------------|
(base) noharam@nohalam-ui-MacBookPro ~ % minikube profile list
|---------|-----------|---------|--------------|------|----------|---------|-------|
| Profile | VM Driver | Runtime | IP | Port | Version | Status | Nodes |
|---------|-----------|---------|--------------|------|----------|---------|-------|
| kf-1.4 | hyperkit | docker | 192.168.64.2 | 8443 | v1.20.11 | Running | 1 |
|---------|-----------|---------|--------------|------|----------|---------|-------|
minikube dashboard -p kf-1.4
(base) noharam@nohalam-ui-MacBookPro ~ % kubectl config current-context
kf-1.4
(base) ~ % kubectl config get-clusters
NAME
kf-1.4
arn:aws:eks:ap-northeast-2:174950111464:cluster/automl-dsme-knu
arn:aws:eks:ap-northeast-2:174950111464:cluster/environment-predict
(base) ~ % kubectl config get-user
error: unknown command "get-user"
See 'kubectl config -h' for help and examples
(base) ~ % kubectl config get-users
NAME
arn:aws:eks:ap-northeast-2:174950111464:cluster/automl-dsme-knu
arn:aws:eks:ap-northeast-2:174950111464:cluster/environment-predict
kf-1.4
Minikube에서 Kubeflow가 설치/실행 될 수 있도록 리소스(CPU/Memory)를 할당,
kubernetes 1.20.11를 설치한다.
minikube start --driver=hyperkit --kubernetes-version=1.20.11 --memory=8g —cpus=4 --profile kf-1.4
✓ Kustomize는 kustomization 파일을 통해 Kubernetes 오브젝트를 사용자가 원하는 대로 변경하는(customize) 툴이다.
✓ 본 문서에서는 맥에 설치되어 있는 kustomize (v4.0.5)를 사용하였다.
wget https://github.com/kubernetes-sigs/kustomize/releases/download/v3.2.0/kustomize_3.2.0_darwin_amd64
chmod +x kustomize_3.2.0_darwin_amd64
mv kustomize_3.2.0_darwin_amd64 /usr/local/bin/kustomize
export PATH=$PATH:/usr/local/bin/kustomize
(base) % kustomize version
Version: {KustomizeVersion:3.2.0 GitCommit:a3103f1e62ddb5b696daa3fd359bb6f2e8333b49 BuildD
Kubeflow를 설치하는 방법으로는 단일 명령어 설치와 개별 컴포넌트 설치가 있다.
github에서 Kubeflow Manifests 최신 소스를 복제한다.
git clone https://github.com/kubeflow/manifests.git
(base) % git clone https://github.com/kubeflow/manifests.git
'manifests'에 복제합니다...
remote: Enumerating objects: 24463, done.
remote: Counting objects: 100% (18/18), done.
remote: Compressing objects: 100% (15/15), done.
remote: Total 24463 (delta 5), reused 8 (delta 2), pack-reused 24445
오브젝트를 받는 중: 100% (24463/24463), 41.43 MiB | 5.49 MiB/s, 완료.
델타를 알아내는 중: 100% (14559/14559), 완료.
Updating files: 100% (7077/7077), 완료.
(base) % ls
manifests
(base) % cd manifests
(base) %
Kubeflow 1.4.1를 단일 명령어로 설치한다.
while ! kustomize build example | kubectl apply -f -; do echo "Retrying to apply resources"; sleep 10; done
설정 변경은
1. minikube stop
2. vim ~/.minikube/config/config.json(설정 변경 후 저장해주세요)
3. minikube start 입니다.해당 방식으로는 hyperkit 드라이버로 설치한 경우에 가능하다는 이야기가 있습니다. 혹시 안될 경우 minikube delete로 클러스터를 삭제한 후 설정을 바꿔 새로 클러스터를 생성하시기 바랍니다.
Dashboard에 접속하기 위한 URL 정보를 조회한다.
Kubeflow Central Dashboard는 Istio를 통해서 제공되기 때문에 istio-ingressgateway 서비스의 NodePort 정보를 알아야 합니다.
k get svc istio-ingressgateway -n istio-system
서비스 리스트에서 http2/80의 URL를 찾아서 접속해주시면 됩니다!
Dashboard에 접속한다.
- URL: http://192.168.64.5:31050
- Email / Password: user@example.com / 12341234
- 암호를 변경하고자 할 경우 'https://github.com/kubeflow/manifests#change-default-user-password'를 참고하세요!