이번 포스트에는 virtual box 에 ubuntu 20.04설치하고, docker, minikube를 설치해보겠습니다.
virtual box로 ubuntu20.04 서버 구성이 안되신 분들은 아래의 포스트를 참조해주세요.
구축하는데 필요한 최소한의 자원
- 2개 이상의 CPU
- 2GB의 free memory
- 20GB의 free 디스크 공간
- 인터넷 연결
- 컨테이너, 가상머신 매니저: Docker, Hyperkit, Hyper-V, KVM, Parallels, Podman, VirtualBox, or VMware Fusion/Workstation
내가 설정한 자원량
- 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/
'DevOps > K8S' 카테고리의 다른 글
[Kubernetes] kubespray with ansible로 aws EC2에 kubernetes cluster 설치하기(ubuntu 18.04 LTS) (0) | 2022.10.09 |
---|
댓글