Oops - IT

EKS 생성하기 - LB를 통한 서비스 외부 노출 본문

AWS

EKS 생성하기 - LB를 통한 서비스 외부 노출

김모우 2025. 1. 14. 22:49
반응형

 

AWS LB 종류


 

네트워크 트래픽 분산 - Elastic Load Balancing - Amazon Web Services

 

aws.amazon.com

 

  • AWS LB 다이어그램

 

  • CLB의 경우에는 이전 세대 모델로 현재는 Deprecated 된 기능입니다.
  • LB 별 기능 비교
    • ALB
      • Application 수준의 트래픽 관리 및 라우팅이 필요한 경우에 적합하며, 마이크로서비스, 컨테이너화된 환경, 웹 Application에 적합한 로드 밸런서 입니다. Application 계층에서 동작하므로, SSL 종료, 콘텐츠 기반 라우팅 등의 복잡한 라우팅 시나리오에 대한 지원을 합니다.
    • NLB
      • Network 수준의 트래픽 관리 및 라우팅이 필요한 경우에 적합하며, 고성능, 짧은 지연 시간, 확장 가능한 네트워크 수준의 밸런싱에 적합합니다. 단순하게 생각하면, Application 계층에서 동작하는 ALB의 경우에는 복잡한 라우팅 처리를 위해 Application 계층의 데이터를 활용하므로 관련 헤더나 데이터 분석에 네트워크 계층에 비해 시간이 더 소요되기 때문에 해당 작업에서 오버헤드가 발생할 수 있으며, 그에 따른 성능의 차이는 있을 수 있습니다. 그렇기 때문에 주로 NLB는 실시간 응답이나 지연시간이 중점이 되는 워크로드에 사용이 되며, 게임 시스템이나 미디어 스트리밍 등이 이에 해당됩니다.
    • GLB
      • Network GW 수준에서 트래픽을 관리 및 라우팅 하는 방식으로 클라우드 + On-Premise나 여러 리전에 걸친 트래픽을 관리하는 경우에 적합합니다. IP 기반의 라우팅이 가능합니다.
        ex) 특정 IP의 요청 -> 특정 Backend 에서 응답하게 구성 가능

 

  • 차이점 요약 (참조)

출처: https://aws.amazon.com/ko/compare/the-difference-between-the-difference-between-application-network-and-gateway-load-balancing/

 

 

 

EKS 서비스 구성


  • 이제 본론으로 돌아가서, EKS에서 구성한 Pod를 AWS에서 제공하는 LB를 통해서 클러스터 외부에서 접근할 수 있도록 인프라를 구성해보겠습니다.

 

  • K8S에서 서비스를 하는 방식은 크게 3가지가 있습니다.
    • ClusterIP
    • NodePort
    • LoadBalancer
  • 우리는 여기서 서비스를 클러스터 외부에 노출하기 위해서 NodePort, LoadBalancer 방식을 사용해보도록 하겠습니다.

 

  • 테스트에서는 앞서 구성한 Nginx 파드를 사용해보겠습니다. (https://usheep91.tistory.com/116)
    • 클러스터 내부 접근
      • 내부 접근 테스트를 위해 CURL 사용을 위한 테스트 파드를 먼저 구동합니다. (https://luvstudy.tistory.com/213)
        • > kubectl run mycurlpod --image=curlimages/curl -i --tty -- sh
        • 서비스 확인
          • curl -X GET nginx.default.svc.cluster.local

 

 

    • 클러스터 외부 접근
      • 아래 Git에 메니페스트 파일은 업로드 해두었습니다.
      • 서비스 생성 (노드 포트)
        • nginx_svc_nodeport.yaml
      • 서비스 생성 (로드밸런서)
        • AWS ELB와 연동하기 위해 ingress-nginx-controller를 먼저 실행해줍니다.
          • 저는 Helm을 통해서 설치 진행하였습니다.
          • > kubectl create namespace -n ingress-nginx
          • > helm install ingress-nginx ingress-nginx/ingress-nginx -n ingress-nginx
          • 구동 확인

            • 이제 EKS Cluster 에서 LB 형태로 서비스를 띄울 준비가 완료되었습니다.
            • LB 타입으로 서비스를 생성하는 매니페스트를 통해 서비스를 생성해 보겠습니다.
          • nginx_svc_lb.yaml
      • 서비스 생성 완료 확인
        • > kubectl get svc -n default

 

 

EKS 서비스 접근 테스트


  • 정상적으로 LB 타입 서비스가 생성되었다면, AWS Console에서 확인 시 아래와 같이 실제 LB 리소스가 생성된 것을 확인하실 수 있습니다.
  • LB 생성 시 External 접근 용도로 생성하였으므로, LB 도메인 조회시 Public IP가 확인이 가능합니다.
  • LB 생성 & 도메인 확인

 

  • Nginx 접근 테스트

 

  • 위와 같이 Public 환경에서 생성된 LB를 통해 Private Cluster에 생성된 Pod로 접근 할 수 있는 것을 확인하실 수 있습니다!!
다음 포스팅에서는 테스트 워크로드 비용을 효율적으로 사용하기 위해
Lambda 기능을 통해 Istance를 자동으로 On/OFF 하는 방법에 대해서 알아보겠습니다.
반응형

'AWS' 카테고리의 다른 글

GameLift 알아보기  (0) 2025.01.16
Lambda 사용 해보기  (2) 2025.01.15
EKS 생성하기  (0) 2025.01.14
AWS 면접 후기 (에필로그)  (0) 2025.01.08
AWS 면접 후기  (10) 2024.11.28