오늘은 온프레미스 우분투 서버에서 Minikube를 이용해서 kubeflow를 구축해보겠습니다!
리눅스 정보 확인
uname -mx86-64다운로드 정보 받아오기
cd Desktop \ mkdir minikube \ cd minikubecurl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64sudo install minikube-linux-amd64 /usr/local/bin/minikube

minikube start에서 사용할 도커 정보 확인하기
HyperKit 은 경량 가상 머신 및 컨테이너 배포에 최적화된 macOS 하이퍼바이저용 오픈 소스 하이퍼바이저입니다.docker info --format '{{.OSType}}'으로 도커 포맷이 linux인지 확인합니다.sudo sudocker versiondocker info --format '{{.OSType}}'
가용 메모리 정보 확인
top : 사용가능한 Mem = 63169612
가용 CPU 정보 확인
grep 'cpu cores' /proc/cpuinfo | tail -1
grep ^processor /proc/cpuinfo | wc -l
grep "physical id" /proc/cpuinfo | sort -u | wc -l
minikube start --driver=docker --kubernetes-version=1.20.11 --memory=24576 —cpus=6 --nodes 4 --disk-size=100g --profile mk
alias k=kubectl \ alias m=minikubesudo snap alias kubectl k sudo snap alias minikube mm profile mk : 기본 프로필이 mk로 사용되도록 설정m node list
https://github.com/kubernetes-sigs/kustomize/releases/tag/v3.2.0
$ curl --silent --location --remote-name \
"https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize/v3.2.3/kustomize_kustomize.v3.2.3_linux_amd64" && \
chmod a+x kustomize_kustomize.v3.2.3_linux_amd64 && \
sudo mv kustomize_kustomize.v3.2.3_linux_amd64 /usr/local/bin/kustomize
$ kustomize version

$ cd Desktop/minikube
$ git clone https://github.com/kubeflow/manifests.git
$ cd manifests/
$ while ! kustomize build example | kubectl apply -f -; do echo "Retrying to apply resources"; sleep 10; done

sudo snap install kontena-lens --classic
minikube profile mkalias m=minikube \ m service list"docker" 드라이버는 root 권한으로 실행되면 안 됩니다
- root 계정에서 docker 드라이버가 실행되면 안되는 이유 : Docker를 사용하면 Docker 호스트와 게스트 컨테이너 간에 디렉터리를 공유할 수 있습니다. 컨테이너의 액세스 권한을 제한하지 않고 그렇게 할 수 있습니다. 이것은 /host 디렉토리가 호스트의 / 디렉토리인 컨테이너를 시작할 수 있음을 의미합니다. 컨테이너는 제한 없이 호스트 파일 시스템을 변경할 수 있습니다.
- sudo su를 통해 root 계정으로 접속했던 것을 일반 계정으로 되돌리기 : su - <계정명>


WARNING: Error loading config file: /home/sysadmin/.docker/config.json: open /home/sysadmin/.docker/config.json: permission denied
- root 계정 밖에서 minikube start를 하니 도커 config file을 읽어오는데 권한 문제가 있었고, 권장으로 도커 그룹에 유저를 생성하라고 합니다.

해결방법
1) docker 그룹을 만듭니다. : sudo groupadd docker
2) docker그룹에 사용자를 추가합니다 : sudo usermod -aG docker $USER ($USER는 변경하지 않습니다)
3) linux에서는 다음 명령을 활성화하여 그룹에 대한 변경사항을 적용합니다.(다른 OS에서는 로그아웃 후 재 로그인 후 변경사항 적용을 확인합니다.) : newgrp docker
4) sudo 없이 docker 명령을 실행할 수 있는지 확인하십시오 : docker run hello-world
5) 위의 사항을 적용하기 전에 sudo 명령을 사용하여 docker 명령을 수행한 적이 있다면 permission dinied 오류가 있을겁니다. 아래와 같이 두 가지 방법으로 해결합니다.
~/.docker/ 디렉토리를 제거합니다.(저는 간단하게 이 방법을 사용했습니다. sudo rm -rf ~/.docker/
디렉터리의 소유권과 권한을 변경합니다(linux 에서만 사용). sudo chown "$USER":"$USER" /home/"$USER"/.docker -R \ sudo chmod g+rwx "$HOME/.docker" -R

6) 이제 다시 minikube start를 적용해봅시다!
egrep -q 'vmx|svm' /proc/cpuinfo && echo yes || echo no--vm-driver=None을 사용한다. None은 베어메탈을 이용한다.sudo apt install cpu-checkerkvm-ok
egrep -c ' lm ' /proc/cpuinfosudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utilssudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utilssudo adduser 'id -un' libvirtsudo adduser 'id -un' kvm
virsh list --all
sysadmin@tyan:~$ sudo ls -la /var/run/libvirt/libvirt-sock
srwxrwx--- 1 root libvirt 0 1월 17 14:38 /var/run/libvirt/libvirt-sock
sysadmin@tyan:~$ ls -l /dev/kvm
crw-rw---- 1 root kvm 10, 232 1월 17 14:38 /dev/kvmsudo chown root:libvirt /dev/kvmrmmod kvmmodprobe -a kvmvirt-host-validate : all PASS가 나오면 문제없이 사용하실 수 있습니다. 그룹에 쓰기 권한이 없다는 오류가 나오시는 분은 위 과정을 진행하고 로그아웃 후 재로그인이 되었는지 확인해보세요!
minikube start --driver=kvm2 --kubernetes-version=1.20.11 --memory=20000 —cpus=2 --nodes 4 --disk-size=80g --profile mkminikube start --driver=docker --kubernetes-version=1.20.11 --memory=40000 —cpus=max --disk-size=100g --profile mkminikube start --driver=docker --kubernetes-version=1.20.11 --memory=60000 —cpus=max --disk-size=200g --profile mkminikube start --driver=docker --kubernetes-version=1.20.11 --memory=60000 —cpus=max --nodes 2 --disk-size=200g --profile mkminikube start --driver=docker --kubernetes-version=1.20.11 --memory=60000 —cpus=max --nodes 2 --listen-address=0.0.0.0 --disk-size=200g --profile mk* minikube is not meant for production use. You are opening non-local traffic ! Listening to 0.0.0.0. This is not recommended and can cause a security vulnerability. Use at your own risk : 미니쿠버는 프로덕션용이 아닙니다. 로컬 트래픽이 아닌 것을 허용했습니다. minikube start --driver=docker --kubernetes-version=1.20.11 --memory=60000 —cpus=max --nodes 2 --listen-address=0.0.0.0 --disk-size=200g --profile miku미니쿠버 환경에서 프로덕션을 시도해봤지만 작동하지 않습니다.
minikube addons enable metallbminikube addons configure metallb : 192.168.49.2-192.168.49.100kubectl patch service -n istio-system istio-ingressgateway -p '{"spec": {"type": "LoadBalancer"}}'minikube ipminikube tunnel -cminikube service istio-ingressgateway -n istio-systemminikube start --listen-address=0.0.0.0kubectl proxy --address='0.0.0.0' --disable-filter=truecurl http://<external-ip>:8001 리눅스에 미니큐브 설치, metallb 애드온 활성화
minikube start --driver=docker --kubernetes-version=1.20.11 --memory=60000 —cpus=max --nodes 2 --listen-address=0.0.0.0 --disk-size=200g --profile mikum profile mikum addons enable metallbminikube addons configure metallb : 192.168.49.2-192.168.49.100쿠브플로 설치, external-ip 확인
$ git clone https://github.com/kubeflow/manifests.git
$ cd manifests/
$ while ! kustomize build example | kubectl apply -f -; do echo "Retrying to apply resources"; sleep 10; done
$ k get svc -n istio-system


kubectl patch service -n istio-system istio-ingressgateway -p '{"spec": {"type": "LoadBalancer"}}'
k get svc -n istio-system istio-ingressgateway
minikube tunnel -c 로 터널링 활성화
minikube tunnel -c : 터널링 활성화
aws routeR3에 도메인 등록
값/트래픽 라우팅 대상에 앞서 획득한 external-ip를 넣어보자.
추후 그림으로 알아보기 쉽게 정리할 예정입니다.


