사실 kubeflow 설치를 1월 중순에 시도했습니다. 안되서 2월 초에 새로운 마음으로 다시 시도하였습니다. 지금 생각해보니 도커 권한이 없어서 이미지를 못받아와서 모든 것들이 어그러진 것 같더군요,, 여튼 제대로 성공하여 바로 글로 작성해봅니다 ㅎㅎ
Ubuntu 22.04 LTS 에서 실행하였습니다. 쿠버네티스는 1.32 버전을 사용합니다. 또한 minikube 를 사용합니다.
1. install mysql, install docker
2. install kubernetes
https://www.whatwant.com/entry/Kubeflow-in-Kubernetes
https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/
cd ~
mkdir kubeflow
cd kubeflow
curl -LO https://dl.k8s.io/release/v1.32.0/bin/linux/amd64/kubectl
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
kubectl version --client
2. install kustomize
curl -s "<https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh>" | bash
sudo install -o root -g root -m 0755 kustomize /usr/local/bin/kustomize
kustomize version # v5.6.0
3. install minikube
https://minikube.sigs.k8s.io/docs/start/?arch=%2Flinux%2Fx86-64%2Fstable%2Fbinary+download
curl -LO <https://github.com/kubernetes/minikube/releases/latest/download/minikube-linux-amd64>
sudo install minikube-linux-amd64 /usr/local/bin/minikube && rm minikube-linux-amd64
minikube start
kubectl get po -A
4.nfs 설정
https://www.whatwant.com/entry/NFS-Server-Ubuntu-1804 <<< 정말 감사합니다!!!
5. install helm
wget https://get.helm.sh/helm-v3.12.3-linux-amd64.tar.gz
tar zxvf helm-v3.12.3-linux-amd64.tar.gz
cd linux-amd64
sudo install -o root -g root -m 0755 helm /usr/local/bin/helm
cd ..
helm repo add nfs-subdir-external-provisioner <https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/>
helm install nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner --set nfs.server=10.50.0.44 --set nfs.path=/data/mjjeon/nfs
만약에 kubectl cluster-info 명령어를 써서 아래와 같은 에러가 난다면,
E0201 13:12:27.734453 2056597 memcache.go:238] couldn't get current server API group list: Get "https://127.0.0.1:6443/api?timeout=32s": dial tcp 127.0.0.1:6443: connect: connection refused
→ minikube 는 동적으로 ip 를 생성하기 때문에 ~/.kube/config 파일을 수정했을 가능성이 있다.
kubectl cluster-info # 현재 확인
minikube status
minikube ip
kubectl config view
kubectl config use-context minikube
minikube stop
minikube start
위 명령어로 확인해서 원래의 ip 값으로 바꿔주고, minikube status 확인하고 다시 kubectl cluster-info 로 잘 돌아가는지 확인
만약에 client / server 버전 다를 때
6. install kind
curl -Lo ./kind <https://kind.sigs.k8s.io/dl/v0.26.0/kind-linux-amd64>
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind
kind 설치 이후에 아래 그대로 따라함
7. install kubeflow
kind 설치 이후에 아래 그대로 따라함
https://github.com/kubeflow/manifests?tab=readme-ov-file#install-with-a-single-command
7.1. 리눅스에서는 아래와 같이 명령어 입력 Linux kernel subsystem changes to support many pods
sudo sysctl fs.inotify.max_user_instances=2280
sudo sysctl fs.inotify.max_user_watches=1255360
7.2. Create kind cluster
cat <<EOF | kind create cluster --name=kubeflow --config=-
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
image: kindest/node:v1.32.0@sha256:c48c62eac5da28cdadcf560d1d8616cfa6783b58f0d94cf63ad1bf49600cb027
kubeadmConfigPatches:
- |
kind: ClusterConfiguration
apiServer:
extraArgs:
"service-account-issuer": "kubernetes.default.svc"
"service-account-signing-key-file": "/etc/kubernetes/pki/sa.key"
EOF
7.3. Save kubeconfig
kind get kubeconfig --name kubeflow > /tmp/kubeflow-config
export KUBECONFIG=/tmp/kubeflow-config
7.4. Create a Secret based on existing credentials in order to pull the images
도커 허브 회원가입 해야합니다. Docker Hub Container Image Library | App Containerization 에서 회원가입하고, 구글계정이나 그렇게 가입했을 경우, 우측 상단의 프로필 설정으로 가서 메일을 이용해 비밀번호를 초기화해서 설정하면 됩니다. 계정정보 입력하면 됩니다. 이거 안 하면 이미지를 풀을 못해서 계속 설치가 안되고 pod 확인 시에 계속 crash 납니다 ㅠㅠ
docker login
kubectl create secret generic regcred \\
--from-file=.dockerconfigjson=$HOME/.docker/config.json \\
--type=kubernetes.io/dockerconfigjson
자 이제 설치합니다.
git clone https://github.com/kubeflow/manifests.git
cd manifests
while ! kustomize build example | kubectl apply --server-side --force-conflicts -f -; do echo "Retrying to apply resources"; sleep 20; done
확인해보죠
kubectl get pods -n cert-manager
kubectl get pods -n istio-system
kubectl get pods -n auth
kubectl get pods -n knative-eventing
kubectl get pods -n knative-serving
kubectl get pods -n kubeflow
kubectl get pods -n kubeflow-user-example-com
kubectl port-forward svc/istio-ingressgateway -n istio-system 8080:80
자 이제 들어갑시다~~~
http://localhost:8080
Dex login screen이 보이면 아래 계정 정보를 입력하여 로그인합니다.
email : user@example.com
password : 12341234
왼쪽 메뉴들이 잘 눌러집니다 ㅎㅎ 이전에는 안 눌러졌었는데 처음에는 아마 이미지 받는 부분이 다 안되서 팟 확인 시 crash 난 것들이 많았었습니다,, 이제 잘 되니 이후에는 gpu도 연결하고 학습까지 해봐야겠네요 ㅎㅎ
수고하셨씁니다!!!
'공부 > 튜토리얼' 카테고리의 다른 글
java 17 mac silicon m1 설치 (0) | 2024.05.02 |
---|---|
[토크ON세미나] 딥러닝 기반 음성인식 기초 3,4,5강 (0) | 2023.05.09 |
[토크ON세미나] 딥러닝 기반 음성인식 기초 1,2강 - 딥러닝 기초 I, II | T아카데미 (0) | 2023.05.03 |
Learn Git Branching (0) | 2023.05.02 |
Dot products and duality | Chapter 9, Essence of linear algebra (0) | 2022.11.19 |