본문 바로가기
Cloud/EKS

EKS 클러스터 생성부터 서비스 배포까지 3. eksctl을 사용하여 EKS실행하기, 노드그룹 설정하기

by J's Note 2023. 11. 22.

목차

EKS 클러스터 생성부터 서비스 배포까지 1. 쿠버네티스, EKS 기초

EKS 클러스터 생성부터 서비스 배포까지 2. EKS 환경 세팅하기

EKS 클러스터 생성부터 서비스 배포까지 3. eksctl을 사용하여 EKS실행하기, 노드그룹 설정하기

EKS 클러스터 생성부터 서비스 배포까지 4. K8s 대시보드 배포

EKS 클러스터 생성부터 서비스 배포까지 5. 마이크로서비스 배포

EKS 클러스터 생성부터 서비스 배포까지 6. HELM

eksctl을 사용하여 EKS실행하기

eksctl은 ec2를 위한 aws의 관리쿠버네티스 서비스인 eks에 클러스터를 만들고 관리하기 위한 심플한 CLI 도구입니다. 이 eksctl을 사용하여 EKS클러스터를 생성, 실행 및 테스트를 해보도록 하겠습니다.

eksctl 설치

eks 바이너리를 다운로드하고 설치합니다.

ARCH=amd64
PLATFORM=$(uname -s)_$ARCH
curl -sLO "<https://github.com/eksctl-io/eksctl/releases/latest/download/eksctl_$PLATFORM.tar.gz>"

# (Optional) Verify checksum
curl -sL "<https://github.com/eksctl-io/eksctl/releases/latest/download/eksctl_checksums.txt>" | grep $PLATFORM | sha256sum --check

tar -xzf eksctl_$PLATFORM.tar.gz -C /tmp && rm eksctl_$PLATFORM.tar.gz

sudo mv /tmp/eksctl /usr/local/bin
eksctl version

EKS 클러스터 생성

다음 명령을사용하여 EKS 클러스터를 생성합니다.

eksctl create cluster --name=eksworkshop-eksctl --nodes=3 --region=${AWS_REGION} --managed=false

해당 작업은 약 15분 가량 소요됩니다.

K8s 클러스터 테스트

노드를 확인해보겠습니다.

kubectl get nodes

역할이름을 환경변수로 지정하겠습니다. 이전에 생성한 IAM Role을 지정합니다.

노드그룹 설정하기

노드그룹을 설정하도록 하겠습니다. 관리형 노드그룹에 특정 인스턴스를 지정할 수도 있고, 원하는 스펙을 기입하면 어떤 인스턴스 유형이 노드그룹에 적합한지 리소스를 기준으로 유형목록을 생성하여 인스턴스셀렉터와 통합됩니다.

예를들어, 다음과같이 vCPU는 2개, Memory는 4GiB를 원하는경우 다음과 같이 지정할 수 있습니다.

eksctl create cluster --instance-selector-vcpus=2 --instance-selector-memory=4

vCPU : 2, RAM : 4의 인스턴스 유형은 c5.large, c5a.large, c5ad.large, c5d.large, t2.medium, t3.medium, t3a.medium가 존재하므로, 해당 유형이 자동 선택됩니다.

dry-run 테스트 기능을 사용하여 인스턴스를 검사하고 변경할 수 있습니다.

$ eksctl create cluster --name development --instance-selector-vcpus=2 --instance-selector-memory=4 --dry-run

apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
# ...
managedNodeGroups:
- amiFamily: AmazonLinux2
  instanceSelector:
    memory: "4"
    vCPUs: 2
  instanceTypes:
  - c5.large
  - c5a.large
  - c5ad.large
  - c5d.large
  - t2.medium
  - t3.medium
  - t3a.medium
...
# other config

Config을 생성하여 클러스터 생성시에 파일을 전달하여 그룹을 설정할 수 있습니다.

$ eksctl create cluster -f instance-selector-cluster.yaml

Config 파일은 다음과 같은 형태를 따릅니다.

# instance-selector-cluster.yaml
---
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: cluster
  region: us-west-2

nodeGroups:
- name: ng
  instanceSelector:
    vCPUs: 2
    memory: "2"

# managedNodeGroups:
# - name: mng
#   instanceSelector:
#     vCPUs: 2
#     memory: 2GiB #
#     cpuArchitecture: x86_64 # default value

EKS를 구축할 때 어떤 인스턴스 타입이 적합할까?