본문 바로가기
DevOps/K8S

[Kubernetes] MiniKube + docker ubuntu 20.04에 설치하기

by 스파이디웹 2022. 9. 23.
728x90

이번 포스트에는 virtual box 에 ubuntu 20.04설치하고, docker, minikube를 설치해보겠습니다.

 

virtual box로 ubuntu20.04 서버 구성이 안되신 분들은 아래의 포스트를 참조해주세요.

2021.04.26 - [BigData/Hadoop] - [Hadoop] virtual box linux [ubuntu 18.04]에 하둡 설치,다운로드 1.virtualbox에 ubuntu 설치하기

 

[Hadoop] virtual box linux [ubuntu 18.04]에 하둡 설치,다운로드 1.virtualbox에 ubuntu 설치하기

1.virtual box를 다운로드한다. www.virtualbox.org/wiki/Downloads Downloads – Oracle VM VirtualBox Download VirtualBox Here you will find links to VirtualBox binaries and its source code. VirtualBox..

spidyweb.tistory.com

구축하는데 필요한 최소한의 자원


내가 설정한 자원량

  • 2개의 CPU
  • 4GB 메모리
  • 32GB의 free디스크 공간 

1. 도커 설치하기

1) Update Software Repositories

sudo apt-get update

2) Download Dependencies

sudo apt-get install apt-transport-https ca-certificates curl software-properties-common

 

3) add docker's GPG key

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

 

4) Install the Docker Repository

 

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu  $(lsb_release -cs)  stable"

5) update repositories

sudo apt-get update

6) Install Latest Version of Docker

sudo apt-get install docker-ce

 

7) enabale / start docker

sudo systemctl enable docker
sudo systemctl start docker

2. cri-dockerd 설치하기

1) git repo에서 받아오기

git clone https://github.com/Mirantis/cri-dockerd.git

2) systemd를 사용하는 linux시스템에 docker engine이 이미 설치된 상태에서 cri-dockerd 설치 하는 법

wget https://storage.googleapis.com/golang/getgo/installer_linux
chmod +x ./installer_linux
./installer_linux
source ~/.bash_profile
cd cri-dockerd
mkdir bin
go build -o bin/cri-dockerd
mkdir -p /usr/local/bin
sudo install -o root -g root -m 0755 bin/cri-dockerd /usr/local/bin/cri-dockerd
sudo cp -a packaging/systemd/* /etc/systemd/system
sudo sed -i -e 's,/usr/bin/cri-dockerd,/usr/local/bin/cri-dockerd,' /etc/systemd/system/cri-docker.service
sudo systemctl daemon-reload
sudo systemctl enable cri-docker.service
sudo systemctl enable --now cri-docker.socket

3. Minikube + 필수 패키지 설치하기

(windows같은 경우는 OS에 맞는 하이퍼바이저를 설치 해주어야 하지만, linux(ubuntu)에서는 필요없으므로 건너뜁니다.)

 

1) curl 설치(없다면)

sudo apt install curl

2) minikube 설치 + 권한부여

cd ~
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 \
  && chmod +x minikube

sudo mkdir -p /usr/local/bin/
sudo install minikube /usr/local/bin/

 

3) conntrack설치

conntrack란?

connection tracking의 줄임말로 현재의 시스템에서 기존의 모든 connection을 저장.
iptables의 상태추적 모듈로 NAT 테이블, FTP 등과 관련이 있는 모듈로, 현재 접속 상태에 대한 정보를 일정 시간 동안 시스템에 기억하도록 해주는 모듈
iptables에서는 conntrack 모듈을 이용해 각 테이블에 등록된 IP의 연결을 추적

conntrack 설치

sudo apt-get install -y conntrack

4) crictl 설치

crictl란?

crictl은 
CRI 호환 컨테이너 런타임을위한 CLI (커맨드 라인 인터페이스)
이를 사용하여 Kubernetes 노드에서 컨테이너 런타임과 애플리케이션을 검사하고 디버깅
VERSION="v1.24.2"
wget https://github.com/kubernetes-sigs/cri-tools/releases/download/$VERSION/crictl-$VERSION-linux-amd64.tar.gz
sudo tar zxvf crictl-$VERSION-linux-amd64.tar.gz -C /usr/local/bin
rm -f crictl-$VERSION-linux-amd64.tar.gz

 

5) minikube 시작

sudo minikube start --vm-driver=none

위 사진과 같이 나오면 정상적으로 실행 된 것입니다.

 

6) kubectl 설치

sudo apt-get update && sudo apt-get install -y apt-transport-https gnupg2
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update && sudo apt-get install -y kubectl

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

kubectl version 확인

sudo kubectl version

 

 

7) calico network plugin 설치

calico network plugin이란?

컨테이너, 가상 머신 및 기본 호스트 기반 워크로드를 위한 오픈 소스 네트워킹 및 네트워크 보안 솔루션
k8s에서 각 Node에 설치되어 각 Pod 간 네트워크 통신이 가능하도록 도와주는 역할
curl https://docs.projectcalico.org/manifests/calico-typha.yaml -o calico.yaml

kubectl apply -f calico.yaml

 

 

8) minikube 상태확인

sudo minikube status

 

 

*error

 Exiting due to GUEST_PROVISION 와 같은 에러가 뜬다면

sudo minikube delete

이후에 다시 sudo minikube start --vm-driver=none 명령어를 해주세요.

 


4. Kubectl 실습

쿠버네티스 api에 명령을 전송 하려면 kubectl을 이용

kubectl 에 대해 더 알고 싶으시면 아래의 링크를 참조해주세요

2022.09.07 - [Docker & K8S/K8S] - [Kubernetes] kubernetes 명령어 - kubectl

 

1) kubectl 클러스터 정보확인

sudo kubectl cluster-info

2) kubectl node확인

sudo kubectl get nodes

3) kubectl event확인

sudo kubectl get events

 

4) kubectl config 확인

sudo kubectl config view

5) hello server, nginx 띄우고, expose(공개 배포하기)

sudo kubectl create deployment web --image=gcr.io/google-samples/hello-app:1.0

sudo kubectl expose deployment web --type=NodePort --port=8080

sudo kubectl run webserver --image=nginx:1.14 --port 80

6) pod 확인

sudo kubectl get po -o wide

(or)
sudo kubectl get pods -o wide

7) deployment 확인

sudo kubectl get deployment

8) 서비스 확인하기

sudo kubectl get svc

(or)
sudo kubectl get services

9) curl로 서비스 불러와보기

# hello server 확인
curl http://10.244.233.4:8080

# 외부에서 hello server 확인 minikube cluster 내부 ip는 현재 10.0.2.15
sudo minikube ip
curl -v http://10.0.2.15:32252

# nginx 확인
curl http://10.244.233.3

10) 외부 브라우저에서 k8s 앱 접근하기

virtual box 밖의 외부 브라우저에서 virtualbox내의 k8s app에 접근하려면 포트포워딩을 k8s minikube 클러스터 ip에 외부포트를 해주어야 한다.

*error

The connection to the server localhost:8080 was refused

-해당 메시지가 발생하는 경우는 보통 쿠버네티스 컨피그 파일이 $HOME/.kube 디렉토리 밑에 없거나, 현재 유저정보가 쿠버네티스 컨피그 파일에 반영되지 않은 경우에 발생

-minikube도 시작되어 있어야 함


5. minikube dashboard

K8S 클러스터의 rancher처럼 minikube도 GUI를 지원

 

1) addons list 보기

addons란?

쿠버네티스의 추가 기능에 사용되는 미니큐브의 확장판
(스타크래프트 팩토리의 그 에드온을 생각하면 될 것 같습니다.)
sudo minikube addons list

2) dash board enable시키기

sudo minikube addons enable dashboard

sudo minikube dashboard

 

위와 같이 실행하게되면 virtualbox 내의 ubuntu browser에서는 확인할 수 있지만 외부에서 확인할 수 없습니다.

따라서 proxy server의 ip를 조정해줍니다.

kubectl proxy --address='0.0.0.0' --disable-filter=true

이후 네트워크설정에서

8001번 포트를 포트포워딩해줍니다.

http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/

이후에 위의 주소를 쳐주게되면

다음과 같이 k8s minkube dashboard에 접근 할 수 있습니다.

 

참조:

https://itguava.tistory.com/125

https://velog.io/@dohyunkim12/Minikube-%EC%8B%A4%EC%8A%B5

https://www.fosstechnix.com/how-to-install-minikube-on-ubuntu-20-04-lts/

https://krksap.tistory.com/1798

728x90

댓글