EKS Cluster가 생성되었다면 이제 Pod 등이 위치할 Worker Node를 생성할 차례입니다. EKS에서는 Node Group을 사용하여 Worker Node를 유연하게 관리할 수 있습니다. 그럼 Node Group을 통해 Worker Node를 생성해봅시다.
VPC와 EKS Cluster를 생성합니다.
https://velog.io/@arcokim/AWS-EKS-Cluster
먼저, Launch Template을 생성하여 사전적으로 EC2 설정을 진행하겠습니다.
Create launch template 을 눌러 Launch Template 생성을 시작합니다.
Launch Template의 이름을 설정합니다. 저는 각종 Addon이 위치할 Node Group을 생성할 것이기 때문에 Demo-addon-lt 라고 설정하겠습니다.
Instance type을 설정합니다. 저는 t4g.large 를 사용하겠습니다. 참고로, t4g 인스턴스는 Arm 기반 AWS Graviton2 프로세서로 구동됩니다.
Storage를 설정합니다. 저는 Device name을 /dev/xvda , Size를 20 (GiB)로 설정하겠습니다.
EC2 인스턴스의 태그를 설정합니다. 저는 Name 태그 (인스턴스의 이름) 를 Addon Node 로 설정하겠습니다.
나머지 설정은 건들이지 않고, Create launch template 을 눌러 Launch Template을 생성합니다.
EKS Console의 Compute 메뉴로 가서, Add node group 을 누릅니다.
Node group의 이름을 정합니다. 또한, EKS Cluster와 마찬가지로 Node Group도 IAM Role이 필요합니다.
IAM Role 생성에서 Use case를 EC2 로 선택합니다.
Policy는 총 3개를 선택합니다. AmazonEC2ContainerRegistryReadOnly, AmazonEKSWorkerNodePolicy, AmazonEKS_CNI_Policy 입니다.
Role name을 정하고 Create role 을 눌러 IAM Role을 생성합니다. Node IAM role 로 생성한 IAM Role을 선택합니다.
밑으로 내려가서 Launch template 옵션을 켜고, 생성한 Launch template을 선택합니다.
Node 구분을 위해 label을 부여하겠습니다. Key는 node 로 하고, Value는 addon 으로 하겠습니다. 이제 Next 를 누릅니다.
AMI로는 Bottlerocket Arm 을 선택하겠습니다. Bottlerocket 운영체제는 AWS에서 컨테이너 실행을 위해 특별히 구축된 Linux 기반 오픈 소스 운영 체제로 Worker Node로서 Amazon Linux보다 빠르고 성능이 좋습니다. Capacity type은 Spot을 이용하지 않고, On-Demand 를 사용하겠습니다.
Desired(원하는) 사이즈와 Minimum(최소) 사이즈는 고가용성을 위해 2 로 설정하겠습니다. Maximum(최대) 사이즈는 1 늘린 3으로 설정하겠습니다. 최대 사이즈는 딱히 의미가 없습니다. 이제 Next 를 누릅니다.
서브넷은 private subnet을 선택하고, Next 를 눌러 진행합니다.
Review가 끝나면 Create 를 눌러 Node Group 생성을 진행하면 됩니다.
빠르게 Node 생성이 완료된 것을 확인할 수 있습니다.
Kubernetes taints를 적용하거나 Instance type을 바꿔서 App Node를 생성해보는 것도 해보면 좋을 것 같습니다. 오늘의 글은 여기까지입니다. 감사합니다!