새소식

반응형
AWS/AWS KRUG

AWS KRUG - Seongsu - 20240424

  • -
728x90
반응형

 

 

안녕하세요 늑대양 입니다

 

늑대양 by DALL-E

 

 

지난 수요일(240424) 성수에서 진행되었던 AWS KRUG Seongsu 소모임 에서 진행된 세션 내용 하나를 공유드리고자 합니다.

 

 

서울시 성동구 성수동2가 277-47 (무신사 캠퍼스 N1)

 

 

해당 소모임은 처음 참석하였는데, 멋있는 무신사 캠퍼스 타운홀에서 진행되었고 날씨도 좋고 세션 내용도 참 좋았습니다.

 

AWS 를 처음 접하시는 분들 및 ECS, EKS 도입을 고려하시거나 운영하시는 분들에게 도움이 되었으면 좋을 것 같습니다.

 

감사합니다 😍

 

 


Details:

AWS KRUG 성수 소모임

 

 

성수 버전 구르미.. 긔여어..

 

 

모임 소개 👇

  • 성수 소모임은 성수 지역 근처에서 이뤄지고 있는 주제에 제한이 없는 모임입니다.
  • AWS를 사용하고자 하는 사람부터 숙련자까지 공유하고 싶은 사람과 배우고자 하는 사람, 간접경험 해보고자 하는 사람이 어우러져 편안한 분위기 속에서 모임이 이루어지고 있습니다.

 

발표 내용 🎉

  • Warm Pool로 EKS IP 관리하기 - 박진희 (Cloud Club)
  • AWS 인프라 환경을 처음부터 구축하며 배운 것들 - 안다혜 (무신사)
  • 스타트업이 ECS 대신 EKS를 선택한 이유 - 이재찬 (호두랩스)

 

일시 및 장소 📅

  • 2024년 4월 24일 수요일 19:30 ~ 21:30
  • 오프라인: 서울시 성동구 성수동2가 277-47 (무신사 캠퍼스 N1) 2층 타운홀
  • https://place.map.kakao.com/1036941295
  • 무신사 타운홀 오시는 법 <- 클릭
  • 온라인 스트리밍 링크 (링크 추가 예정입니다)
  • 박진희님 발표만 온라인 스트리밍이 제공될 예정입니다.

 

🙋🏻‍♀️🙋🏻‍♂️ 라이트닝 토크 / 발표 지원 🙋🏻‍♀️🙋🏻‍♂️

  • 라이트닝 토크: 본 발표와 무관하게 참석자분들과 가볍게 이야기하고 싶으신 주제가 있으시다면 말씀해주세요!
  • 발표 지원: 성수 모임에서 발표하고 싶으시다면 망설이지 말고 지원해 주세요! 주제는 상관 없습니다!
  • AWSKRUG 슬랙 입장 후(초대링크: http://slack.awskr.org/)
  • #seongsu 채널
  • 혹은 DM: @sinsky, @Dahye, @Byung Woo LEE

 


“Warm Pool” 로 EK IP 관리하기

  • 박진희 님 - Cloud Club

 

EKS VPC CNI의 동작 방식에 대한 간단한 이해

https://aws.github.io/aws-eks-best-practices/ko/networking/vpc-cni/

 

Amazon VPC CNI - EKS 모범 사례 가이드

Amazon VPC CNI Amazon EKS는 Amazon VPC 컨테이너 네트워크 인터페이스(VPC CNI) 플러그인을 통해 클러스터 네트워킹을 구현합니다. CNI 플러그인을 사용하면 쿠버네티스 파드가 VPC 네트워크에서와 동일한 I

aws.github.io

 

 

관련 기본 용어

ENI

  • Primary ENI:
    • 각 인스턴스의 Default 네트워크 인터페이스
    • coredns
    • kubeproxy
  • Primary IP
    • k8s 메인 컴포넌트
  • Secondary IP
    • 다른 파드들
    • vpc cni

 

ENI Capacity:

  • EC2 인스턴스는 Instance Type 별로, 부여할 수 있는 ENI, IP 개수가 제한됨
  • ex) EKS - Node에 최대 할당 가능한 pod 개수 계산법:
    • MaxENI x (IPv4 addr - 1) + 2

 

VPC CNI

https://github.com/aws/amazon-vpc-cni-k8s

 

GitHub - aws/amazon-vpc-cni-k8s: Networking plugin repository for pod networking in Kubernetes using Elastic Network Interfaces

Networking plugin repository for pod networking in Kubernetes using Elastic Network Interfaces on AWS - aws/amazon-vpc-cni-k8s

github.com

 

  • k8s CNI:
    • Container Network Interface
  • AWS VPC CNI:
    • Pod IP 네트워크 대역과 노드의 IP 대역이 같아서 직접 통신 가능
    • VPC의 다양한 기능과 통합 가능
    • VPC FLow logs, VPC 라우팅 정책, 보안그룹 사용 가능
    • “aws-node” 라는 이름의 daemonset 으로 배포됨
      • ex) kubectl get daemonset -n kube-system aws-node
    • 2 개의 구성 요소가 포함
      • CNI Plugin
        • kubelet의 명령을 실행
        • 파드 또는 컨테이너에 대한 네트워크 인터페이스(ex, ENI)
      • L-IPAMD:
        • 호스트에서 사용 가능한 IP 주소의 로컬 웜풀 유지
        • 노드에 예약될 때, Pod에 IP 주소 할당

 

Warm pool:

https://repost.aws/ko/knowledge-center/eks-configure-cni-plugin-use-ip-address

 

VPC 서브넷에서 IP 주소를 사용하도록 CNI 플러그인 구성

Amazon Elastic Kubernetes Service(Amazon EKS)를 통해 VPC 서브넷의 IP 주소를 사용하도록 Amazon Virtual Private Cloud(VPC) 컨테이너 네트워크 인터페이스(CNI) 플러그인을 구성하려고 합니다. 모범 사례는 무엇입니

repost.aws

 

https://github.com/aws/amazon-vpc-cni-k8s/blob/master/docs/eni-and-ip-target.md

 

amazon-vpc-cni-k8s/docs/eni-and-ip-target.md at master · aws/amazon-vpc-cni-k8s

Networking plugin repository for pod networking in Kubernetes using Elastic Network Interfaces on AWS - aws/amazon-vpc-cni-k8s

github.com

 

 

  • Pod가 빠르게 시작할 수 있도록 함
  • WARM ENI와 slot(IP, Prefix) 을 사전 할당
  • Warm pool은 VPC CNI의 환경 변수에서 설정
  • WARM_ENI_TARGET
    • L-IPAMD가 사용 가능한 상태로 유지하는 ENI 수
  • WARM_IP_TARGET
    • L-IPAMD의 웜 풀에서 사용할 수 있는 IP 주소 개수
  • MINIMUM_IP_TARGET
    • Node가 처음 시작될 때, 할당하려는 최소 IP 주소 개수
  • Warm pool 예시 (t3.small)
    • 최대 ENI: 3
    • ENI 당 최대 IP 개수: 4
    • Primary: 1 (kube-proxy, coredens 파드가 사용)
    • Secondary: 3 (그 외 파드가 사용)
    • Node에 배포할 수 있는 최대 파드 개수: 11
      • MaxENI x (IPv4 addr - 1) + 2
      • 3 * (4-1) + 2 = 11

 


Warm Pool 실습

Warm pool 설정 시, 주의사항

  • 상황에 따라 적절한 Warm pool 설계가 중요
  • 너무 많거나? 적으면?

 

시나리오 1 - Subnet 가용 IP 부족

  • 사용자 VPC 설정
    • VPC: 10.0.0.0/16
    • Subnet:
      • 10.0.12.0/23
      • 10.0.24.0/23
    • 기본적으로 WARM_ENI_TARGET = 1
    • 따라서 Node에 ENI 가 두 개가 붙어 있음
  • Node Group:
    • Instance type: c5.24xlarge
      • IPv4 addr: 50
      • Max ENI: 1
  • 직접 확인해보기
    • VPC CNI
    • Node ENI 설정 확인
  • 만약 서브넷에 노드가 5개 라면 Warm pool 설정에 의해, 500개의 IP를 소요
    • (50+50) * 5 = 500
    • 총 500개의 IP 사용
    • 가용 IP 14개…

 

WARM_IP_TARGET 으로 설정 변경

  • WARM_IP_TARGET = 10
  • 기본적으로 롤링 업데이트로 진행
  • Secondary IPv4 address 가 간소화 되어 출력 → 11개
  • 전체 프로비저닝 시간 확인
    • WARM_IP_TARGET = 10 → 2.5s
    • WARM_IP_TARGET = 1 → 43.1s
      • 약 17배 차이
    • Deployment 배포 (replica: 10)
    • CW으로 소요시간 확인

 

Summary:

  • Pod를 생성할 때, kubelet에서 VPC CNI로 추가 IP cnrk dycjd
  • L-IPAMD는 ENI, Slot 웜풀을 관리
    • Warm pool 이 없다면 바로 IP 할당 받음
    • warm pool 이 없다면 AWS에 세컨더리 IP 혹은 ENI 를 추가 요청하는 API 호출
  • API 스로틀링에 유의하자

 


AWS 인프라 환경을 처음부터 구축하며 배운 것들 - 안다혜 (무신사)

스타트업이 ECS 대신 EKS를 선택한 이유 - 이재찬 (호두랩스)

 

 

AWS Summit Seoul

AWS 전문가가 알려주는 클라우드 핵심 필수 기초 교육  오전 11시 – 오후 1시 또는 오후 2시 - 4시 (4회 운영, 택 1) 2시간에 걸쳐 진행되는 5개의 강연을 통해 클라우드 개념 소개, 핵심 AWS 서비스,

aws.amazon.com

 


Reference:

https://www.youtube.com/watch?v=NdgMYdhZQcw

 

 

 

 

 

요즘 날씨도 참 좋네요!!

 

다음에 또 찾아오겠습니다

 

감사합니다 😉

 

 

 

728x90
반응형

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

AWS KRUG - Security - 20240425  (0) 2024.04.26
AWS KRUG - Serverless 소모임 - 20240416  (0) 2024.04.17
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.