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 에 있는 모든 자원을 지운다.





댓글

이 블로그의 인기 게시물

About JVM Warm up

About idempotent

About Kafka Basic

About ZGC

sneak peek jitpack

Spring Boot Actuator readiness, liveness probes on k8s

About Websocket minimize data size and data transfer cost on cloud

About G1 GC

대학생 코딩 과제 대행 java, python, oracle 네 번째