EKS - eksctl setting on my mac book

https://github.com/ndgndg91/eks-practice


eksctl 을 사용하기 위해서 필요한 것은 4가지이다.

https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/getting-started-eksctl.html

1. aws cli 설치

- aws cli 기존에 설치되어 있어도 반드시 버전을 확인해야 한다. eksctl 을 사용하기 위해서는 aws cli 1 버전을 사용하는 경우 1.18.149 이상이여야 하며, aws cli 2 버전의 경우 2.0.52 이상이여야 한다.

기존에

https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/install-cliv2-mac.html#cliv2-mac-install-gui

2. aws cli 를 버전에 맞게 설치했다면, aws configure 를 통해서 올바른 role 을 가진 IAM user 의 access_key, secret_access_key 를 등록해주자.

3. 다음으로 중요한 k8s 클러스터를 제어하기 위한 kubectl 을 설치하자.

homebrew 패키지 매니저를 이용하면 간단하게 설치가 가능하다.

https://kubernetes.io/ko/docs/tasks/tools/install-kubectl/

https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/install-kubectl.html

4. 마지막으로 eksctl 

https://github.com/weaveworks/eksctl


- aws cli version


- aws cli configure 확인

- kubectl version 확인

- eksctl version 확인


eksctl 명령어로 cluster 만들기

eksctl create cluster --name eksctl-test --nodegroup-name ng-default --node-type t3.micro --nodes 2

클러스터 이름은 eksctl-test 이고

노드그룹의 이름은 ng-default 이다. 노드그룹은 unmanaged 로  생성된다.

노드타입은 t3.micro 로 인스턴스 타입이다.

그리고 노드 수는 2로 ec2 instance 가 노드 그룹안에 존재하는 수이다.

노드그룹의 지원은 3가지로 unmanaged, managed, fargate 이다.

unmanaged, managed 는 k8s cluster worker node 들을 ec2 인스턴스로 만들어준다.

unmanaged 와 managed 의 차이점은 말 그대로 aws 에서 자동으로 관리해주느냐 아니면 사용자가 직접 관리해야 되느냐이다.

무엇을 관리하느냐? 

worker node 의 lifecycle 과 provisioning 을 자동화 해준다.

node 생성과 업데이트 삭제를 손쉽게 관리할 수 있다.

또한 EKS 에 최적화된 Amazon linux AMI 2 및 사용자 정의 AMI 를 손쉽게 관리할 수 있다.

auto scaling group 안에서 자동으로 관리된다.

등등 이점이 많다.

특수하게 customizing 해야할 경우 unmanaged node group 을 사용하고, 웬만하면 unmanaged 보다 managed 로 관리하는 것이 이점이 많아 보인다. 


log 에서 확일 할 수 있듯이, 가용영역을 알아서 2a, 2b, 2c 로 관리해주고, 각각 public, private  subnet 을 생성해주었다. 

또한 CloudFormation template 을 이용하여 code 로써 관리해주며, provisioning 해준다.

정상적으로 클러스터 생성이 완료되면, kubectl get nodes 명령어로 ec2 node 2개가 정상적으로 provisioning 된것을 확인할 수 있다.


이번에는 아래와 같이 yaml 파일로 managed node group 을 추가로 생성해보자.



eksctl create nodegroup --config-file=eksctl-create-ng.yaml



ng-default 는 앞서서 생성했고, 추가적으로 ng1-public, ng2-managed 노드 그룹이 각각 생성된 것을 확인할 수 있다.

이제 그만 내 돈 나가는 것을 막기 위해서, cluster 를 삭제하자.
eksctl get cluster 를 통해서 cluster 이름을 가져온다.
eksctl delete cluster --name=eksctl-test 명령어를 통해서 클러스터를 지운다.
아래 로그에서 확인할 수 있듯이, cluster 에 있는 모든 자원을 지운다.





댓글

이 블로그의 인기 게시물

Spring Boot Actuator readiness, liveness probes on k8s

About Kafka Basic

sneak peek jitpack

About idempotent

About G1 GC

About ZGC

About JVM Warm up

I need to know a little JVM

HackerRank Java Between Two Sets

Java - HashMap (feat. LinkedList, Tree.. maybe Later)