728x90
반응형
안녕하세요 늑대양 입니다
지난 수요일(240424) 성수에서 진행되었던 AWS KRUG Seongsu 소모임 에서 진행된 세션 내용 하나를 공유드리고자 합니다.
해당 소모임은 처음 참석하였는데, 멋있는 무신사 캠퍼스 타운홀에서 진행되었고 날씨도 좋고 세션 내용도 참 좋았습니다.
AWS 를 처음 접하시는 분들 및 ECS, EKS 도입을 고려하시거나 운영하시는 분들에게 도움이 되었으면 좋을 것 같습니다.
감사합니다 😍
Details:
모임 소개 👇
- 성수 소모임은 성수 지역 근처에서 이뤄지고 있는 주제에 제한이 없는 모임입니다.
- 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/
관련 기본 용어
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
- 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 주소 할당
- CNI Plugin
Warm pool:
https://repost.aws/ko/knowledge-center/eks-configure-cni-plugin-use-ip-address
https://github.com/aws/amazon-vpc-cni-k8s/blob/master/docs/eni-and-ip-target.md
- 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
- Instance type: c5.24xlarge
- 직접 확인해보기
- 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 에서 퍼블릭하게 발표 예정입니다 🥸
- https://aws.amazon.com/ko/events/summits/seoul/
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 |