티스토리 뷰

1. 목표구성도

  - EKS 클러스터 : Control Plane

  - VPC 1개 : 퍼블릭 서브넷 3개, 프라이빗 서브넷 3개

  - 관리형 노드 그룹 : EC2 3대

  - Add-on : 최신 버전 kube-proxy, coredns, aws vpc cni

 

2. 배포 방법 : CloudFormation을 통해 실습 환경 배포

    - CloudNet@ 제공 YAML 파일을 이용하여 CloudFormation으로 배포


1단계 : node IP와 pod의 IP가 같은 대역임을 확인

 - pod의 IP와 pod 내 위치한 kube-system용 pod(aws-node, kube-proxy)가 pod와 동일한 IP를 보유

 - coredns pod는 랜덤하게 2개의 node에 배포되어 있음

   1) 192.168.3.234 : 192.168.3.39 인스턴스의 Secondary IP

   2) 192.168.1.120 : 192.168.1.218 인스턴스의 Secondary IP

- pod가 아직 배포 안된 node에는 ENI가 1개만 보유

 

2단계 : 신규 pod를 배포하며 신규 ENI가 추가

 - 신규 pod 배포시 IP 대역의 부족 발생하는 경우 신규 ENI가 배포되어 해당 ENI의 secondary IP를 pod에 할당

 

3단계 : 노드간의 pod 통신

 - pod 간 ping을 수행시 ENI를 통해 pod의 IP를 가지고 패킷이 직접 통신됨을 확인

 - 인입되는 패킷이 node의 IP 주소가 아닌 pod의 IP 주소를 가지고 pod간에 직접 통신

 - pod 간 통신시 첫번째 ENI(eth0)을 사용하며, eth1로는 패킷이 오가지 않음

 

4단계. pod의 외부 통신

 - pod가 가진 IP는 node가 가진 Secondary IP 중 하나임을 확인

 - pod에서 외부로 인터넷(ipinfo.io)에 접속시 확인되는 IP는 node가 가진 Public IP임을 확인

 - 외부로 나가기 위해 Node가 가지고 있는 IPtables를 최소한으로 사용함을 확인

   1) Chain0 : 내부 통신인지 확인, 외부 통신일 경우 Chain1로 이동

   2) Chain1 : 외부 통신인 경우 인스턴스의 공인 IP로 SANT하여 외부 통신

 

5단계. Node의 pod 생성 갯수 제한

 - 인스턴스의 ENI 수량 및 IP 수량, 최대 할당가능 pod 수량 확인 : t3.medium

  1) ENI : 3개

  2) IP수량 : 6개

  3) 최대 pod 수량 : 17개 ( ENI 3개 * (IP수량 6개 - Node 사용 1개) + AWS pod 2개)

 - 대량의 pod 생성시 자동으로 ENI가 추가되면서 IP 할당

 - IP 제한에 걸릴 경우 더이상 생성되지 못하고 Pending 발생

 - Node별로 최대 ENI 및 IP를 보유하고 있음을 확인

 

6단계. Service 구성

 - OIDC 확인, IAM policy 생성, AWS Loab Balancer Controller를 위한 ServiceAccount 생성 및 확인

 - Helm Chart를 통해 AWS Load Balancer Controller를 배포

 - 클러스터 및 Role 확인 : targetgroupbindings을 위한 생성, 업데이트, 삭제 권한 등 보유

 

 

 - 신규 pod 배포 후 서비스 상태 확인

  1) endpoint/svc-nlb-ip-type : 실제 로드분산될 pod들의 주소

  2) targetgroupbinding : NLB가 CRD에 의해 의해 생성

 - 실제 생성된 NLB를 확인 : 자동 생성 후 Target에 pod 자동 등록

 - 웹브라우저를 통한 NLB 서비스 접속 확인

 

 - 100회 접속 시도시 NLB를 통한 부하분산 확인

    1) 기본 pod 2개에 부하분산 확인

    2) pod 1개 삭제후 1개 pod로 접속 확인

    3) pod 3개로 증가후 3개 pod로 부하분산 확인

 

7단계. Ingress 구성

 - 신규 pod 배포 후 ingress 구성된 서비스의 상태 확인

 - 실제 생성된 ALB를 확인 및 Target Group의 대상 pod 정상 등록 여부 확인

 - 웹브라우저를 통한 ALB 서비스 접속 확인

 - pod 증가시 Target Group 자동 증가 및 ALB 서비스 접속 확인

-----------------------------------------------------------------------------------------------

이 내용은 AEWS(AWS EKS Workshop Study) 1기의 과제로써 작성되었습니다.

AEWS는 '가시다'님이 속한 CloudNet@에서 진행하는 AWS EKS workshop에 대한 스터디입니다.

매주 일요일마다 소중한 정보를 퍼주시는 '가시다'님께 무한 감사 드립니다.

https://gasidaseo.notion.site/23-AWS-EKS-Workshop-07165aec800042b9ac9357aee18fdf17

댓글
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함
최근에 올라온 글
Total
Today
Yesterday
링크