오토에버 클라우드 2기 62일차
오토에버 클라우드 2기 62일차
1. EKS란 무엇인가?
EKS(Elastic Kubernetes Service)는 AWS에서 제공하는 관리형 쿠버네티스 서비스
대규모 오케스트라에 비유하자면 지휘자의 역할은 수많은 악기(애플리케이션 컨테이너)들이 조화롭게 연주(서비스 운영)되도록 지휘하는 것이다
- 쿠버네티스(Kubernetes)는 이 오케스트라를 운영하기 위한 총보(악보 전체)와 지휘봉 같은 도구 매우 강력하지만, 악보를 해석하고 지휘하는 법을 배우는 것은 복잡하고 어렵다
- EKS는 이 어려운 지휘를 도와주는 전문 부지휘자와 같다 “어떤 곡을 연주해줘”라고 중요한 결정만 내리면, 부지휘자(EKS)가 악보 관리, 단원(서버) 배치, 무대(인프라) 설정 등 복잡하고 귀찮은 일들을 알아서 처리한다
결론적으로, EKS는 사용자가 쿠버네티스의 강력한 기능을 더 쉽고 안정적으로 사용할 수 있도록, AWS가 복잡한 관리 부분을 대신 처리해주는 서비스이다
2. 왜 EKS를 사용할까?
- 관리 부담 감소: 쿠버네티스 운영에서 가장 어렵고 중요한 부분인 컨트롤 플레인(Control Plane, 지휘자석)을 AWS가 전적으로 관리하고 책임진다 사용자는 컨트롤 플레인의 설치, 업데이트, 백업, 고가용성 구성 등에 대해 전혀 신경 쓸 필요가 없다
- 높은 안정성과 가용성: AWS는 컨트롤 플레인을 여러 가용 영역(AZ)에 걸쳐 자동으로 분산 배치하여, 일부 인프라에 장애가 발생하더라도 클러스터가 중단되지 않도록 보장한다
- AWS 서비스와의 완벽한 통합:
- VPC: EKS는 AWS의 가상 네트워크(VPC)와 완벽하게 통합되어, 컨테이너들이 VPC 내부의 다른 서비스(예: 데이터베이스)와 안전하고 원활하게 통신할 수 있음
- IAM: AWS의 보안 및 접근 관리 서비스(IAM)와 연동하여, 어떤 사용자가 클러스터에 어떤 작업을 할 수 있는지 세밀하고 안전하게 제어할 수 있음
- ELB (Load Balancer): 쿠버네티스에서 외부 접속을 위한
LoadBalancer타입의 서비스를 생성하면, AWS의 로드밸런서(ELB)가 자동으로 생성되고 연결되어 외부 트래픽을 안정적으로 처리
3. EKS의 동작
3.1. 컨트롤 플레인 (Control Plane): AWS가 관리하는 두뇌
클러스터의 모든 것을 결정하고 관리하는 ‘두뇌’ 또는 ‘지휘자’ EKS의 가장 큰 장점은 이 부분을 AWS가 100% 관리해준다이다 여기에는 API 서버, 스케줄러 등 쿠버네티스의 핵심 컴포넌트들이 포함
3.2. 데이터 플레인 (Data Plane): 우리가 애플리케이션을 실행하는 공간
컨트롤 플레인의 지시를 받아 실제 애플리케이션 컨테이너(Pod)들이 실행되는 ‘연주 단원(서버)’ 그룹 이 부분은 사용자가 필요에 따라 두 가지 방식 중 하나를 선택하여 구성할 수 있다
- EC2 노드 그룹 (직접 관리하는 서버)
- 개념: 사용자가 직접 EC2 인스턴스(가상 서버)의 종류, 크기, 개수 등을 선택하여 워커 노드 그룹을 구성하는 방식
- 장점: 서버에 대한 세밀한 제어가 가능하며, 특정 GPU가 필요한 머신러닝 작업 등 특수한 요구사항에 대응할 수 있다
- 단점: 서버의 OS 업데이트, 보안 패치 등 일부 관리 작업을 사용자가 직접 수행해야 한다
- AWS Fargate (빌려 쓰는 서버 공간)
- 개념: 서버리스(Serverless) 방식으로, EC2 인스턴스를 아예 신경 쓸 필요 없이 컨테이너를 실행하는 방식
- 장점: 서버 관리에 대한 부담이 전혀 없다 애플리케이션에 필요한 CPU와 메모리만 지정하면 AWS가 알아서 필요한 인프라를 제공하고, 사용한 만큼만 비용을 지불
- 단점: EC2 방식에 비해 세밀한 서버 제어는 불가능
| 구분 | EC2 노드 그룹 | AWS Fargate |
|---|---|---|
| 비유 | 내 전용 연주실을 빌리는 것 | 시간제 연습실을 필요할 때만 빌리는 것 |
| 관리 주체 | 서버 관리 일부는 사용자 책임 | 서버 관리는 100% AWS 책임 |
| 제어 수준 | 높음 (서버 종류 선택 가능) | 낮음 (서버를 신경 쓰지 않음) |
| 적합한 경우 | 특정 서버 사양이 필요하거나, 비용을 최적화하고 싶을 때 | 인프라 관리에 신경 쓰고 싶지 않고, 빠르고 간편하게 컨테이너를 실행하고 싶을 때 |
4. EKS 시작하기
- 사전 도구 설치: 로컬 컴퓨터에
AWS CLI,eksctl,kubectl과 같은 명령줄 도구를 설치한다 - 네트워크(VPC) 준비: EKS 클러스터가 사용할 가상 네트워크 환경을 구성 (CloudFormation이나
eksctl이 자동으로 처리해 줄 수 있다) - 클러스터 생성:
eksctl과 같은 도구를 사용하여 간단한 명령어로 컨트롤 플레인과 데이터 플레인(EC2 또는 Fargate)을 생성 - 연결 설정: 클러스터가 생성되면
kubectl이 해당 클러스터와 통신할 수 있도록 인증 정보를 설정 - 애플리케이션 배포:
kubectl apply명령어를 사용하여 컨테이너화된 애플리케이션을 클러스터에 배포
5. EKS vs. ECS: 핵심 차이점
가장 큰 차이점은 “누가 만들었는가?”
- ECS (Elastic Container Service)는 AWS가 직접 만든 독자적인 기술 AWS 환경에 완벽하게 최적화되어 있고, 다른 AWS 서비스들과의 연동이 매우 부드럽다 사용법이 비교적 간단해서 빠르게 시작할 수 있다는 장점
- EKS (Elastic Kubernetes Service)는 오픈소스 표준인 쿠버네티스(Kubernetes)를 AWS에서 쉽게 사용할 수 있도록 만든 관리형 서비스 쿠버네티스 자체의 강력함과 유연성, 그리고 거대한 오픈소스 생태계를 그대로 활용할 수 있어 확장성과 이식성이 뛰어나다
상세 비교 표
| 구분 항목 | ECS (Elastic Container Service) | EKS (Elastic Kubernetes Service) |
|---|---|---|
| 기본 기술 | 🔹 AWS 독자 기술 | 🔸 오픈소스 쿠버네티스 |
| 학습 곡선 | 낮음. 개념이 단순하고 AWS 콘솔에서 직관적으로 사용 가능 | 높음. 쿠버네티스 자체의 복잡한 개념(Pod, Service, Ingress 등) 학습 필요 |
| 유연성 및 제어 | 제한적. AWS가 정해놓은 방식에 최적화되어 있음 | 매우 높음. 쿠버네티스의 모든 기능과 다양한 오픈소스 도구를 활용하여 세밀한 제어 가능 |
| 이식성 ( portability) | 낮음. AWS 생태계에 종속적. 다른 클라우드로 이전하기 어려움 | 매우 높음. 표준 쿠버네티스이므로 다른 클라우드(GCP, Azure)나 온프레미스 환경으로 이전하기 용이 |
| 생태계 및 커뮤니티 | AWS를 중심으로 한 생태계 | CNCF를 중심으로 한 거대하고 활발한 글로벌 오픈소스 커뮤니티 |
| 네트워킹 | 단순함. AWS VPC 네트워킹과 긴밀하게 통합 | 복잡함. 다양한 CNI(네트워크 플러그인)를 선택하고 구성해야 함 |
| 가격 모델 | Fargate 또는 EC2 인스턴스 사용 비용만 발생 | 클러스터 관리 비용(시간당) + Fargate 또는 EC2 인스턴스 사용 비용 |
| 적합한 사용자 | 🙋 AWS 환경에 익숙하고, 빠르고 단순하게 컨테이너를 배포하고 싶은 사용자 | 🧑💻 멀티 클라우드 전략을 고려하거나, 높은 유연성과 표준 기술을 선호하는 사용자 |
This post is licensed under CC BY 4.0 by the author.