오늘은 온프레미스 우분투 서버에서 Minikube를 이용해서 kubeflow를 구축해보겠습니다!
리눅스 정보 확인
uname -m
x86-64
다운로드 정보 받아오기
cd Desktop \ mkdir minikube \ cd minikube
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
minikube start에서 사용할 도커 정보 확인하기
HyperKit 은 경량 가상 머신 및 컨테이너 배포에 최적화된 macOS 하이퍼바이저용 오픈 소스 하이퍼바이저입니다.
docker info --format '{{.OSType}}'
으로 도커 포맷이 linux인지 확인합니다.sudo su
docker version
docker 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=minikube
sudo snap alias kubectl k
sudo snap alias minikube m
m 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
![](https://velog.velcdn.com/images%2Fmoey920%2Fpost%2F45ded7cb-d4b2-49c1-9fe4-5340046807be%2Fimage.png)
$ 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 mk
alias 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-checker
kvm-ok
egrep -c ' lm ' /proc/cpuinfo
sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils
sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils
sudo adduser 'id -un' libvirt
sudo 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/kvm
sudo chown root:libvirt /dev/kvm
rmmod kvm
modprobe -a kvm
virt-host-validate
: all PASS가 나오면 문제없이 사용하실 수 있습니다. 그룹에 쓰기 권한이 없다는 오류가 나오시는 분은 위 과정을 진행하고 로그아웃 후 재로그인이 되었는지 확인해보세요!minikube start --driver=kvm2 --kubernetes-version=1.20.11 --memory=20000 —cpus=2 --nodes 4 --disk-size=80g --profile mk
minikube start --driver=docker --kubernetes-version=1.20.11 --memory=40000 —cpus=max --disk-size=100g --profile mk
minikube start --driver=docker --kubernetes-version=1.20.11 --memory=60000 —cpus=max --disk-size=200g --profile mk
minikube start --driver=docker --kubernetes-version=1.20.11 --memory=60000 —cpus=max --nodes 2 --disk-size=200g --profile mk
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 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 metallb
minikube addons configure metallb
: 192.168.49.2-192.168.49.100kubectl patch service -n istio-system istio-ingressgateway -p '{"spec": {"type": "LoadBalancer"}}'
minikube ip
minikube tunnel -c
minikube service istio-ingressgateway -n istio-system
minikube start --listen-address=0.0.0.0
kubectl proxy --address='0.0.0.0' --disable-filter=true
curl 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 miku
m profile miku
m addons enable metallb
minikube 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를 넣어보자.추후 그림으로 알아보기 쉽게 정리할 예정입니다.