Amazon EKS 아키텍처
Amazon EKS 아키텍처
Amazon EKS는 Kubernetes의 일반적인 클러스터 아키텍처를 따릅니다. 자세한 내용은 Kubernetes 문서의 Kubernetes Components를 참고하세요. 다음 섹션에서는 Amazon EKS에 대한 추가 아키텍처 세부 정보를 요약합니다.
출처: 문서
본문
컨트롤 플레인
Amazon EKS는 모든 클러스터가 고유한 Kubernetes 컨트롤 플레인을 갖도록 보장합니다. 이 설계는 각 클러스터의 인프라를 분리하여 클러스터나 AWS 계정 간 겹침이 없도록 합니다. 구성은 다음과 같습니다.
- 분산 구성 요소: 컨트롤 플레인은 AWS 리전 내 3개의 AWS Availability Zones에 걸쳐 최소 2개의 API server 인스턴스와 3개의 etcd 인스턴스를 배치합니다.
- 최적 성능: Amazon EKS는 컨트롤 플레인 인스턴스를 적극적으로 모니터링·조정해 최고 성능을 유지합니다.
- 복원력: 컨트롤 플레인 인스턴스에 문제가 생기면 Amazon EKS는 필요 시 다른 Availability Zone을 사용해 신속하게 교체합니다.
- 일관된 가동 시간: 클러스터를 여러 Availability Zone에 걸쳐 실행하면 안정적인 API server 엔드포인트 가용성 SLA(Service Level Agreement)를 달성합니다.
Amazon EKS는 Amazon Virtual Private Cloud(Amazon VPC)를 사용해 단일 클러스터 내 컨트롤 플레인 구성 요소 간 트래픽을 제한합니다. 클러스터 구성 요소는 Kubernetes RBAC(역할 기반 접근 제어) 정책에 의해 승인된 경우를 제외하고 다른 클러스터나 AWS 계정의 통신을 보거나 받을 수 없어요.
컴퓨트
컨트롤 플레인 외에도 Amazon EKS 클러스터에는 노드(nodes)라고 불리는 워커 머신 집합이 있습니다. 적절한 Amazon EKS 클러스터 노드 유형을 선택하는 것은 특정 요구사항을 충족하고 리소스 활용을 최적화하는 데 중요해요. Amazon EKS는 다음과 같은 주요 노드 유형을 제공합니다.
- EKS Auto Mode: EKS Auto Mode는 AWS 관리 범위를 컨트롤 플레인 너머 데이터 플레인까지 확장해 클러스터 인프라 관리를 자동화합니다. 컴퓨트 자동 확장, 네트워킹, 로드 밸런싱, DNS, 스토리지, GPU 지원 등 핵심 Kubernetes 기능을 내장 구성 요소로 통합해요. EKS Auto Mode는 워크로드 수요에 따라 노드를 동적으로 관리하며, 보안이 강화된 변경 불가(immutable) AMI를 사용합니다. Pod Disruption Budget을 존중하며 업데이트·업그레이드를 자동화하고, 애드온 관리가 필요했을 관리형 구성 요소도 포함합니다. 일상 운영에 AWS 전문성을 활용하고 운영 부담을 최소화하며 인프라 관리보다 애플리케이션 개발에 집중하려는 사용자에게 이상적입니다.
- AWS Fargate: Fargate는 컨테이너용 서버리스 컴퓨트 엔진으로, 기반 인스턴스를 관리할 필요가 없습니다. Fargate에서는 애플리케이션의 리소스 요구만 지정하면 AWS가 인프라를 자동으로 프로비저닝·확장·유지 관리해요. 사용 편의성을 중시하고 인프라 관리보다 애플리케이션 개발·배포에 집중하려는 사용자에게 적합합니다.
- Karpenter: Karpenter는 애플리케이션 가용성과 클러스터 효율성을 높이는 유연하고 성능이 뛰어난 Kubernetes 클러스터 자동 확장 도구입니다. Karpenter는 변화하는 애플리케이션 부하에 맞춰 적정 크기의 컴퓨트 리소스를 시작해, 워크로드 요구를 충족하는 JIT(just-in-time) 컴퓨트 리소스를 프로비저닝할 수 있어요.
- 관리형 노드 그룹(Managed node groups): 관리형 노드 그룹은 Amazon EKS 클러스터 내 Amazon EC2 인스턴스 집합을 관리하는 자동화와 커스터마이즈의 혼합입니다. AWS가 패칭·업데이트·노드 확장 같은 작업을 처리해 운영 부담을 덜어줍니다. 동시에 커스텀
kubelet인수를 지원해 고급 CPU·메모리 관리 정책을 활용할 수 있어요. 또한 서비스 계정용 AWS IAM 역할로 보안을 강화하고 클러스터별 별도 권한 필요성을 줄여줍니다. - 자체 관리형 노드(Self-managed nodes): 자체 관리형 노드는 Amazon EKS 클러스터 내 Amazon EC2 인스턴스를 완전히 제어합니다. 노드 관리·확장·유지 관리를 직접 담당해 기반 인프라를 완전히 제어할 수 있어요. 노드를 세밀하게 제어·커스터마이즈해야 하고 인프라 유지에 시간을 투자할 준비가 된 사용자에게 적합합니다.
- Amazon EKS Hybrid Nodes: Amazon EKS Hybrid Nodes로 온프레미스·엣지 인프라를 Amazon EKS 클러스터의 노드로 사용할 수 있어요. Amazon EKS Hybrid Nodes는 여러 환경에 걸쳐 Kubernetes 관리를 통합하고, 온프레미스·엣지 애플리케이션의 Kubernetes 컨트롤 플레인 관리를 AWS로 이관합니다.
EKS Capabilities
Amazon EKS는 완전 관리형 클러스터 기능을 제공하며, 클러스터에 Kubernetes API(및 Kubernetes Custom Resource Definitions)를 설치·관리하면서 컨트롤러와 기타 구성 요소는 클러스터와 분리된 AWS 소유 인프라에서 실행합니다. EKS는 이러한 기능의 자동 패칭·확장·모니터링을 제공해 수명 주기를 완전히 관리하며, 워크로드 오케스트레이션·AWS 리소스 관리 등을 위해 클러스터 내 서비스를 운영하는 부담을 줄여줍니다.
EKS는 다음 기능 유형을 제공합니다.
- AWS Controllers for Kubernetes(ACK): ACK를 사용하면 Kubernetes API로 AWS 리소스를 관리할 수 있어, S3 버킷, RDS 데이터베이스, IAM 역할 등 AWS 리소스를 Kubernetes 커스텀 리소스로 정의할 수 있어요. S3, RDS, DynamoDB, Lambda를 포함한 50개 이상의 AWS 서비스를 지원하며, 같은 도구·워크플로우로 Kubernetes 워크로드와 함께 AWS 리소스를 관리할 수 있습니다.
- Argo CD: Argo CD는 Git 저장소를 진실의 원천(source of truth)으로 사용해 애플리케이션 워크로드, AWS 리소스, 클러스터 구성에 GitOps 기반 지속적 배포를 구현합니다. Argo CD는 클러스터를 Git 저장소와 자동으로 동기화하고 드리프트를 탐지하며, 배포된 애플리케이션·리소스가 버전 관리의 원하는 상태와 일치하도록 지속적으로 조정(수렴)해요. 단일 Argo CD 리소스로 특정 클러스터의 애플리케이션을 관리하거나 여러 클러스터에 걸쳐 애플리케이션을 배포·관리할 수 있고, 커밋 시 Git 저장소에서 자동 배포됩니다.
- kro(Kube Resource Orchestrator): kro를 사용하면 여러 리소스를 더 높은 수준의 추상화로 구성하는 커스텀 Kubernetes API를 만들 수 있어, 플랫폼 팀이 일반적인 리소스 조합에 대한 재사용 가능한 패턴을 정의할 수 있게 해 줍니다. 이는 플랫폼 팀이 적절한 가드레일과 함께 셀프서비스 기능을 제공하도록 하며, 개발자가 조직 표준·모범 사례를 유지하면서 간단한 목적 특화 API로 복잡한 인프라를 프로비저닝할 수 있게 합니다.