[AWS] EKS 구성법

2024. 11. 19. 17:15· Infra/AWS
목차
  1. Amazon EKS란? 📌
  2. EKS 아키텍처 📌
  3. EKS Control Plane (AWS Managed VPC)
  4. EKS Data Plane (Custom VPC)
  5. 네트워크 📌
  6. AWS VPC CNI
  7. LoadBalancer
  8. AWS LoadBalancer Controller
  9. 배포 방법 📌
  10. 실습 📌
  11. 참고

 

Amazon EKS란? 📌

  • Kubernetes

컨테이너를 효율적으로 관리할 수 있도록 하는 오픈소스 플랫폼

 

  • EKS (Elastic Kubernetes Service)

Kubernetes Control Plane을 설치, 운영 및 유지 관리할 필요가 없는 AWS 관리형 서비스

 

 

EKS 아키텍처 📌

 

EKS Control Plane (AWS Managed VPC)

  • AWS가 별도로 관리하는 인프라 → VPC의 세부 구성이나 네트워크 설정을 사용자가 직접 확인하거나 변경 X
  • 컨트롤 플레인이 다수의 가용영역에 배치 ⇒고가용성 보장
    • 하지만, 사용자 입장에서는 하나의 마스터 엔드포인트로 보임

 

EKS Data Plane (Custom VPC)

사용자가 직접 구성하고 관리

 

 

노드 구성 방식

  • 관리형 노드 그룹 (Managed Node Groups)
    • AWS에서 노드의 프로비저닝과 관리를 대신해주는 방법
    • 노드의 설정, 업데이트, 스케일링 등을 쉽게 관리
    • 비용 따로 들지 않음
  • 자체 관리형 노드 (Self-managed Nodes)
    • 사용자가 직접 EC2 인스턴스를 프로비저닝하고 관리하는 방식
    • 더 많은 커스터마이징과 세밀한 제어가 가능하지만, 관리 부담이 높음
    • 만약 특정 유형의 인스턴스를 사용하거나, 특별한 네트워크 설정이 필요시 사용
  • AWS Fargate
    • 서버리스 컴퓨팅 엔진으로, 사용자가 서버나 클러스터의 관리 없이 컨테이너를 실행할 수 있게 해줌
    • 사용한 컴퓨팅 자원에 대해서만 비용을 지불하는데, 서버 관리에 신경 쓰지 않고 간단한 웹 애플리케이션 또는 마이크로서비스를 빠르게 배포하고 싶을때 사용

 

Control Plane과 Data Plane 통신

AWS EKS에서 컨트롤 플레인과 워커 노드가 서로 다른 VPC에 배포되었음에도 통신이 가능한 이유

⇒ AWS PrivateLink와 Cross-Account ENI 같은 네트워킹 기술을 사용하기 때문 (클러스터 설정에 따라 둘 중 하나만 사용)

  • AWS PrivateLink
    • 컨트롤 플레인과 사용자 VPC 간의 비공개 네트워크 연결을 설정
    • 사용자 VPC 내에 인터페이스 엔드포인트를 생성하여 EKS API 서버와 연결
  • Cross-Account ENI
    • EKS 컨트롤 플레인은 사용자 VPC에 ENI를 생성하여, 워커 노드와 직접 통신

 

 

네트워크 📌

AWS VPC CNI

  • CNI (Container Network Interface)
    • Kubernetes에서 네트워크를 관리하기 위한 플러그인 표준
    • AWS EKS는 Amazon VPC CNI 플러그인을 사용하여 Kubernetes Pod가 VPC 네트워크와 통신
      • ↔ Calio, Flannel과 같은 클러스터 CNI

 

 

  • Amazon VPC CNI 플러그인을 설치하면 aws-node라는 Daemon set 생성
  • aws-node는 L-IPAM(Local IP Address Manager), CNI 플러그인으로 구성
    • L-IPAM은 필요 시 Warm Pool이라는 IP 주소 풀에서 Secondary IP를 미리 할당받아 워커 노드에 준비
    • ENI Slot
      • 1 → Primary IP : 노드의 IP
      • 2~4 → Secondary IP : 파드의 IP
    ⇒ ENI Slot을 구성하고, Pod에 Secondary IP를 할당하는 방식으로 ~
  • if. 전부 사용중이면, 새로운 ENI 생성

 

  • 장점
    • Pod들이 VPC 네트워크 대역 내의 IP 주소를 직접 사용하므로, 오버헤드가 적고 성능이 뛰어남
    • 추가적인 네트워크 변환이 필요 없음
  • 단점
    • IP 주소 제한

 

LoadBalancer

  • EKS 에서 k8s의 서비스 타입 중 하나인 LoadBalancer를 설정하면 자동적으로 AWS CLB가 생성
  • EKS 에서 k8s의 Ingress를 설정하면 자동적으로 AWS ALB가 생성
  • AWS LoadBalancer Controller를 설치한 상태에서, k8s 서비스 타입 중 하나인 LoadBalancer을 설정하면 AWS NLB 생성

 

AWS LoadBalancer Controller

EKS 클러스터를 위한 AWS Load Balancer를 관리하는 add-on

 

  • IP 모드
    • 애노테이션을 통해 NLB가 클러스터 내의 각 파드의 IP 주소를 직접 대상으로 삼도록 설정 → NLB는 파드의 IP로 직접 트래픽을 전달
    • IP 모드의 장점 → 직접 라우팅, 낮은 레이턴시, 효율적인 트래픽 분산
...
metadata:
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: ip
...

 

 

배포 방법 📌

  • AWS 콘솔 수동 배포
  • eksctl
  • IaC
    • Terraform 등..

( 사실 관리 콘솔을 통한 수동 배포와 eksctl 방식 모두 Amazon EKS 배포 시 내부적으로 AWS CloudFormation이 사용 )

 

 

  • CloudFormation
    • AWS IaC 도구
    • Stack: 생성된 AWS 리소스 집합 → Stack 단위로 생성, 업데이트, 삭제 가능

 

 

실습 📌

Terraform과 eksctl을 활용하여 AWS EKS 클러스터를 구축하고, AWS Load Balancer Controller를 통해 NLB 및 ALB를 실습

 

https://github.com/ShimHyesu/KTB_TechSession

 

GitHub - ShimHyesu/KTB_TechSession: 2024.11.19_카카오테크 부트캠프 기술 세미나_클라우드 - EKS 설정법

2024.11.19_카카오테크 부트캠프 기술 세미나_클라우드 - EKS 설정법. Contribute to ShimHyesu/KTB_TechSession development by creating an account on GitHub.

github.com

 

 

 

참고

https://velog.io/@rockwellvinca/EKS-AWS-Load-Balancer-Controller-%EB%B6%80%ED%95%98%EB%B6%84%EC%82%B0-%ED%99%98%EA%B2%BD#aws-load-balancer-controller

 

저작자표시 비영리 (새창열림)

'Infra > AWS' 카테고리의 다른 글

[AWS/EKS] 다른 Namespace의 LB 사용하는 방법  (0) 2024.12.02
[AWS] Private Subnet에 있는 인스턴스 접속 방법 (feat. AWS SSM)  (1) 2024.11.29
  1. Amazon EKS란? 📌
  2. EKS 아키텍처 📌
  3. EKS Control Plane (AWS Managed VPC)
  4. EKS Data Plane (Custom VPC)
  5. 네트워크 📌
  6. AWS VPC CNI
  7. LoadBalancer
  8. AWS LoadBalancer Controller
  9. 배포 방법 📌
  10. 실습 📌
  11. 참고
'Infra/AWS' 카테고리의 다른 글
  • [AWS/EKS] 다른 Namespace의 LB 사용하는 방법
  • [AWS] Private Subnet에 있는 인스턴스 접속 방법 (feat. AWS SSM)
혬수
혬수
혬수
수리수리 마수리
혬수
전체
오늘
어제

블로그 메뉴

  • 🏡 Home
  • 🏷️ Tag
  • Github
  • 분류 전체보기 (52)
    • Infra (8)
      • Kubernetes (5)
      • AWS (3)
    • Operations (11)
      • Docker (1)
      • ArgoCD (2)
      • Flux (1)
      • Kafka (2)
      • Keycloak (3)
    • Testing (3)
      • Jest (0)
      • Postman (1)
    • Language (5)
      • JavaScript (5)
      • TypeScript (0)
    • Framework (16)
      • React (1)
      • React Native (15)
    • KakaoTech_Bootcamp (4)
      • Weekly Scrum (3)
      • 회고 (1)
    • Etc (5)
      • Git (1)
      • MacOS (4)

인기 글

hELLO · Designed By 정상우.v4.2.2
혬수
[AWS] EKS 구성법
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.