EKS - eksctl 로 클러스터 생성 및 삭제

목차

참고

eksctl 설치

  • MAC OS
# mac os
brew tap weaveworks/tap
brew install weaveworks/tap/eksctl
  • Linux
# eksctl 명령어 설치
curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
# 전역적으로 사용할 수 있게 bin 파일로 이동
sudo mv /tmp/eksctl /usr/local/bin

명령어를 통한 Cluster 설치

eksctl 명령어를 이용해 aws 에 생성하고자 하는 Kubernetes 클러스터를 생성해줄 수 있습니다. EKS 클러스터 생성시 NodeGroup 과 Node 들이 한번에 설치된 모습을 확인할 수 있다.

  • cluster-name: 새로운 EKS 클러스터의 이름을 지정합니다.
  • aws-region: 클러스터가 생성될 AWS 리전을 지정합니다.
    • ap-northeast-2 (서울)
  • nodegroup-name: 노드 그룹의 이름을 지정합니다.
  • instance-type: 노드 인스턴스 유형을 지정합니다.
    • t3.xlarge, m5.large
  • number-of-nodes: 생성할 노드의 수를 지정합니다.
eksctl create cluster \
--name <cluster-name> \
--version <Kubernetes 버전>
--region <aws-region> \
--nodegroup-name <nodegroup-name> \
--node-type <instance-type> \
--nodes <number-of-nodes>

클러스터 생성 로그

생성된 클러스터 확인

NodeGroup 및 Node 확인

Cluster 만 우선 생성

Kubernetes 클러스터를 우선 생성하고 이후에 NodeGroup 을 추가하고 싶을 때 create 명령어 실행시 --without-nodegroup 옵션을 주면 EKS Cluster 만 생성된 모습을 볼 수 있다.

eksctl create cluster \
--name <cluster-name> \
--version <Kubernetes 버전>
--region <aws-region> \
--without-nodegroup

클러스터 생성 로그

NodeGroup 및 Node 확인

ClusterConfig 파일을 이용한 설치

ClusterConfig 를 yaml 파일로 생성해줍니다.

---
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
name: eks-demo # 생성할 EKS 클러스터명
region: ${AWS_REGION} # 클러스터를 생성할 리전
version: "1.23"

vpc:
cidr: "10.0.0.0/16" # 클러스터에서 사용할 VPC의 CIDR
nat:
gateway: HighlyAvailable

managedNodeGroups:
- name: node-group # 클러스터의 노드 그룹명
instanceType: m5.large # 클러스터 워커 노드의 인스턴스 타입
desiredCapacity: 3 # 클러스터 워커 노드의 갯수
volumeSize: 20 # 클러스터 워커 노드의 EBS 용량 (단위: GiB)
privateNetworking: true
ssh:
enableSsm: true
iam:
withAddonPolicies:
imageBuilder: true # Amazon ECR에 대한 권한 추가
albIngress: true # albIngress에 대한 권한 추가
cloudWatch: true # cloudWatch에 대한 권한 추가
autoScaler: true # auto scaling에 대한 권한 추가
ebs: true # EBS CSI Driver에 대한 권한 추가

cloudWatch:
clusterLogging:
enableTypes: ["*"]

iam:
withOIDC: true

생성된 ClusterConfig 파일을 eksctl 명령어를 이용해 cluster 를 생성해주도록 한다.

eksctl create cluster -f eks-demo-cluster.yaml

클러스터 생성 로그

ClusterConfig 를 이용해 생성된 NodeGroup 과 Node 들

3개의 Node 를 갖고 있는 클러스터 아키텍처

Kube Config 에 새로운 클러스터 추가

aws eks update-kubeconfig \
--region [aws-region]\
--name [eks 클러스터 이름] \
--role-arn [AWS Role] \
--profile [AWS Profile]

Eksctl Cluster 삭제

eksctl 명령어를 이용해 삭제하고 싶은 cluster 를 삭제할 수 있습니다.

eksctl delete cluster --name <cluster name>

삭제 로그

3개 노드로

eksctl create cluster \
--name user10-eks3
--version 1.25 \
--node-type t3.medium
--nodes 3 \
--nodes-min 1 \
--node-volume-type gp3 \
--nodes-max 3 \
--asg-access \
--full-ecr-access
--spot \
--with-oidc
--managed \
kubectl get nodes
NAME STATUS ROLES AGE VERSION
ip-192-168-16-29.ap-northeast-1.compute.internal Ready <none> 79m v1.22.17-eks-0a21954
ip-192-168-46-125.ap-northeast-1.compute.internal Ready <none> 79m v1.22.17-eks-0a21954
ip-192-168-77-21.ap-northeast-1.compute.internal Ready <none> 79m v1.22.17-eks-0a21954
Share