1. VirtualBox 설치
2. Ubuntu VM 올리기
3. ssh 설정
4. Anaconda 설치
# 파이썬 3.8 버전의 conda 설치
wget https://repo.anaconda.com/archive/Anaconda3-2021.05-Linux-x86_64.sh
bash Anaconda3-2021.05-Linux-x86_64.sh
license -> enter / yes
conda init -> yes
설치 경로 -> 기본적으로 /home/{username}/에 설치, sudo 명령어를 사용하거나 root 계정이라면 /root/에 설치
source ~/anaconda3/bin/activate
# 또는 source /home/{username}/anaconda3/bin/activate
설치 시 conda init -> yes를 안 한 경우
conda init
source ~/.bashrc
5. 도커 설치
공식 문서 참고 : https://docs.docker.com/engine/install/ubuntu/
Install Docker Engine on Ubuntu
docs.docker.com
Linux post intall : https://docs.docker.com/engine/install/linux-postinstall/
Linux post-installation steps for Docker Engine
docs.docker.com
6. Minikube 설치 (v1.22.0)
# v1.22.0 다운로드
curl -LO https://storage.googleapis.com/minikube/releases/v1.22.0/minikube-linux-amd64
공식 문서 참고 : https://minikube.sigs.k8s.io/docs/start/
minikube start
minikube is local Kubernetes
minikube.sigs.k8s.io
7. kubectl 설치
공식 문서 "Install kubectl binary with curl on Linux" 참고 : https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/#install-kubectl-binary-with-curl-on-linux
Install and Set Up kubectl on Linux
Before you begin You must use a kubectl version that is within one minor version difference of your cluster. For example, a v1.26 client can communicate with v1.25, v1.26, and v1.27 control planes. Using the latest compatible version of kubectl helps avoid
kubernetes.io
- 스왑 비활성화
# 추후 오류 방지
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
sudo swapoff -a
8. Minikube설치
1) Kustomize 설치 (v3.2.0)
wget https://github.com/kubernetes-sigs/kustomize/releases/download/v3.2.0/kustomize_3.2.0_linux_amd64
chmod +x kustomize_3.2.0_linux_amd64
sudo mv kustomize_3.2.0_linux_amd64 /usr/local/bin/kustomize
kustomize version
2) minikube start
minikube start --driver=docker \
--cpus='4' --memory='12g' \
--kubernetes-version=v1.23.8 \
--bootstrapper=kubeadm \
--extra-config=kubelet.authentication-token-webhook=true\
--extra-config=kubelet.authorization-mode=Webhook \
--extra-config=scheduler.bind-address=0.0.0.0 \
--extra-config=controller-manager.bind-address=0.0.0.0 \
--extra-config=apiserver.service-account-signing-key-file=/var/lib/minikube/certs/sa.key \
--extra-config=apiserver.service-account-issuer=kubernetes.default.svc
만약 minikube 설치 중에 kubelet이 실행되지 않는다는 에러가 발생하면 k8s version을 1.23.8로 실행해 볼 것.
9. Kubeflow 설치
1) Git clone kubeflow/manifasts
git clone https://github.com/kubeflow/manifests.git
2) 컴포넌트 설치 (v1.4.0)
! 컴포넌트들을 설치할 때 오류가 발생한다면 최신버전의 manifests를 설치하면 된다.
cd manifests
https://github.com/kubeflow/manifests/tree/v1.4.0
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
"STDIN" 이 포함된 에러 메세지가 나올 경우 잠시 기다린 다음 설치 명령어를 다시 수행한다. 컴포넌트 사이에 의존성 때문에 특정 컴포넌트의 구성 파드가 Running되기 전에 설치 명령어를 수행할 경우 에러가 발생하는 경우가 있다.
! kubeflow pod 에러
kubectl get pods -ns kubeflow

pod 실행 로그를 보면 too many open files인 경우가 있다.
kubectl logs -n kubeflow ml-pipeline-859d8dd888-dx4jm
# too many open files
linux 시스템에서 사용자마다 열 수 있는 파일 수를 제한해두기 때문에 이 제한을 풀어야 한다. uimit -aS 명령어를 통해 open files 제한이 1024임을 알 수 있다.
ulimit -aS

# 사용자 ID당 작성할 수 있는 최대 인스턴스 수 정의
sudo sysctl fs.inotify.max_user_instances=1280
# 최대 사용자 수를 정의
sudo sysctl fs.inotify.max_user_watches=655360

3) kubeflow dashboard 접속
포트포워딩 : localhost:8080으로 kubeflow 대시보드에 접속
kubectl port-forward svc/istio-ingressgateway -n istio-system 8080:80
- kubeflow manifests 배포할 때, Dex 설치 시에 접속 정보 설정을 변경하지 않으면 default 정보로 접속하면 된다
- ID : user@example.com
- PW : 12341234
10. Tunneling
Local Laptop/Desktop - ( Remote Server - VM ) 으로 환경을 구성한 경우
- Remote Server에 접속할 때 MobaXterm을 이용하는 것을 권장
- 9.5) kubeflow dashboard에서 localhost:8080에서 localhost는 RemoㅅeServer를 의미.
- MobaXterm의 Tunneling 기능을 이용해 Local Laptop/Desktop에서 VM의 Kubeflow Dashboard 접속 가능
- 아래 그림(MobaXterm Tunneling)에서 하얀색으로 색칠한 부분은 VM 접속 정보(Bridge 네트워크 IP, 사용자이름, Port)다. Remote Server는 VM 안에서 Kubeflow Dashboard를 받는 IP, Port다. (127.0.0.1:8080으로 고정) Local clients에는 Local Laptop/Desktop에서 VM에 연결할 포트번호를 임의로 지정한다. 기존에 점유하고 있는 Port로 설정을 가능하다 Tunneling 실행이되지 않으니 유의해야 한다. (특히 아무런 feedback이 없어 어떤 이유로 실행이 안되는지 파악하기 힘들다.)
- 이후 Laptop/Desktop에서 Internet Browser에 localhost:8080을 입력해 Kubeflow Dashboard에 접속할 수 있다.


'Engineering' 카테고리의 다른 글
| 도커와 컨테이너와 쿠버네티스 (0) | 2022.11.18 |
|---|