> For the complete documentation index, see [llms.txt](https://atomoh.gitbook.io/kubernetes/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://atomoh.gitbook.io/kubernetes/amazon-eks/01-eks-introduction.md).

# EKS 소개

> **지원 버전**: Amazon EKS 1.31, 1.32, 1.33\
> **마지막 업데이트**: 2026년 2월 23일

Amazon Elastic Kubernetes Service(EKS)는 AWS에서 Kubernetes를 실행하기 위한 관리형 서비스입니다. 이 장에서는 EKS의 기본 개념, 아키텍처, 그리고 일반 Kubernetes와의 차이점을 살펴보겠습니다.

## EKS와 Kubernetes

EKS는 표준 Kubernetes API를 제공하는 관리형 서비스입니다. Kubernetes의 기본 개념과 작동 방식에 대한 자세한 내용은 [Kubernetes 소개](/kubernetes/basic/04-kubernetes-introduction.md) 문서를 참조하세요.

### EKS의 주요 이점

1. **관리형 컨트롤 플레인**: AWS가 Kubernetes 컨트롤 플레인의 가용성과 확장성을 관리
2. **보안 강화**: AWS IAM과의 통합을 통한 인증 및 권한 부여
3. **AWS 서비스 통합**: 다른 AWS 서비스(ELB, ECR, IAM 등)와의 원활한 통합
4. **다양한 컴퓨팅 옵션**: EC2, Fargate, Bottlerocket 등 다양한 컴퓨팅 옵션 지원
5. **자동 확장**: 클러스터 오토스케일러, Karpenter 등을 통한 자동 확장 지원
6. **관리형 노드 그룹**: 노드 수명 주기 관리 자동화

## EKS 아키텍처 및 구성 요소

Amazon EKS의 전체 아키텍처는 다음과 같습니다:

![EKS 전체 아키텍처](/files/TGTtJ47Aa45m881Xo0hb)

### 컨트롤 플레인

EKS는 고가용성 컨트롤 플레인을 제공합니다. 컨트롤 플레인은 여러 가용 영역에 걸쳐 실행되며, 다음과 같은 구성 요소로 이루어져 있습니다:

* **API 서버**: Kubernetes API를 노출하고 클러스터와의 상호 작용을 처리합니다.
* **etcd**: 클러스터의 상태를 저장하는 분산 키-값 저장소입니다.
* **컨트롤러 매니저**: 클러스터의 상태를 관리하는 컨트롤러를 실행합니다.
* **스케줄러**: 포드를 노드에 할당합니다.

EKS에서는 이러한 컨트롤 플레인 구성 요소가 AWS에 의해 관리되므로, 사용자는 이를 직접 관리할 필요가 없습니다.

### 데이터 플레인

EKS 데이터 플레인은 다음과 같은 옵션으로 구성할 수 있습니다:

![EKS 데이터 플레인 옵션](/files/YwKP5gMfIDZsm0pqOidJ)

1. **관리형 노드 그룹**: EC2 인스턴스로 구성된 노드 그룹으로, AWS에서 노드 수명 주기를 관리합니다.
2. **자체 관리형 노드**: 사용자가 직접 관리하는 EC2 인스턴스입니다.
3. **AWS Fargate**: 서버리스 컴퓨팅 엔진으로, 컨테이너를 실행하기 위한 인프라를 관리할 필요가 없습니다.

### 네트워킹

EKS는 Amazon VPC CNI 플러그인을 사용하여 포드 네트워킹을 제공합니다. 이 플러그인은 각 포드에 VPC IP 주소를 할당하여 AWS 네트워킹 기능을 활용할 수 있게 합니다.

![EKS VPC 네트워킹](/files/OcsP4kSkE5EIAKvNqIut)

## 일반 Kubernetes와 EKS의 차이점

### 관리 책임

* **일반 Kubernetes**: 사용자가 컨트롤 플레인과 데이터 플레인을 모두 관리해야 합니다.
* **EKS**: AWS가 컨트롤 플레인을 관리하고, 사용자는 데이터 플레인만 관리하면 됩니다.

### 네트워킹

* **일반 Kubernetes**: 다양한 CNI 플러그인 중에서 선택할 수 있습니다.
* **EKS**: 기본적으로 Amazon VPC CNI를 사용하며, 각 포드는 VPC IP 주소를 할당받습니다.

### 로드 밸런싱

* **일반 Kubernetes**: `LoadBalancer` 타입의 서비스를 사용하려면 별도의 컨트롤러를 설치해야 합니다.
* **EKS**: `LoadBalancer` 타입의 서비스는 자동으로 AWS Network Load Balancer(NLB)를 생성합니다. Application Load Balancer(ALB)를 사용하려면 AWS Load Balancer Controller를 설치해야 합니다.

### 스토리지

* **일반 Kubernetes**: 다양한 스토리지 드라이버를 수동으로 설치하고 구성해야 합니다.
* **EKS**: AWS EBS CSI 드라이버가 기본적으로 제공되며, EFS 및 FSx와 같은 다른 AWS 스토리지 서비스를 위한 드라이버도 쉽게 설치할 수 있습니다.

## EKS 비용 구조

EKS 클러스터를 운영할 때 발생하는 비용은 다음과 같습니다:

1. **EKS 컨트롤 플레인 비용**: 클러스터당 시간당 요금이 부과됩니다.
2. **컴퓨팅 비용**:
   * EC2 인스턴스(관리형 또는 자체 관리형 노드)
   * Fargate(포드 실행 시간 및 리소스 사용량에 따라 요금 부과)
3. **스토리지 비용**: EBS, EFS, FSx 등의 스토리지 서비스 사용 비용
4. **네트워크 비용**: 데이터 전송 및 로드 밸런서 사용 비용

### 비용 최적화 전략

1. **Spot 인스턴스 사용**: 비용을 최대 90%까지 절감할 수 있습니다.
2. **Fargate 활용**: 사용량이 적은 워크로드에 적합합니다.
3. **오토스케일링 구성**: 필요에 따라 노드를 자동으로 확장하고 축소합니다.
4. **Locality Routing**: 동일한 가용 영역 내에서 트래픽을 유지하여 네트워크 비용을 절감합니다.
5. **EKS Auto Mode**: 클러스터 자동 확장 및 축소를 통해 비용을 최적화합니다.
6. **하이브리드 노드**: 다양한 인스턴스 유형을 혼합하여 비용 효율성을 높입니다.

## AWS 서비스와의 통합

EKS는 다음과 같은 AWS 서비스와 통합됩니다:

![EKS AWS 서비스 통합](/files/BFqMqtQpeg8ifunldn2l)

1. **IAM**: Kubernetes RBAC와 통합하여 인증 및 권한 부여를 관리합니다.
2. **VPC**: 네트워킹 인프라를 제공합니다.
3. **CloudWatch**: 모니터링 및 로깅을 제공합니다.
4. **ALB/NLB**: 로드 밸런싱을 제공합니다.
5. **ECR**: 컨테이너 이미지 저장소를 제공합니다.
6. **EBS/EFS/FSx**: 영구 스토리지를 제공합니다.
7. **AWS App Mesh**: 서비스 메시 기능을 제공합니다.
8. **AWS Certificate Manager**: SSL/TLS 인증서를 관리합니다.
9. **AWS Secrets Manager**: 민감한 정보를 안전하게 저장하고 관리합니다.
10. **AWS SageMaker**: 머신 러닝 워크로드를 실행합니다.
11. **AWS Bedrock**: 생성형 AI 모델을 활용합니다.

## EKS 모범 사례

1. **클러스터 설계**:
   * 다중 가용 영역에 노드 배포
   * 적절한 인스턴스 유형 선택
   * 노드 그룹 전략 수립
2. **보안**:
   * 최소 권한 원칙 적용
   * 네트워크 정책 구현
   * 포드 보안 정책 적용
   * 이미지 스캐닝 및 취약점 관리
3. **네트워킹**:
   * 적절한 서브넷 설계
   * 보안 그룹 구성
   * Locality Routing 활용
4. **모니터링 및 로깅**:
   * CloudWatch 컨테이너 인사이트 활성화
   * 컨트롤 플레인 로깅 구성
   * 프로메테우스 및 그라파나 활용
5. **업그레이드 전략**:
   * 정기적인 업그레이드 계획
   * 블루/그린 배포 전략 고려
   * 업그레이드 전 테스트 수행

## 퀴즈

이 장에서 배운 내용을 테스트하려면 [Amazon EKS 소개 퀴즈](/kubernetes/quiz/amazon-eks/01-eks-introduction-quiz.md)를 풀어보세요.
