Amazon EKS
- Elastic Kubernetes Service의 약자이다.
- AWS에 관리형 Kubernetes 클러스터를 실행할 수 있는 서비스이다.
- Kubernetes는 오픈 소스 시스템으로 Docker로 컨테이너화한 애플리케이션의 자동 배포, 확장, 관리를 지원한다.
- 컨테이너를 실행한다는 목적은 ECS와 비슷하지만 사용하는 API가 다르다.
- ECS는 오픈 소스가 아닌 반면 Kubernetes는 오픈 소스이고, 여러 클라우드 제공자가 사용하므로 표준화를 기대할 수 있다.
- 두 가지 실행 모드가 있다.
- EC2 시작모드 : EC2 인스턴스에서처럼 작업자 모드를 배포할 때 사용한다.
- Fargate 모드 : EKS 클러스터에 서버리스 컨테이너를 배포할 때 사용한다. - 사용 사례
- 회사가 온프레미스나 클라우드에서 Kubernetes나 Kubernetes API를 사용 중일 때, Kubernetes 클러스터를 관리하기 위해 EKS를 사용한다. - Kubernetes는 클라우드 애그노스틱으로 Azure, Google Cloud 등 모든 클라우드에서 지원된다.
- 클라우드 또는 컨테이너 간 마이그레이션을 실행하는 경우, EKS가 간단한 솔루션이 될 수 있다.
Amazon EKS - Diagram
- VPC와 세 AZ가 있고, 각 AZ는 퍼블릭 및 프라이빗 서브넷으로 나뉜다.
- EKS 작업자 노드를 생성하면 EC2 인스턴스가 구성되고, 각 노드는 EKS 포드를 실행한다.
- ECS 태스크와 유사하지만 이름에서 포드를 발견하면 Amazon Kubernetes와 관련된 거라고 생각하면 된다.
- EKS 포드가 실행되는 EKS 노드는 오토 스케일링 그룹으로 관리할 수 있다.
- ECS와 유사하게 EKS 서비스나 Kubernetes 서비스를 노출할 때는 프라이빗 로드 밸런서나 퍼블릭 로드 밸런서를 설정해 웹에 연결해야 한다.
Amazon EKS - Node Types
- Managed Node Groups(관리형 노드 그룹)
- AWS로 노드, 즉 EC2 인스턴스를 생성하고 관리한다.
- 노드는 EKS 서비스로 관리되는 오토 스케일링 그룹의 일부이다.
- 온디맨드 인스턴스와 스팟 인스턴스를 지원한다. - Self-Managed Nodes(자체 관리형 노드)
- 사용자 지정 사항이 많고 제어 대상이 많은 경우, 우리가 직접 노드를 생성하고 EKS 클러스터에 등록한 다음 ASG의 일부로 관리해야 한다.
- 사전 빌드된 AMI인 Amazon EKS 최적화 AMI를 사용하면 시간을 절약할 수 있다.
- 자체 AMI를 빌드해도 되지만 복잡할 수 있다.
- 온디맨드 인스턴스와 스팟 인스턴스를 지원한다. - AWS Fargate
- 노드를 원치 않는 경우에는 EKS가 지원하는 Fargate 모드를 선택하면 유지관리도 필요 없고 노드를 관리하지 않아도 된다.
- EKS에서 컨테이너만 실행하면 된다.
Amazon EKS - Data Volumes
- EKS 클러스터에 데이터 볼륨을 연결하려면 EKS 클러스터에 StorageClass manifest(스토리지 클래스 매니페스트)를 지정해야 한다.
- 컨테이너 스토리지 인터페이스(CSI)라는 규격 드라이버를 활용한다.
- EBS와 Fargate 모드가 작동하는 유일한 스토리지 클래스 유형인 EFS를 지원하고, FSx for Lustre와 FSx for NetApp ONTAP을 지원한다.
'AWS(Amazon Web Service)' 카테고리의 다른 글
[AWS] AWS's containers - AWS App2Container (A2C) (0) | 2024.12.08 |
---|---|
[AWS] AWS's containers - App Runner (0) | 2024.12.07 |
[AWS] AWS's containers - ECR (0) | 2024.12.05 |
[AWS] AWS's containers - ECS 솔루션 아키텍트 (0) | 2024.12.04 |
[AWS] AWS's containers - ECS Service Auto Scaling (0) | 2024.12.03 |