Amazon EKS 아키텍처 - Amazon EKS

이 페이지 개선에 도움 주기

이 사용자 가이드에 기여하려면 모든 페이지의 오른쪽 창에 있는 GitHub에서 이 페이지 편집 링크를 선택합니다.

Amazon EKS 아키텍처

Amazon EKS는 Kubernetes의 일반 클러스터 아키텍처와 일치합니다. 자세한 내용은 쿠버네티스 문서의 쿠버네티스 컴포넌트를 참조하세요. 다음 섹션에는 Amazon EKS의 몇 가지 추가 아키텍처 세부 정보가 요약되어 있습니다.

컨트롤 플레인

Amazon EKS는 모든 클러스터가 고유한 Kubernetes 컨트롤 플레인을 보유하도록 보장합니다. 이 설계는 각 클러스터의 인프라를 분리하여 클러스터 또는 AWS 계정 간에 중복이 발생하지 않도록 합니다. 설정에는 다음이 포함됩니다.

분산 구성 요소

컨트롤 플레인은 AWS 리전 내 AWS 가용성 영역 3개에 걸쳐 최소 2개의 API 서버 인스턴스와 3개의 etcd 인스턴스를 배치합니다.

최적의 성능

Amazon EKS는 컨트롤 플레인 인스턴스를 능동적으로 모니터링 및 조정하여 최고의 성능을 유지합니다.

복원력

컨트롤 플레인 인스턴스가 불안정해지면 Amazon EKS는 필요한 경우 다른 가용 영역을 사용하여 신속하게 이를 대체합니다.

일관적인 가동 시간

여러 가용 영역에서 클러스터를 실행함으로써 안정적인 API 서버 엔드포인트 가용성 서비스 수준에 관한 계약(SLA)을 달성합니다.

Amazon EKS는 Amazon Virtual Private Cloud(Amazon VPC)를 사용하여 단일 클러스터 내의 컨트롤 플레인 구성 요소 간 트래픽을 제한합니다. 클러스터 구성 요소는 Kubernetes 역할 기반 액세스 제어(RBAC) 정책에 따라 권한을 부여받지 않은 경우를 제외하면 다른 클러스터 또는 AWS 계정의 통신을 보거나 수신할 수 없습니다.

컴퓨팅

컨트롤 플레인 외에 Amazon EKS 클러스터에는 노드라고 하는 작업자 컴퓨터 세트가 있습니다. 특정 요구 사항을 충족하고 리소스 사용률을 최적화하려면 적절한 Amazon EKS 클러스터 노드 유형을 선택하는 것이 중요합니다. Amazon EKS는 다음 프라이머리 노드 유형을 제공합니다.

EKS Auto Mode

EKS Auto Mode는 컨트롤 플레인을 넘어 데이터 영역을 포함하도록 AWS 관리를 확장하여 클러스터 인프라 관리를 자동화합니다. 컴퓨팅 오토 스케일링, 네트워킹, 로드 밸런싱, DNS, 스토리지, GPU 지원을 포함하여 핵심 Kubernetes 기능을 기본 구성 요소로 통합합니다. EKS Auto Mode는 향상된 보안 기능과 함께 변경할 수 없는 AMI를 사용하여 워크로드 수요에 따라 노드를 동적으로 관리합니다. 포드 중단 예산을 준수하면서 업데이트 및 업그레이드를 자동화하며, 추가 관리가 필요한 관리형 구성 요소를 포함합니다. 이 옵션은 일상적인 운영에 대한 AWS의 전문 지식을 활용하고, 운영 오버헤드를 최소화하고, 인프라 관리가 아닌 애플리케이션 개발에 집중하려는 사용자에게 적합합니다.

AWSFargate

Fargate는 기본 인스턴스를 관리할 필요가 없는 컨테이너용 서버리스 컴퓨팅 엔진입니다. Fargate를 사용하면 애플리케이션의 리소스 요구 사항을 지정하고, AWS에서 인프라를 자동으로 프로비저닝, 규모 조정 및 유지 관리합니다. 이 옵션은 사용 편의성을 우선시하고 인프라 관리보다는 애플리케이션 개발 및 배포에 집중하고자 하는 사용자에게 적합합니다.

Karpenter

Karpenter는 애플리케이션 가용성과 클러스터 효율성을 개선하는 데 도움이 되는 유연한 고성능 Kubernetes Cluster Autoscaler입니다. Karpenter는 애플리케이션 로드 변화에 대응하여 적절한 크기의 컴퓨팅 리소스를 시작합니다. 이 옵션은 워크로드의 요구 사항을 충족하는 적시 컴퓨팅 리소스를 프로비저닝할 수 있습니다.

관리형 노드 그룹

관리형 노드 그룹은 Amazon EKS 클러스터 내 Amazon EC2 인스턴스 컬렉션 관리에 대한 자동화와 사용자 지정을 결합합니다. AWS는 노드 패치, 업데이트 및 규모 조정과 같은 작업을 처리하여 운영상의 부담을 덜어줍니다. 동시에 사용자 지정 kubelet 인수가 지원되므로 고급 CPU 및 메모리 관리 정책을 사용할 수 있습니다. 또한 클러스터별 별도 권한의 필요성을 우회하면서 서비스 계정에 대한 AWS ID 및 액세스 관리(IAM) 역할을 통해 보안을 강화합니다.

자체 관리형 노드

자체 관리형 노드를 통해 Amazon EKS 클러스터 내에서 Amazon EC2 인스턴스를 완벽하게 제어할 수 있습니다. 사용자는 노드 관리, 규모 조정 및 유지 관리를 담당하므로, 기본 인프라를 완전히 제어할 수 있습니다. 이 옵션은 노드를 세밀하게 제어하고 사용자 지정해야 하며 인프라 관리 및 유지 관리에 시간을 투자할 준비가 된 사용자에게 적합합니다.

Amazon EKS Hybrid Nodes

Amazon EKS Hybrid Nodes를 사용하면 온프레미스 및 엣지 인프라를 Amazon EKS 클러스터의 노드로 사용할 수 있습니다. Amazon EKS Hybrid Nodes는 환경 전반의 Kubernetes 관리를 통합하고 온프레미스 및 엣지 애플리케이션을 위해 Kubernetes 컨트롤 플레인 관리를 AWS로 오프로드합니다.

EKS 기능

Amazon EKS는 클러스터와 별도로 AWS에서 소유한 인프라에서 컨트롤러 및 기타 구성 요소를 운영하는 동안 Kubernetes 사용자 지정 리소스 정의를 사용하여 클러스터에서 Kubernetes API를 설치 및 관리하는 완전관리형 클러스터 기능을 제공합니다. EKS는 이러한 기능에 대한 자동화된 패치 적용, 조정 및 모니터링을 제공하여 수명 주기를 완전하게 관리함으로써 워크로드 오케스트레이션, AWS 리소스 관리 등을 위한 클러스터 내 서비스 운영 부담을 줄입니다.

EKS는 다음과 같은 기능 유형을 제공합니다.

AWS Controllers for Kubernetes(ACK)

AWS Controllers for Kubernetes(ACK)를 사용하면 Kubernetes API를 사용하여 AWS 리소스를 관리할 수 있으므로 S3 버킷, RDS 데이터베이스, IAM 역할 및 기타 AWS 리소스를 Kubernetes 사용자 지정 리소스로 정의할 수 있습니다. S3, RDS, DynamoDB, Lambda 등 50개 이상의 AWS 서비스를 지원하여 동일한 도구 및 워크플로를 사용해 Kubernetes 워크로드와 함께 AWS 리소스를 관리할 수 있습니다.

Argo CD

Argo CD는 Git 리포지토리를 신뢰할 수 있는 소스로 사용하여 애플리케이션 워크로드, AWS 리소스 및 클러스터 구성에 대한 GitOps 기반의 지속적 배포를 구현합니다. Argo CD는 클러스터를 Git 리포지토리에 자동으로 동기화하고 드리프트를 감지하여 배포된 애플리케이션과 리소스가 버전 제어에서 원하는 상태와 일치하도록 지속적으로 조정합니다. Argo CD를 사용하여 지정된 클러스터에서 애플리케이션을 관리하거나 변경 사항이 커밋될 때마다 Git 리포지토리에서 자동화된 배포를 통해 단일 Argo CD 리소스에서 여러 클러스터로 애플리케이션을 배포하고 관리할 수 있습니다.

Kube Resource Orchestrator(kro)

Kube Resource Orchestrator(kro)를 사용하면 여러 리소스를 상위 수준 추상화로 구성하는 사용자 지정 Kubernetes API를 생성할 수 있으므로 플랫폼 팀이 일반적인 리소스 조합에 대해 재사용 가능한 패턴을 정의할 수 있습니다. 이를 통해 플랫폼 팀은 적절한 가드레일을 사용하여 셀프 서비스 기능을 제공할 수 있으므로 개발자는 조직의 표준과 모범 사례를 유지 관리하면서 간단한 목적별 API를 사용하여 복잡한 인프라를 프로비저닝할 수 있습니다.