Kubernetes는 현대 애플리케이션을 위한 강력한 컨테이너 오케스트레이션 도구입니다. 이 글에서는 Kubernetes 클러스터에서 로드밸런서를 설정하는 방법을 단계별로 설명하겠습니다. 로드밸런서는 여러 서버 간에 트래픽을 분산시켜 시스템의 가용성과 안정성을 높여줍니다. 이 튜토리얼을 통해 클라우드 환경에서의 로드밸런서 설정을 직접 해보겠습니다.

1. Kubernetes 클러스터 준비하기

Kubernetes 클러스터를 먼저 구축해야 합니다. 만약 이미 설정된 클러스터가 있다면 이 부분은 건너뛰셔도 됩니다. 로컬에서 간편하게 Kubernetes를 실행하고 싶다면 Minikube를 사용할 수 있습니다. 아래 명령어로 Minikube를 설치하고 클러스터를 시작하세요.

curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && \
sudo install minikube-linux-amd64 /usr/local/bin/minikube

# Minikube 시작
minikube start

2. 애플리케이션 배포하기

로드밸런서를 설정하기 전에 먼저 배포할 애플리케이션을 준비합니다. 여기서는 간단한 Nginx 서버를 배포하겠습니다. 다음 YAML 파일을 만들어 nginx-deployment.yaml로 저장하세요.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80

이제 다음 명령어로 Nginx를 배포합니다.

kubectl apply -f nginx-deployment.yaml

배포가 완료된 후, pods가 정상적으로 실행되고 있는지 확인합니다.

kubectl get pods

3. 서비스 생성하기

이제 Nginx 애플리케이션에 접근할 수 있는 방법을 설정해야 합니다. 로드밸런서를 사용하기 위해 Kubernetes의 Service 자원을 생성합니다. 아래와 같은 YAML 파일을 nginx-service.yaml로 저장하세요.

apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  type: LoadBalancer
  ports:
    - port: 80
      targetPort: 80
  selector:
    app: nginx

위 YAML 파일은 nginx 라벨을 가진 pod에 대해 로드밸런싱 기능을 제공하는 서비스를 설정합니다. 이 서비스를 생성하려면 다음 명령어를 사용하세요.

kubectl apply -f nginx-service.yaml

서비스가 생성된 후, 다음 명령어를 통해 서비스의 IP 주소를 확인합니다.

kubectl get services
EXTERNAL-IP 열에 표시된 IP 주소를 확인하여 Nginx 서버에 접근할 수 있습니다.

4. 로드밸런서 테스트하기

확인된 EXTERNAL-IP를 웹 브라우저에 입력하거나 curl 명령어를 사용하여 Nginx 서버에 요청을 보내 보세요.

curl http://<EXTERNAL-IP>

여러 번 요청을 보내어 로드밸런서가 여러 pod에 요청을 분산하는 것을 확인할 수 있습니다.

5. 리소스 정리하기

테스트가 끝났다면 사용한 리소스를 정리하는 것이 좋습니다. 아래 명령어로 생성한 서비스와 디플로이먼트를 삭제하세요.

kubectl delete -f nginx-service.yaml
kubectl delete -f nginx-deployment.yaml

마무리

이 튜토리얼에서는 Kubernetes 클러스터에서 로드밸런서를 설정하는 방법을 알아보았습니다. 로드밸런서는 클라우드 환경에서 애플리케이션의 가용성을 높이는 데 중요한 역할을 합니다. 다양한 서비스 및 환경에서 로드밸런서를 활용하여 효율적인 트래픽 관리와 안정적인 애플리케이션 운영을 경험해보세요. Kubernetes의 다양한 기능을 활용하여 더 나아가 복잡한 애플리케이션을 운영하는 데 기여할 것입니다.