
Kubernetes는 컨테이너 오케스트레이션을 위한 강력한 도구다. 하지만, 처음 시작할 때 직접 클러스터를 구축하는 것은 쉽지 않다. 이를 간단하게 실습할 수 있도록 돕는 것이 바로 Minikube이다. 이번 실습에서는 AWS EC2 인스턴스에서 Minikube를 설치하고, 기본 애플리케이션을 배포 및 외부에서 접근하는 방법을 익힌다.
Kubernetes 클러스터를 직접 구성하려면 복잡한 설정이 필요하다. 하지만 Minikube를 사용하면 단일 노드 클러스터를 간단하게 실행할 수 있다. 즉, 로컬 환경에서도 Kubernetes를 테스트할 수 있는 강력한 도구다!
아래 스크립트를 실행하면 Docker, Minikube, kubectl까지 자동으로 설치된다.
#!/bin/bash
set -e
# 패키지 업데이트
sudo apt update && sudo apt upgrade -y
# Docker 설치
sudo apt install -y docker.io
sudo usermod -aG docker $USER
newgrp docker
sudo systemctl enable docker
sudo systemctl start docker
# kubectl 설치
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
rm kubectl
# Minikube 설치
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
rm minikube-linux-amd64
# Minikube 시작
minikube start --driver=docker
# Minikube 상태 확인
minikube status
스크립트를 저장한 후 실행하면 된다.
chmod +x install_minikube.sh
./install_minikube.sh
Minikube가 정상적으로 실행되었는지 확인하는 가장 쉬운 방법은 간단한 애플리케이션을 배포해보는 것이다. 여기서는 Kubernetes에서 기본적으로 제공하는 echoserver를 배포한다.
kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.5
kubectl expose deployment hello-minikube --type=NodePort --port=8080
kubectl get pods
kubectl get services
minikube ip
kubectl get services hello-minikube -o=jsonpath='{.spec.ports[0].nodePort}'
브라우저에서 http://<Minikube_IP>:<NodePort>로 접근하여 응답을 확인한다.
로컬에서 Kubernetes 내부 서비스로 접근하고 싶다면?
kubectl port-forward --address 0.0.0.0 service/hello-minikube 8000:8080
이후 터미널에서 확인해보자.
curl http://localhost:8000
AWS 보안 그룹에서 NodePort(32000~32767 포트 대역)를 허용해야 외부에서 접근할 수 있다.
curl http://<Minikube_IP>:<NodePort>