Victoree's Blog

[Big Chat] EKS란 무엇인가 본문

Dev Circles/Ausg

[Big Chat] EKS란 무엇인가

victoree 2021. 4. 23. 17:09
728x90

1. EKS란?

Elastic Kubernetes service의 약자로, AWS에서 제공하는 컨테이너 기반의 서비스입니다.
AWS에서는 EKS를 다음과 같이 설명하고 있습니다.

EKS란 자체 쿠버네티스 컨트롤 플레인이나 작업자 노드를 설치 및 운영할 필요 없이 
AWS에서 쿠버네티스를 손쉽게 실행할 수 있도록 지원하는 관리형 서비스입니다.

위 말만 가지고는 EKS가 무슨 서비스인지 잘 이해가 되지 않습니다 :(
우선 쿠버네티스를 잘 모르시는 분들을 위해 잠깐 쿠버네티스에 대해 먼저 설명하고 다시 EKS를 살펴봅시다!

1-1. Kubernetes 란?

  • 대규모 컨테이너화된 애플리케이션을 배포 & 확장 &. 관리하는 데 사용할 수 있는 오픈 소스 소프트웨어
  • 쿠버네티스로 서비스를 구축할 때는 특정 파드들의 네트워크, 포트, 서비스 명, 각 파드들간의 통신 정보를 yaml 파일에 작성
  • 쿠버네티스를사용하면서버의리소스부족으로인해서비스확장을하거나배포를할때에별도의수동프로세스가필요하지않음
    • HPA (Horizontal Pod AutoScaler)
      • 특정 메트릭에 리소스 지표들이 임계점을 지나면 파드의 조절하여스케일링
    • VPA (Vertical Pod Autoscaler)
      • 파드의 리소스를 CPU 및 메모리를 자동으로 조정하여 애플리케이션의 “크기를 적절히 조정”

이런 기능들처럼 컨테이너화 된 어플리케이션를 관리할 수있는 소프트웨어 중 하나가 쿠버네티스 입니다.

1-2. 쿠버네티스의 대표적 특성

1) 어플리케이션 환경의 통일

어플리케이션 환경의 통일

개발 환경과 운영 환경이 동일한 환경(컨테이너)에서 애플리케이션의 구동을 보장함으로 어플리케이션의 환경의 통일성을 보장할 수 있습니다.

2) 지속적인 상태 확인과 셀프 힐링

지속적인 상태 확인과 셀프힐링

쿠버네티스는 배포된 애플리케이션의 구성 요소들과 노드를 지속적으로 모니터링합니다. 컨테이너에 문제가 발생하거나 노드에 장애가 발생할 경우 자동으로 해당 애플리케이션 컨테이너를 문제가 없는 다른 적당한 노드로 스케쥴링하여 다시 구동시켜줍니다.

컨테이너 특성상 재구동이 매우 빠르게 이루어지며 별도의 모니터링 없이도 장애에 즉각적으로 대응할 수 있게 됩니다.

3) 오토스케일링

오토스케일링

특정 컨테이너에 부하가 급격하게 발생할 경우, 쿠버네티스는 이를 모니터링 하고 있다가 정해진 수준 이상으로 부하 발생시 자동으로 스케일 아웃하여 컨테이너를 늘려서 부하를 분산시켜줍니다.
사용이 줄어 부하가 감소하면 이 역시, 다시 이전 수준으로 감소시켜 줍니다.
이를 통해 급격한 부하 증가에 따른 장애를 방지할 수 있으며, 스케일 아웃을 위해 미리 거대한 자원을 확보해 둘 필요가 없기 때문에비용적인 측면 역시 많은 효과를 볼 수 있습니다.

마무리. 다시 EKS를 보면,

EKS는 Kubernetes를 손쉽게 실행할 수 있도록 지원하는 관리형 서비스 라고 생각하시면 됩니다.

  • 네이티브 및 업스트림 Kubernetes 환경을 제공하는데, 이는
    • 쿠버네티스 업스트림 버전 다운 👉 온프레미스에 설치했을 때, EKS API와 동일하게 운영됨을 보장하여 서비스를 제공
  • AWS 서비스와 간편하게 연동되어 마치 하나의 라이브러리를 사용하듯 사용이 가능함

2. EKS를 사용하면!

쿠버네티스는 마스터 노드의 안정성을 위해서 보통 3 카피 이상의 마스터 노드의 운영을 권장하고 있습니다.

그래서 AWS에서 운영되는 기본 쿠버네티스 설정은 다음과 같은 구조로 운영이 됩니다. 3대의 마스터 노드, 3대의 ETCD, 3대의 가용영역에 나누어져 있는 EC2 인스턴스들로 구성되어 있습니다.

EKS를 사용하지 않고, 쿠버네티스를 직접 운영하게 되면?

인스턴스 정보/ 인스턴스의 어플리케이션 정보 / 컨테이너의 메타데이터나 정보들을 직접 운영 관리해야합니다.

*만약 마스터 노드에 문제가 생기면?
*
평소 마스터 노드나 Etcd를 백업하고 스냅샷을 찍고 관리하다가 문제 발생 시 정상적인 인스턴스 로 교체하는 작업이 필요하죠.
+ 클러스터 확장시 마스터 노드 확장 또는 스케일 업/아웃의 구조를 직접 만들어야하는 작업들이 있습니다.

반면, EKS 사용자는!

위와 같은 쿠버네티스 환경에서

  • 마스터 노드와 ETCD 노드가 이미 매니지드 되서 그냥 워커노드가 운영되고 있는 내용만 확인!
  • ETCD는 마스터 노드 내에서 클러스터 내 발생하는 모든 데이터를 담는 저장소라고 생각하시면 됩니다.
  • 워커 노드같은 경우, 사용자 계정에 EC2 인스턴스로 생성이 되서 워커노드에 대한 장애는 직접 처리해야함
    • 근데 아마존 EKS 노드 그룹스 라는 기능이 추가되면서,VM 오토스케일업 같은 기능은 제공이 된다고 합니다.
    • 그러면 클러스터 오토 스케일러를 설치해주지 않아도 되는가?
      👉 현재 인스턴스 자체는 자동으로 스케일 아웃이 되는데, 내부적으로 클러스터 이중화가 동작이 되지 않는다고 합니다. 그래서 클러스터 오토스케일러 역시 세팅해주어야 한다고 합니다...

EKS 운영방식

클러스터 생성 시, 하나의 단위 엔드포인트 즉, 마스터 엔드포인트가 생성됩니다.

마스터 엔드포인트는 3개의 가용영역이 펼쳐지고, 이 가용영역에 워커 노드들이 분산되어 배포됩니다.
사용자는 Kubectl을 통해 컨테이너들을 운영 및 관리할 수 있습니다. :)

EKS랑 ECS의 차이가 궁금합니다!

ECS란

  • 도커 컨테이너를 기반으로 한 어플리케이션들을 운영하고 스케일링하기 위해 개발된 AWS 서비스입니다.
  • ECS 역시 EKS처럼 스케일러블하고, 고가용성과 보안을 제공하며, ELB나 VPC, IAM과 같은 다른 AWS서비스와도 잘 연동됩니다.

자세히 비교된 내역은 보시는 표를 통해 확인하실 수 있는데,
ECS는 AWS 대쉬보드 기반으로 작업할수 있어서 서비스에 적용하기에 난이도가 좀 쉽지만, EKS는 쿠버네티스에 대한 이해가 있어야 한다는 점으로 인해 난이도가 좀 있다라고 평가되고 있습니다.
또 ECS는 컨테이너들을 Task 단위로 부르고, EKS는 파드라고 부른다는 점을 차이점으로 볼 수 있을 것 같습니다.

보통 이런 클라우드 서비스를 선택할 때 의사결정에 가장 중요하게 작용하는 건 가격이겠죠? 👀

*비용 측면에서는 ECS가 EKS보다 저렴합니다.
*
그 이유는 ECS는 EC2 VM에 대해 추가 가격이 붙지 않고, 사용한 어플리케이션에 대한 AWS 리소스 만큼의 금액만 지불하면 되지만, EKS같은 경우 컨트롤 플레인이 여러 가용 영역에서 실행되는 마스터 노드가 필요하기 때문에 3 카피의 노드에 대해 한달에 75달러가 붙는다고 합니다.

마지막으로..

EKS 생성 실습도 준비했습니다. 실습은 영상과 실습 파일을 확인해주세요!

EKS 발표 영상

728x90

'Dev Circles > Ausg' 카테고리의 다른 글

Elasticsearch를 아십니까?  (0) 2024.03.21
[AWGA] CloudFront (CDN)  (0) 2021.04.26
[AWGA] S3 with Signed URL  (0) 2021.04.23
Comments