이번 포스팅에서는 EKS 란 무엇이고 어떠한 기능이 있는지, 또한 아키텍처는 어떤식으로 구성되어 있는지를 포스팅하고자 합니다.
1.Amazon EKS 이란?
Amazon EKS (Amazon Elastic Kubernetes Service) 는 AWS 에서 제공하는 관리형 쿠버네티스 서비스 로서 ,컨트롤 플레인을 직접 구성하지 않고 kubernetes를 쉽게 사용할 수 있도록 제공 해주는 서비스입니다.
2 EKS 특징
1) Control Plane은 AWS에서 관리
EKS 생성시 Data Plane만 생성하고, Control Plane은 AWS에서 직접 생성하고 관리 합니다.
2) 여러 가용 영역에 배포
EKS에서 Control Plane 생성시 고가용성 확보 목적으로 여러 가용 영역에 걸처서 생성합니다.
3) AWS와 긴밀한 통합
EKS는 다양한 AWS 서비스를 기본적으로 사용할 수 있으며, 이를 통하여 보다 효율적으로 클러스터 운영이 가능합니다.
- Amazon ECR (컨테이너 이미지 저장소)
- ELB (Elastic Load Balancer)
- 인증 (IAM)
4) 다양한 kubernetes 버전 지원

- 3개의 메인버전, 4개의 마이너 버전을 지원하므로 고객이 업그레이드 테스트 및 롤아웃 할수 있는 시간을 제공
3. Amazon EKS 아키텍처
EKS는 기본적으로 kubernetes 환경을 따르고 있어 우선 Kubernetes의 기본 아키텍처를 알아야 한다.
1) EKS 아키텍처
EKS는 Kubernetes를 기반으로 하고 있어 쿠버네티스와 마찬가지로 Control Plane(Master Node) , Data Plane (Worker Node) 으로 구성 되어 있습니다.
Control Plane (Master Node)

Control Plane은 kubernetes의 머리 역할을 하며, 클러스터의 전반적인 상태를 관리하고 조정 합니다.
구성요소
- etcd : 클러스터 안의 각 구성요소들에 대한 정보를 다루는 역할을 하며 key-value 형태값으로 저장
- kube-scheduler : 애플리케이션 구동시 리소스 요구사항, 노드 상태, 정책 등을 고려하여 최적의 노드를 선택하는 역할
- kube-controller-manager : 클러스터에 구동되는 리소스 (Node,Replication, deployment 등) 들을 관리하는 역할
- kube-apiserver : kubernetes 클러스터의 프론트 엔드 역할을 하며, 사용자나 다른 구성 요소와의 통신을 담당
Data Plane (Worker Node)

Data Plane은 실제 어플리케이션을 실행하는 역할을 합니다.
구성 요소
- kubelet : 각 노드에서 실행되는 에이전트로, Control Plane과 통신하여 파드 생명주기를 관리
- kube-proxy : 클러스터에서 네트워크 통신을 관리하며, 서비스, 파드간의 네트워크 트래픽을 라우팅 합니다.
- Container Runtime : 노드에 배포된 파드 내 컨테이너들을 구동시키는 엔진
- EKS owned ENI : EKS가 관리하는 네트워크 인터페이스로, AWS VPC CNI 사용할떄 Pod에 네트워크 연결을 제공
여기서 kube-proxy, EKS owned ENI 는 둘다 네트워크를 다루는 역할을 하나 다음과 같은 차이가 있습니다.
| 항목 | kube-proxy | EKS Owned ENI |
|---|
| 주요 목적 | 서비스 트래픽 로드 밸런싱 및 라우팅 | Pod에 IP 주소 할당 및 네트워크 연결 |
| 작동 수준 | 클러스터 내부 서비스 통신 | Pod-to-Pod 또는 Pod-to-VPC 통신 |
| 네트워크 계층 | 클러스터 내부 가상 IP(CusterIP) | VPC의 실제 IP 주소 |
| AWS 통합 | AWS와 독립적 | AWS VPC와 직접 통합 |
| 사용 사례 | 서비스 디스커버리 및 로드 밸런싱 | Pod가 VPC 리소스와 직접 통신할 때 |
3.3 EKS Cluster Endpoint
Cluster 끼리 통신하는 방법은 크게 3가지로 나뉩니다.
(1) Public
- kubectl 명령어 이용 등과 같이 Control Plane 접근시 퍼블릭 도메인을 통해 접근
- Control Plane - Data Plane 통신간에도 외부 통신만 가능하다.
(2) Public/Private

- kubectl 명령어 이용 등과 같이 Control Plane은 퍼블릭 도메인을 통해 접근
- Control Plane - Data Plane 통신간에는 EKS owned ENI 를 통하여 내부 통신이 가능
(3) Private

- kubectl 명령어 사용시 외부에선 사용하지 못함
- 외부에 접근 하려면 VPC Endpoint를 만들어야 함
- 보안상 가장 안전함
참조