개요
ECS, EKS, Fargate, Kops 의 차이를 요약해본다.
ECS with EC2
- AWS 자체 개발하여 제공하는 컨테이너 서비스
- 장점
- EC2 인스턴스에 대한 full 컨트롤, GPU 인스턴스 활용 용이
- spot 인스턴스 활용 가능하여 최대 90% 비용 절감
- 단점
- EC2 인스턴스를 직접 관리해야함, 예: 인스턴스에 대한 보안 패치 등을 직접 처리해야함
ECS with Fargate
- EC2 인스턴스 관리에 대해 걱정 안해도 됨
- 장점
- 관리할 서버가 없음
- CPU/Memory 선택이 상대적으로 좀 더 용이함
- Fargate Spot을 사용하여 70% 절감된 금액으로 이용할 가능성 있음
- 단점
- awsvpc로 네트워크 옵션이 제한됨
EKS
-
master 노드를 aws에서 관리해주는 k8s 클러스터 서비스
-
장점
- k8s 클러스터 컨트롤을 안해도 됨(설치, 운영)
- k8s용 tool이나 plugin연동 용이
- EKS 자체가 클러스터 관리 능력이 뛰어남
- AWS 서비스랑 연동 손쉬움
- VPC 네트워킹 사용
- 기존 오픈소스 k8s 클러스터랑 호환 잘 됨
- EC2 spot 인스턴스를 지원해 비용절감 가능함
- 단점
- 필자 사견인데 딱히없다. ECS보다 오픈소스인 K8S를 사용하여 클러스터를 운영하는게 효율적인것 같다.
Fargate
- 보통 컨테이너 관리 플랫폼을 쓰면 같은 서버에서 CPU/MEM이 클러스터 관리용으로 일부 소비되게 되어있다. 예를 들면 K8S worker노드가 사용자의 목적에 맞는 프로그램 수행만 하는게 아니라 K8S 관련 프로세스들으 자원을 소모하는것이다.
- Fargate는 이 관리 부분은 다 클라우드 뒤로 숨기고 비지니스 본연에만 집중하는 것이다.
- 장점
- 클러스터를 생성하고 workload를 추가하는데 세부적인 장비 설정등은 다 aws에 맡길수 있다.
- 단점
- 정기적인 서비스 환경에서는 장점이 희석됨
- AWS VPC만 지원함
- 동작 과정에서 제어권이 적음
Kops
- AWS가 제공해주는 K8s Operations
- k8s 클러스터 업그레이드 등의 목적으로 쓸 수 있음
- 필자 사견
- 굳이 Kops 까지 가지말고 EKS를 그대로 쓰면 될 것 같다. 특히 Kops를 쓰면 마스터 노드까지 관리해야 하는듯 하다.
필자의 의견
- EKS를 쓰는게 합리적인것 같다.
- 이를 통해 오픈소스의 장점과 아마존에서 관리해주는 부분의 장점을 레버리지 할 수 있을듯 하다.
- EKS의 Worker는 Spot Instance까지 고려하여 비용 절감을 고려하면 더 좋을것 같다.
Reference
- https://cast.ai/blog/aws-eks-vs-ecs-vs-fargate-where-to-manage-your-kubernetes/