Cloud

Amazon EKS Tutorial - Part.3

Operation CWAL 2021. 3. 16. 22:36

EKS 클러스터 확장

이전 시간에 t2.small 타입의 인스턴스 3개로 구성된 nodegroup 1개를 갖는 EKS 클러스터를 구성하였다. 계속해서 이번 시간엔 기존 클러스터를 확장하는 방법에 대해 알아보고자 한다.

 

Amazon EKS Tutorial - Part.2

EKS 클러스터 생성 지난 시간에 이어 eksctl을 사용하여 AWS에 EKS 클러스터를 생성하는 과정에 대해 설명한다. Amazon EKS Tutorial - Part.1 Kubernetes on AWS AWS에서 Kubernetes 클러스터를 구축 및 운영하는..

cwal.tistory.com

Node 갯수 변경

이전 시간에 생성한 Cluster와 소속 nodegroup의 상태이다. 클러스터가 정상적으로 생성되었으며, nodegroup은 'ng-1' 단 1개로, 3개의 Node가 실행중임을 알 수 있다.

 

eksctl을 사용하여 기존 nodegroup의 인스턴스 갯수를 늘리고, 새로운 nodegroup을 추가할 수 있다. 아래 명령어를 사용하여 nodegroup 'ng-1'의 node 갯수를 3에서 5로 변경해보자.

$ eksctl scale nodegroup --cluster=eks-tutorial --nodes=5 --name=ng-1

별 문제없이 동작할 것이라 예상했지만 안타깝게도 실패했다. 에러 메시지를 확인하니 현재 nodes-max 값 보다 많이 생성할 수 없다고 한다. 이번엔 nodes-max 값을 5로 변경하는 옵션을 추가하여 다시 실행해보았다.

$ eksctl scale nodegroup --cluster=eks-tutorial --nodes=5 --nodes-max 5 --name=ng-1

 

'kubectl get nodes' 명령어를 사용하여 Worker node 2개가 실제로 추가되었는지 확인해보았다. 너무 빨리 확인한 탓에 아직 NotReady 상태이지만 5개로 늘어난 것을 알 수 있다.

nodegroup 추가 - On Demand + Spot Instance

이번엔 EKS 클러스터에 새로운 nodegroup 'ng-mixed'를 추가해보자. 기존 YAML 파일을 아래와 같이 수정한다.

apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: eks-tutorial
  region: ap-northeast-2

nodeGroups:
  - name: ng-1
    instanceType: t2.small
    desiredCapacity: 3
    ssh:
      publicKeyName: eks-access
  - name: ng-mixed
    minSize: 3
    maxSize: 5
    instancesDistribution:
      maxPrice: 0.2
      instanceTypes: ["t2.small", "t3.small"]
      onDemandBaseCapacity: 0
      onDemandPercentageAboveBaseCapacity: 50
    ssh: 
      publicKeyName: eks-access

'ng-mixed'의 spec을 보니 'ng-1'에서 선언한 내용과는 상당히 다르다. 우선 desiredCapacity 대신 min/max를 지정하여 Node를 최소 3개 이상, 최대 5개 이하로 제한하였다. 그리고 On-Demand Instance만 사용하는 대신, Spot Instance를 5:5 비율로 구성하여 Worker node를 구성하고자 한다. 이 때, Spot Instance는 0.2 USD를 넘지않는 t2.small, t3.small 타입 중에서 선정된다.

이제 위에서 정의한 nodegroup을 추가하기 위해 아래 명령어를 사용한다.

$ eksctl create nodegroup --config-file=eks-tutorial-cluster.yaml --include='ng-mixed'

CloudFormation에 새로운 Stack을 생성해야 하기때문에, 생각보다 긴 시간(~5분)이 소요된다. 이 작업은 최소 3개 이상의 node가 ready 상태일 때, 완료된다.

AWS 콘솔에서 CloudFormation을 확인해보니, 새로운 nodegroup 'ng-mixed'가 생성된 것으로 나온다.

이번엔 EC2 대시보드에서 인스턴스의 상태를 체크해보자.

ng-mixed의 인스턴스 최소 갯수를 3으로 설정하였으므로, 해당 nodegroup에 정확히 3개 node가 추가되었다. k8s의 Worker Node도 ng-1, ng-mixed를 모두 합쳐 총 8개로 구성된 상태이다.

 

nodegroup 삭제

nodegroup을 어떻게 추가하는지 알았기 때문에, 삭제하는 방법도 배워볼 시간이다. 아래 명령어를 사용하여 'ng-mixed' nodegroup을 제거할 수 있다. 생성에 비해 삭제 작업은 오래 걸리지 않으며 몇초안에 완료된다.

$ eksctl delete nodegroup --config-file=eks-tutorial-cluster.yaml --include='ng-mixed' --approve

 

 

 

 

'Cloud' 카테고리의 다른 글

Amazon EKS Tutorial - Part.5  (0) 2021.03.20
Amazon EKS Tutorial - Part.4  (0) 2021.03.17
Amazon EKS Tutorial - Part.2  (1) 2021.03.15
Amazon EKS Tutorial - Part.1  (0) 2021.03.13
하이퍼바이저(Hypervisor)  (0) 2021.02.06