Amazon EKS 기능

개요

Amazon Elastic Kubernetes Service(Amazon EKS)는 AWS와 온프레미스에서 손쉽게 Kubernetes를 실행할 수 있는 관리형 Kubernetes 서비스입니다. Kubernetes는 컨테이너식 애플리케이션의 배포, 확장 및 관리를 자동화하기 위한 오픈 소스 시스템입니다. Amazon EKS는 Kubernetes 인증 서비스이므로 업스트림 Kubernetes에서 실행되는 기존 애플리케이션과 호환됩니다.

Amazon EKS는 컨테이너 예약, 애플리케이션 가용성 관리, 클러스터 데이터 저장 및 다른 주요 태스크를 담당하는 Kubernetes 제어 영역의 가용성과 확장성을 관리합니다.

Amazon EKS를 사용하면 Amazon Elastic Compute Cloud(Amazon EC2)와 AWS Fargate 모두에서 Kubernetes 애플리케이션을 실행할 수 있습니다. Amazon EKS를 사용하면 AWS 인프라의 모든 성능, 규모, 안정성 및 가용성뿐만 아니라 AWS 네트워킹 및 보안 서비스(로드 분산을 위한 Application Load Balancer(ALB), AWS Identity and Access Management(IAM)와 역할 기반 액세스 제어(RBAC) 통합, Pod 네트워킹을 위한 AWS Virtual Private Cloud(VPC) 지원 등)와의 통합에 따른 이점을 활용할 수 있습니다.

컴퓨터 데이터 사진

관리형 Kubernetes 클러스터

Amazon EKS는 여러 AWS 가용 영역(AZ)에서 실행되는, 확장 가능하고 가용성이 높은 Kubernetes 제어 영역을 제공합니다. Amazon EKS는 etcd 지속성 계층과 Kubernetes API 서버의 가용성 및 확장성을 자동으로 관리합니다. Amazon EKS는 높은 가용성을 보장하기 위해 3개의 AZ에서 Kubernetes 제어 영역을 실행하고 비정상적인 제어 영역 노드를 자동으로 감지해 교체합니다.

AWS Controllers for Kubernetes(ACK)를 사용하면 Kubernetes 환경 내에서 직접 AWS 서비스를 관리하고 제어할 수 있습니다. ACK를 사용하면 AWS 서비스를 활용하는, 확장 가능한 고가용성의 Kubernetes 애플리케이션을 간편하게 구축할 수 있습니다.

EKS는 Kubernetes 클러스터에 대한 통합 콘솔을 제공합니다. 클러스터 운영자와 애플리케이션 개발자는 EKS를 단일 위치로 사용하여 Amazon EKS에서 실행되는 Kubernetes 애플리케이션을 구성하고 시각화하며 관련 문제를 해결할 수 있습니다. EKS 콘솔은 AWS를 통해 호스팅되며 모든 EKS 클러스터에 자동으로 제공됩니다.

EKS 추가 기능은 Kubernetes의 운영 기능을 확장하는 일반적인 운영 소프트웨어입니다. EKS를 사용하여 이 추가 기능 소프트웨어를 설치하고 최신 상태로 유지할 수 있습니다. Amazon EKS 클러스터를 시작할 때 가관측성, 네트워킹, 자동 크기 조정 및 AWS 서비스 통합을 위한 Kubernetes 도구를 포함하여 클러스터에서 실행하려는 추가 기능을 선택합니다.

Amazon EKS를 사용하면 단일 명령으로 클러스터의 노드를 생성, 업데이트, 조정 및 종료할 수 있습니다. 이러한 노드에서 Amazon EC2 스팟 인스턴스를 활용하여 비용을 절감할 수도 있습니다. 관리형 노드 그룹은 AWS 계정의 최신 EKS 최적화 또는 사용자 지정 Amazon Machine Image(AMI)를 사용하여 Amazon EC2 인스턴스를 실행하며, 업데이트 및 종료 시에는 노드를 정상적으로 드레이닝하여 애플리케이션 가용성을 유지합니다.

하이브리드 배포

EKS on AWS Outposts를 사용하여 온프레미스 시스템에 대한 매우 짧은 대기 시간을 필요로 하는 컨테이너식 애플리케이션을 실행할 수 있습니다. AWS Outposts는 AWS 인프라, AWS 서비스, API 및 도구를 거의 모든 연결된 사이트로 확장하는 완전관리형 서비스입니다. Outposts 기반 EKS를 사용하여 클라우드에서 컨테이너를 관리하는 것처럼 쉽게 온프레미스에서도 컨테이너를 관리할 수 있습니다.

AWS Local Zones 또는 AWS Wavelength에서 실행되는 노드를 EKS에 연결하면 엣지에서 더 많은 AWS 관리형 인프라를 선택할 수 있습니다.

Amazon EKS Distro를 사용하면 AWS 기반 Amazon EKS에 사용된 오픈 소스 Kubernetes 소프트웨어 배포를 패키징하여 자체 온프레미스 인프라에서 사용할 수 있습니다. 자체 도구 또는 Amazon EKS Anywhere를 통해 EKS Distro 클러스터를 관리할 수 있습니다.

Amazon EKS Anywhere를 사용하면 자체 가상 머신(VM)과 베어 메탈 서버를 포함한 온프레미스 인프라에서 Kubernetes 클러스터(Amazon EKS Distro의 소프트웨어를 사용하여 구축)를 손쉽게 생성하고 운영할 수 있습니다. EKS Anywhere를 사용하면 Kubernetes 클러스터 관리를 위한 자체 도구를 구축하고 지원해야 하는 복잡성이 줄어듭니다. EKS Anywhere는 클러스터 생성, 인프라(예: 베어 메탈, VMware vSphere 및 클라우드 가상 머신) 관리 및 운영을 간소화하는 자동화 도구를 제공합니다. 여기에는 기본 로깅, 모니터링, 네트워킹 및 스토리지 구성이 포함된 클라우드 가상 머신도 포함됩니다. EKS Anywhere는 클러스터 설치 및 수명 주기 관리, 관측성, 클러스터 백업 및 정책 관리 등 프로덕션에서 Kubernetes를 실행하는 데 필요한 추가 도구 및 구성 요소를 제공합니다.

노드 시작 및 단일 위치 관리에 eksctl 사용

eksctl 명령줄 도구를 사용하여 Amazon EKS 가동 및 실행을 몇 분 안에 시작할 수 있습니다. "eksctl create cluster" 명령을 실행하기만 하면 EKS 클러스터가 생성됩니다. eksctl을 사용하면 노드 및 추가 기능의 관리를 포함하여 클러스터 관리 및 운영을 간소화할 수 있습니다.

Amazon EKS는 Windows 작업자 노드 및 Windows 컨테이너 예약을 지원합니다. EKS는 Linux 작업자 노드와 함께 Windows 작업자 노드의 실행을 지원합니다. 따라서 동일한 클러스터를 사용하여 이러한 운영 체제에서 애플리케이션을 관리할 수 있습니다.

Arm 기반 EC2 인스턴스를 구동하는 AWS Graviton2 프로세서는 성능과 기능을 대폭 개선하는 동시에 비용을 크게 낮춰줍니다. 컨테이너를 실행할 때의 주된 목표는 애플리케이션 비용 효율성을 개선하는 것입니다. 이 둘의 결합은 가격 대비 성능을 추가로 개선합니다. 예를 들어 워크로드 테스트에서 Graviton2 프로세서 기반의 인스턴스 유형은 상응하는 x86 기반 M5, C5 및 R5 패밀리에 비해 40% 더 높은 가격 대비 성능을 제공하는 것으로 밝혀졌습니다. AWS Graviton2 기반 Amazon EKS는 두 서비스가 모두 제공되는 리전에서 정식 출시되었습니다.

네트워킹과 보안

Amazon EKS를 사용하면 AWS 서비스 및 기술 파트너 솔루션의 어드밴스 기능 및 관련 통합을 통해 Kubernetes 클러스터 보안을 쉽게 강화할 수 있습니다. 예를 들어 IAM은 세분화된 액세스 제어를 제공하고 Amazon VPC는 사용자의 Kubernetes 클러스터를 다른 고객과 분리합니다.

Amazon Elastic Kubernetes Service(EKS)는 프라이빗 IPv4 주소 공간의 제한을 훨씬 뛰어넘어 고객이 Kubernetes 기반 컨테이너식 애플리케이션의 크기를 조정할 수 있는 IPv6를 지원합니다. IPv6에 대한 EKS 지원으로 인해, 포드는 전역 라우팅할 수 있는 IPv6 주소에만 할당되며 제한된 프라이빗 IPv4 주소 공간을 사용하지 않고 클러스터 내 애플리케이션 크기를 조정할 수 있습니다. 이 전역 라우팅 가능한 IPv6 주소를 사용하여 Amazon VPC, 온프레미스 네트워크 또는 퍼블릭 인터넷에 있는 모든 IPv6 엔드포인트와 직접 통신할 수 있습니다. 또한 EKS는 네트워킹을 구성하여 포드가 클러스터 외부의 IPv4 기반 엔드포인트와 계속 통신할 수 있고, 조직 내 배포된 모든 종속 서비스를 먼저 IPv6로 마이그레이션할 필요 없이 Kubernetes를 사용하는 IPv6의 이점을 취할 수 있도록 합니다.

EKS Pod Identity는 고객이 AWS 서비스에 액세스하기 위해 EKS 클러스터에서 애플리케이션을 설정하는 데 필요한 작업을 간소화합니다. EKS 클러스터 관리자는 S3 버킷, DynamoDB 테이블 등과 같은 AWS 리소스에 액세스하기 위해 Kubernetes 애플리케이션을 인증하는 데 필요한 IAM 보안 인증 정보를 얻기 위한 간소화된 워크플로를 이용할 수 있습니다. EKS Pod Identity를 사용하면 여러 클러스터에서 IAM 역할을 쉽게 사용할 수 있으며, IAM 역할 전반에서 정책을 재사용할 수 있도록 지원하여 IAM 정책 관리를 간소화합니다.

AWS Cloud Map은 클라우드 리소스 검색 서비스입니다. Cloud Map을 사용하면 사용자 지정 이름을 정의하고 동적으로 변경되는 애플리케이션 리소스의 업데이트된 위치를 유지할 수 있습니다. 웹 서비스에서 항상 가장 최신 리소스 위치를 검색할 수 있으므로 애플리케이션 가용성이 향상됩니다. Cloud Map은 Kubernetes 서비스가 실행하며 종료 시 제거하는 내부 서비스 위치를 Cloud Map 서비스 레지스트리에 자동으로 전파하는 오픈 소스 Kubernetes 커넥터인 external-dns와 호환됩니다. Cloud Map을 통해 Kubernetes 기반 서비스를 검색할 수 있으므로 Cloud Map을 모든 컨테이너 워크로드에 대한 통합 서비스 레지스트리로 사용할 수 있습니다.

서비스 메시는 애플리케이션에 있는 모든 마이크로서비스의 통신 방법을 표준화하여 복잡한 마이크로서비스 애플리케이션을 손쉽게 구축하고 실행할 수 있도록 합니다. AWS App Mesh는 완벽한 가시성과 고가용성을 제공하는 애플리케이션을 구성합니다. Kubernetes용 AWS App Mesh 컨트롤러를 사용하여 메시에 연결된 새로운 서비스를 생성하고 트래픽 라우팅을 정의하며 암호화와 같은 보안 기능을 구성할 수 있습니다. 또한 App Mesh를 사용하면 Kubernetes 포드를 AWS Cloud Map에 자동으로 등록하여 서비스를 검색할 수 있습니다. App Mesh는 지표, 로그 및 트레이스를 제공된 Envoy 부트스트랩 구성 내에 지정된 엔드포인트로 내보냅니다. App Mesh는 메시 사용 마이크로서비스 간에 트래픽 라우팅, 회로 차단, 재시도 및 기타 제어를 구성하기 위한 API를 제공합니다. App Mesh Mutual TLS는 서비스 간의 모든 요청을 암호화하는 데 도움이 되며 프라이빗 네트워크에서 발생하는 요청도 암호화합니다. 또한 인증 제어를 추가하여 허용한 서비스 간의 통신만 지원할 수 있습니다.

Amazon VPC에서 실행되는 EKS 클러스터를 통해 자체 VPC 보안 그룹과 네트워크 액세스 제어 목록(ACL)을 사용할 수 있습니다. 컴퓨팅 리소스는 다른 고객과 공유되지 않으므로 높은 수준의 격리를 바탕으로 안전하고 안정적인 애플리케이션을 구축할 수 있습니다. EKS는 Amazon VPC 컨테이너 네트워크 인터페이스(CNI)를 사용하여 Kubernetes 포드가 VPC에서 IP 주소를 수신하도록 허용합니다. Amazon EKS는 Project Calico 네트워크 정책 엔진과 연동하여 Kubernetes 워크로드에 대한 세분화된 네트워킹 정책을 제공합니다. Kubernetes 네트워크 정책 API를 사용하여 서비스별로 액세스를 제어할 수 있습니다.

Amazon EKS는 Kubernetes RBAC(Kubernetes의 기본 역할 기반 액세스 제어 시스템)와 AWS IAM를 통합합니다. RBAC 역할을 각 IAM 엔터티에 직접 할당하여 Kubernetes 제어 영역 노드에 대한 액세스 권한을 세분화하여 제어할 수 있습니다.

Amazon EKS에서 Kubernetes 서비스 계정에 IAM 권한을 할당할 수 있습니다. IAM 역할은 다른 컨테이너식 서비스, 데이터베이스 및 보안 정보 같은 클러스터 외부의 AWS 리소스 또는 AWS 외부에서 실행되는 서드 파티 서비스 및 애플리케이션에 대한 액세스를 제어하는 데 사용할 수 있습니다. 이를 통해 여러 콜로케이션 서비스를 포함하는 클러스터를 실행할 때 포드 수준에서 액세스를 세분화하여 제어하는 동시에 클러스터 가용성 및 비용 최적화를 간소화할 수 있습니다.

Amazon EKS는 규제 대상 애플리케이션 및 민감한 애플리케이션을 위한 여러 규정 준수 프로그램에 의해 인증을 받았습니다. Amazon EKS는 SOC, PCI, ISO, FedRAMP-Moderate, IRAP, C5, K-ISMS, ENS High, OSPAR, HITRUST CSF를 준수하며 HIPAA 적격 서비스입니다.

Amazon EKS는 컨테이너 이미지 서명 확인과 호환되므로 승인된 이미지 및 아티팩트와 함께 컨테이너 워크로드를 배포할 수 있습니다. Amazon EKS 클러스터에 이미지를 배포하기 전에 완전관리형 서명 솔루션인 AWS Signer에서 서명한 이미지(또는 소프트웨어 BOM과 같은 기타 OCI 아티팩트)를 확인할 수 있습니다. AWS는 오픈 소스 기반 이미지 서명 및 확인 솔루션을 지원하므로 레지스트리에 저장된 아티팩트를 손쉽게 서명하고, 코드형 오픈 소스 정책 또는 승인 컨트롤러를 사용하여 아티팩트를 확인할 수 있습니다.

로드 밸런싱

Amazon EKS는 Application Load Balancer(ALB), 네트워크 로드 밸런서(NLB) 및 Classic Load Balancer를 포함한 Elastic Load Balancing의 사용을 지원합니다.

표준 Kubernetes 클러스터 로드 밸런싱 또는 Kubernetes를 지원하는 모든 수신 컨트롤러를 Amazon EKS 클러스터에서 실행할 수 있습니다.

서버 없는 컴퓨팅

EKS는 AWS Fargate에서 서버리스 컴퓨팅을 사용하여 Kubernetes 애플리케이션을 실행하도록 지원합니다. Fargate에서는 서버를 프로비저닝하고 관리할 필요가 없어 애플리케이션별로 리소스를 지정하고 관련 비용을 지불할 수 있으며, 애플리케이션을 격리하도록 설계되어 보안 성능을 향상합니다.

비용 모니터링

Amazon EKS를 사용하면 클러스터 수준과 개별 애플리케이션 수준에서 Kubernetes 사용량과 관련된 비용을 간편하게 파악할 수 있습니다.

Amazon EKS는 클러스터에 조인하는 모든 EC2 인스턴스에 AWS 비용 할당 태그를 자동으로 추가합니다. 따라서 조직 전체에서 사용자 지정 태깅 정책을 적용하지 않아도 클러스터 수준 비용에 대한 인사이트를 확보할 수 있습니다. AWS 빌링 콘솔에서 EKS 클러스터 이름 비용 할당 태그를 활성화한 후 AWS Cost and Usage Report를 사용하여 EKS 클러스터에 연결된 EC2 비용을 추적할 수 있습니다.

Amazon EKS는 Kubecost를 지원합니다. 따라서 포드, 노드, 네임스페이스 및 레이블을 포함한 Kubernetes 리소스로 비용을 분류하여 모니터링할 수 있습니다. Kubernetes 플랫폼 관리자와 재무 리더는 Kubecost를 사용하여 Amazon EKS 관련 요금 내역을 시각화하고 비용을 할당하며 애플리케이션 팀과 같은 조직 단위에 비용을 차지백할 수 있습니다. 실제 AWS 결제를 기반으로 내부 팀과 사업부에 투명하고 정확한 비용 데이터를 제공하고 인프라 환경 및 클러스터 내 사용 패턴에 따라 비용 최적화에 대한 맞춤형 권장 사항을 받을 수 있습니다.

로깅

Amazon EKS를 AWS CloudTrail과 통합하면 감사 기록을 포함하여 EKS 관리 작업을 볼 수 있습니다. CloudTrail을 사용하여 Amazon EKS API에 대한 API 호출 내역을 볼 수 있습니다. 또한 Amazon EKS에서 Kubernetes 제어 영역 로그를 Amazon CloudWatch로 보내 분석, 디버깅 및 감사에 활용할 수도 있습니다.

공인 인증

Amazon EKS는 업스트림 Kubernetes를 실행하고 공인 Kubernetes 인증 서비스이므로 Kubernetes 커뮤니티의 기존 플러그 인과 도구를 모두 사용할 수 있습니다. 온프레미스 데이터 센터에서 실행 중인지 퍼블릭 클라우드에서 실행 중인지에 상관없이, Amazon EKS에서 실행 중인 애플리케이션은 표준 Kubernetes 환경에서 실행 중인 애플리케이션과 완벽하게 호환됩니다. 즉, 코드를 리팩터링하지 않고 표준 Kubernetes 애플리케이션을 Amazon EKS로 쉽게 마이그레이션할 수 있습니다.

관리형 클러스터 업데이트

Amazon EKS를 사용하면 업데이트 프로세스를 관리할 필요 없이, 실행 중인 클러스터를 최신 Kubernetes 버전으로 쉽게 업데이트할 수 있습니다. 새 클러스터를 생성하거나 애플리케이션을 새 클러스터로 마이그레이션할 필요 없이 Kubernetes 버전 업데이트가 바로 이루어집니다.

새로운 Kubernetes 버전은 Amazon EKS와 함께 사용할 수 있도록 릴리스되고 검증되었으므로, 이 안정적인 Kubernetes 버전을 언제든지 업데이트 프로세스의 일부로 지원할 예정입니다. SDK, CLI 또는 AWS 콘솔을 통해 새 버전 설치를 시작하고 진행 중인 업데이트 상태를 검토할 수 있습니다.

고급 워크로드 지원

Amazon EKS는 GPU 사용 P2P3 Amazon EC2 인스턴스용으로 구성된 NVIDIA 드라이버를 포함하는 최적화된 Amazon Machine Image(AMI)를 제공합니다. 이는 쉽게 Amazon EKS를 사용하여 기계 학습(ML), Kubeflow, 딥 러닝(DL) 컨테이너, 고성능 컴퓨팅(HPC), 금융 분석 및 비디오 트랜스코딩 등 고급 컴퓨팅을 필요로 하는 워크로드를 실행할 수 있게 해 줍니다.

오픈 소스 호환성

Amazon EKS는 Kubernetes 커뮤니티 도구와 완벽하게 호환되며 인기 있는 Kubernetes 추가 기능을 지원합니다. 여기에는 클러스터용 DNS 서비스를 생성하는 CoreDNS와 Amazon EKS에서 클러스터에 액세스하고 관리하는 데 도움이 되는 Kubernetes Dashboard 웹 기반 UI 및 kubectl 명령줄 도구가 포함됩니다.

자세한 내용은 Kubernetes 커뮤니티 도구 GitHub 페이지를 참조하세요.

EKS 커넥터

Amazon EKS에서 호환 Kubernetes 클러스터를 AWS에 연결하고 이를 Amazon EKS 콘솔에서 시각화할 수 있습니다. 온프레미스에서 실행되는 Amazon EKS Anywhere 클러스터, Amazon Elastic Compute Cloud(Amazon EC2)의 자체 관리형 클러스터 및 기타 AWS 외부에서 실행되는 Kubernetes 클러스터를 포함해 어떤 호환 Kubernetes 클러스터도 연결할 수 있습니다. 클러스터가 실행되는 위치와 상관없이, Amazon EKS 콘솔을 사용하여 모든 연결된 클러스터와 해당 클러스터에서 실행되는 Kubernetes 리소스를 볼 수 있습니다.