스터디/AEWS

[AEWS] 1주차 EKS 데이터 플레인 다양하게 구성하기 (Spot, Fargate, Custom AMI 등)

안녕유지 2025. 2. 9. 04:40
Cloudnet AWES 1주차 스터디를 진행하며 정리한 글입니다.

 

0주차 포스팅에서 EKS의 데이터 플레인을 관리하는 방법을 크게 3가지로 소개했습니다.

 

1. 노드를 직접 관리하는 방법

2. Managed 노드로 관리하는 방법

3. Fargate를 사용하는 방법이

 

오늘은 데이터 플레인 워커 노드들을 다양한 형태로 구성해보겠습니다.

 

EKS Cluster Spot Instance로 배포하기 (도전과제 3)

AWS Spot Instance

AWS가 남는 EC2 가용 용량에서 제공하는 서비스입니다. On-Demand는 사용자가 원할 때 리소스를 사용 및 반납할 수 있지만, Spot은 AWS가 미사용 EC2 용량을 활용하는 것이기 때문에 AWS 가용 용량이 부족한 경우 인스턴스가 회수됩니다.

하지만 On-Demand 대비 가격이 최대 90% 할인되기 때문에, 빅 데이터, 컨테이너식 워크로드, CI/CD, 웹 서버, 고성능 컴퓨팅(HPC), 테스트 및 개발 워크로드 등 다양한 상태 비저장, 내결함성 또는 유연한 애플리케이션에 사용된다고 합니다.

 

Spot 인스턴스로 배포하는 방식은 직접/노드 그룹으로 관리하되, 가격 기반으로 Spot 인스턴스를 사용하는 방법 입니다.

 

https://github.com/eksctl-io/eksctl/blob/main/examples/08-spot-instances.yaml

 

eksctl/examples/08-spot-instances.yaml at main · eksctl-io/eksctl

The official CLI for Amazon EKS. Contribute to eksctl-io/eksctl development by creating an account on GitHub.

github.com

 

 

apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
    name: cluster-8
    region: eu-central-1

nodeGroups:
    - name: ng-1
      minSize: 2
      maxSize: 5
      instancesDistribution:
        maxPrice: 0.017
        instanceTypes: ["t3.small", "t3.medium"] # At least one instance type should be specified
        onDemandBaseCapacity: 0
        onDemandPercentageAboveBaseCapacity: 50
        spotInstancePools: 2

 

작성중..

 

EKS Cluster Graviton(ARM)로 배포하기 (도전과제 4)

AWS Graviton 프로세서

EC2에서 실행되는 클라우드에 최고의 가격 대비 성능을 제공하도록 설계된 프로세서입니다. 

 

Graviton 프로세서를 사용하는 인스턴스로 배포하는 방식은 직접/노드 그룹/Fargate으로 관리하되, 사용하는 워커 노드의 프로세서만 Gravition 인스턴스를 사용하는 방법입니다.

 

 

 

EKS Cluster Fargate(서버리스)로 배포하기 (도전과제 5)

AWS Fargate

ECS 및 EKS의 연동되는 컨테이너용 서버리스 컴퓨팅 엔진입니다. Fargate를 사용하면 서버를 프로비저닝하고 관리할 필요가 없기 때문에 애플리케이션 구축에 쉽게 집중할 수 있고, 애플리케이션당 리소스를 지정하여 비용을 지불할 수 있으며, 설계에 따른 애플리케이션 격리를 통해 보안을 개선할 수 있습니다.

 

Fargate로 배포하는 방식은 노드를 관리하는 것이 아닌 pod에 정의된 리소스 설정에 따라 AWS에서 알아서 인스턴스 배정하여 사용하는 방법입니다.

 

https://aws.amazon.com/ko/fargate/faqs/

 

서버리스 컴퓨팅 엔진 - AWS Fargate FAQ - Amazon Web Services

AWS Fargate는 웹 애플리케이션, API, 마이크로서비스 아키텍처, 데이터 처리, 인공 지능 및 기계 학습 애플리케이션과 같은 일반적인 컨테이너 사용 사례에 대한 지원을 포함하여 광범위한 워크로

aws.amazon.com

 

 An example of ClusterConfig object creating Fargate profiles.
---
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: cluster-16
  region: ap-northeast-1

nodeGroups:
  - name: ng-1
    instanceType: m5.large
    desiredCapacity: 1

fargateProfiles:
  - name: fp-default
    selectors:
      # All workloads in the "default" Kubernetes namespace will be
      # scheduled onto Fargate:
      - namespace: default
      # All workloads in the "kube-system" Kubernetes namespace will be
      # scheduled onto Fargate:
      - namespace: kube-system
  - name: fp-dev
    selectors:
      # All workloads in the "dev" Kubernetes namespace matching the following
      # label selectors will be scheduled onto Fargate:
      - namespace: dev
        labels:
          env: dev
          checks: passed
    tags:
      env: dev
      name: fp-dev