일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Kubernetes
- Kibana
- Python
- 하이브
- Spark
- Kubeflow
- yarn
- 데이터 아키텍처
- Opensearch
- etl
- 파이썬처럼생각하기
- fluentd
- 데이터 플랫폼
- 머신러닝
- MachineLearning
- mesos
- 쿠버플로우
- 쿠버네티스
- TABNET
- MLOps
- hive
- 리눅스
- Minikube
- 파이썬답게생각하기
- gcp
- 파이썬
- AWS Glue
- 쿠버플로
- Tabular
- elk
- Today
- Total
데이터를 걷는 선비
[Kubeflow] Minikube로 Kubeflow(v1.7) 설치하기 본문
[순서]
- 1) WSL 2 설치하기
- 2) Docker 설치하기
- 3) minikube 설치하기
- 4) Kubeflow 설치할 버전 확인하고 종속된 버전들 확인하기
- 5) Kustomize 설치하기
- 6) Kubectl 설치하기
- 7) Kubeflow manifests 내려받기
- 8) Kustomize로 manifests apply
- 9) [선택] Minikube 외부통신을 위한 인증서 설치하기
- 10) Kubeflow 대시보드 확인하기
[Prerequisite] - Kubeflow 설치를 위한 조건 및 가정
- WSL2, Docker는 설치되어 있다고 가정 => Docker 설치는 공식문서 참조!! (공식문서가 제일 깔끔한 것 같습니다.)
- WSL은 amd 기반의 cpu를 기준으로 함(arm은 꼭 공식 문서 및 별도 자료 참조!!)
https://docs.docker.com/engine/install/ubuntu/
Install Docker Engine on Ubuntu
docs.docker.com
- Kubeflow => 1.7
- Kustomize => 5.0.0
- Kubernetes => 1.25.2
- Kubectl => 1.22.1
3) minikube 설치하기
minikube는 가벼운 쿠버네티스 구현체이며, 하나의 노드로 구성된 간단한 클러스터를 생성할 수 있다.
일반 초급 사용자가 본인의 로컬 PC 환경에서 체험하기 적합하기에 실습용으로 minikube를 선택했다.
- minikube의 바이너리를 다운 받고, 실행할 수 있도록 변경해줍니다.
curl -LO https://storage.googleapis.com/minikube/releases/v1.30.1/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
- 정상 다운로드 확인
minikube --help
- minikube version 확인
minikube version
4) Kubeflow 설치할 버전 확인하고 종속된 버전들 확인하기
https://github.com/kubeflow/manifests
GitHub - kubeflow/manifests: A repository for Kustomize manifests
A repository for Kustomize manifests. Contribute to kubeflow/manifests development by creating an account on GitHub.
github.com
다시 설명 드리겠지만 Kubeflow는 위 깃허브 주소의 manifests 파일을 통해 설치할 것입니다.
Kubeflow는 버전에 따라 종속되는 라이브러리의 버전이 예민하니
꼭 설치하기 전 본인의 Kubeflow 버전에 해당하는 라이브러리의 버전을 확인하시길 바랍니다.
5) Kustomize 설치하기
kustomize는 helm과 비슷하게 여러 개의 yaml파일 들을 쉽게 관리하 위해 사용되는 도구입니다.
여러 resource 들의 configuration을 템플릿과 커스터마이제이션한 부분을 나누어 관리할 수 있습니다.
# 바이너리 다운 (for linux amd64)
# 이외의 os 는 https://github.com/kubernetes-sigs/kustomize/releases/tag/v5.0.0 경로에서 binary 링크 확인
wget https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize%2Fv5.0.0/kustomize_v5.0.0_linux_amd64.tar.gz
#압축해제
tar -zxvf kustomize_v5.0.0_linux_amd64.tar.gz
# file mode 변경
chmod +x kustomize
# file 위치 변경
sudo mv kustomize /usr/local/bin/kustomize
# 버전 확인
kustomize version
바이너리 링크를 받아 준 뒤, 권한을 허용하고, 파일 위치를 변경해 줍니다.
정상적으로 설치되면 version확인을 할 수 있습니다.
https://github.com/kubernetes-sigs/kustomize/releases?page=3
Releases · kubernetes-sigs/kustomize
Customization of kubernetes YAML configurations. Contribute to kubernetes-sigs/kustomize development by creating an account on GitHub.
github.com
6) Kubectl 설치하기
kubectl은 쿠버네티스 클러스터(서버)에 간편하게 요청을 보내기 위해 사용되는 툴입니다.
- v1.22.1
curl -LO https://dl.k8s.io/release/v1.22.1/bin/linux/amd64/kubectl
- kubectl 바이너리를 사용할 수 있도록 권한과 위치를 변경합니다.
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
- kubectl version 확인을 통해 kubectl이 잘 설치됐는지 확인합니다.
kubectl version
7) Kubeflow manifests 내려받기
manifests로 kubeflow를 설치하기 위해선 우선 git을 복사하고, 설치하고자 하는 버전으로 태그 시점을 변경해줘야 합니다.
# git clone
git clone https://github.com/kubeflow/manifests.git
# 해당 폴더로 이동
cd manifests
# v1.7.0 태그 시점으로 git checkout
git checkout tags/v1.7.0
그런 다음 실제 UI 상으로도 Tag를 변경해줍니다.
8) Kustomize로 manifests apply
우선 minikube를 시작해줍니다.
# minikube start
# docker driver option
# cpu 4 개 할당
# memory 5g 할당
# kubernetes version v1.24.2 설정
# --extra-config 부분은 tokenRequest 활성화 관련 설정
#(선택) 간혹 인증 문제 발생시 force 등록
minikube start --driver=docker \
--cpus='4' --memory='5g' \
--kubernetes-version=v1.25.2 \
--extra-config=apiserver.service-account-signing-key-file=/var/lib/minikube/certs/sa.key \
--extra-config=apiserver.service-account-issuer=kubernetes.default.svc
--force
그런 다음 아래 커멘드를 입력해 각 구성요소 이미지를 받은 후
모든 구성요소가 Running이 될 때까지 기다립니다.
(처음 Running 될 때는 30분 정도 걸리는 것 같습니다.)
#경로가 manifests여야 합니다.
while ! kustomize build example | awk '!/well-defined/' | kubectl apply -f -; do echo "Retrying to apply resources"; sleep 10; done
9) [선택] Minikube 외부통신을 위한 인증서 설치하기
가끔 회사에서 실습을 하다보면 docker image pull 이 안되는 것을 확인할 수 있습니다.
이는 사내 망에서 통신이 막혀 있어 발생하는 문제로 저는 다음과 같은 방식으로 통신 문제를 해결했습니다.
(1) 사내 인증서 등록하기
#인증서 경로 이동
sudo cp /mnt/c/{인증서이름} /etc/ssl/certs/
#인증서 업데이트
sudo update-ca-certificates
(2) minikube 외부통신을 위한 인증서 등록하기
#minikube 통신을 위한 인증서 폴더 생성
mkdir -p ~/.minikube/files/etc/ssl/certs
#인증서 이동
cp mnt/c/{인증서 위치} ~/.minikube/files/etc/ssl/certs
#minikube 삭제
minikube delete
#minikube 재시작
minikube start
10) Kubeflow 대시보드 확인하기
(1) 파드 목록 보기
kubectl get po -A
(2) istio-ingressgateway
kubectl port-forward svc/istio-ingressgateway -n istio-system 8080:80
(3) http://localhost:8080 => ID: user@example / PW: 12341234
(4) 대시보드 확인
'Machine Learning > MLOps' 카테고리의 다른 글
[Kubeflow] 쿠브플로 아키텍처(Kubeflow Architecture) 개요 (0) | 2023.08.14 |
---|---|
[CI/CD] Jenkins(젠킨스) 개념 및 실습(Python) (0) | 2023.08.10 |
[CI/CD] Jenkins(젠킨스) 개념 및 설치 방법!! (0) | 2023.07.29 |
[Kubeflow] Kubeflow의 개념과 기능들!! (0) | 2023.07.09 |
[MLOps] ML Workflow(머신러닝 워크플로) 란? (0) | 2023.07.03 |