반응형
Intro
- 오늘은 EKS NodeGroup생성 전략 3가지를 알려 드리고
- AWS console에서 생성한 예시를 보여드리도록 하겠습니다.
EKS Node Group생성 전략 기준
- Managed Nodegroup : 일반적인 NodeGroup생성 방법
- Managed NodeGroup with Launch Template : WorkerNode Instance를 LaunchTemplate으로 관리하는 방법
- Managed AMI : WorkerNode Instance의 AMI를 AWS에서 관리해주는 방법
- Custom AMI : WorkerNode Instance의 AMI를 사용자가 직접 관리하는 방법 (이 방법은 곧 LaunchTemplate을 사용하겠다는 것임)
EKS의 Node Group생성 전략 3가지
- 전략을 결정하여 구축하게되면 다른 전략으로의 수정이 불가능 하므로 Node Group을 새로 생성해야합니다
- 1,2,3번 전략 모두 eksctl에서 지원이 가능하므로 쉽게 구축이 가능합니다.
- eksctl을 사용하여 3가지 전략으로 구축하는 방법 참고 URL
- Managed NodeGroup + Managed AMI : https://kim-dragon.tistory.com/83
- Managed NodeGroup with Launch Template + Managed AMI : https://kim-dragon.tistory.com/56
- Managed NodeGroup with Launch Template + Custom AMI : https://kim-dragon.tistory.com/84
1번 전략 - Managed NodeGroup + Managed AMI
- 장점
- 3가지 중 구축/관리가 가장 쉽습니다. (AWS console, eksctl, terraform 모두 구축이 쉬움)
- AWS에서 제공하는 AMI버전 업데이트 기능을 사용하여 쿠버네티스 버전 관리가 용이합니다. (Rolling/Force Update)
- 단점
- WorkerNode Instance 수정이 불가능합니다. (AMI image, Instance Type, Storage, SecurityGroup, UserData 등)
- 따라서 WorkerNode Instance에 대해 스펙 변경하고 싶다면 수동으로 NodeGroup 생성/dranning/삭제 작업이 필요합니다.
2번 전략 - Managed NodeGroup with Launch Template + Managed AMI
- 장점
- WorkerNode Instance 수정을 Launch Template의 버전으로 관리가 가능합니다.(AMI image, Instance Type, Storage, SecurityGroup, UserData 등)
- AWS에서 제공하는 NodeGroup Launch Template 버전 업데이트 기능으로 WorkerNode Instance의 수정이 용이합니다.
- AWS에서 제공하는 AMI버전 업데이트 기능을 사용하여 쿠버네티스 버전 관리가 용이합니다. (Rolling/Force Update)
- 단점
- 3가지 중 구축/관리가 비교적 어렵습니다.
- Launch Template의 관리가 필요하므로 NodeGroup생성에 필요한 IAM Role, Security Group등을 생성/관리해야합니다.
3번 전략 - Managed NodeGroup with Launch Template + Custom AMI
- 장점
- WorkerNode Instance 수정을 Launch Template의 버전으로 관리가 가능합니다.(AMI image, Instance Type, Storage, SecurityGroup, UserData 등)
- AWS에서 제공하는 NodeGroup Launch Template 버전 업데이트 기능으로 WorkerNode Instance의 수정이 용이합니다.
- Custom AMI를 사용할 수 있으므로 OS보안 조치 또는 각종 Agent를 미리 설치하여 관리 할 수 있습니다.
- 단점
- 3가지 중 구축/관리가 가장 어렵습니다.
- Launch Template의 관리가 필요하므로 NodeGroup생성에 필요한 IAM Role, Security Group등을 생성/관리해야합니다.
- Kubnernetes버전에 맞추어 지속적인 cumtom AMI의 업데이트가 필요합니다.
[생성 예시] 1번 전략 - Managed NodeGroup + Managed AMI
- AWS Managed Console - Services - EKS - Cluster - Configuration - Compute - Add node Group
- 아래 그림에서 Name, IAM Role을 알맞게 선택하고, Launch Template을 선택하지 않음
- Launch Template는 Node instance생성에 대한 정보들을 담고 있습니다. (AMI Image/Instance Type/Storage/Network 등)
- LT를 선택하지 않으면 아래와 같이 다음 step2와 step3 에서 AMI type/Instance types/Disk size/Min/Max/Desire/Subnets/SSH Kepair 를 입력하여 Nodegroup을 생성할 수 있습니다.
- Nodegroup이 생성되면, 아래 이미지와 같이 자동으로 Autoscaling Group이 "eks-난수"로 생성이 되고 초기 생성에 필요한 Launch Template이 자동으로 생성이 됩니다.
- AMI release version항목의 UpdateNow 버튼을 통해서 kubernetes버전을 관리할 수 있습니다
[생성 예시] 2번 전략 - Managed NodeGroup with Launch Template + Managed AMI
1) LaunchTemplate 생성
- AWS Managed Console - Services - EC2 - Launch Template 을 선택
1) Launch template name를 알맞게 입력
2) AMI이미지는 선택하지 않음
3) Instance Type/Keypair/Storage/SecurityGroup정보 입력 ( Storage의 Device 정보는 /dev/xvda 으로 입력 )
4) Advanced details - UserData 에 아래 정보 입력
MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="
--==MYBOUNDARY==
Content-Type: text/x-shellscript; charset="us-ascii"
#!/bin/bash
echo "Running custom user data script"
--==MYBOUNDARY==--\
2) NodeGroup 생성
- AWS Managed Console - Services - EKS - Cluster - Configuration - Compute - Add node Group
- 아래 그림에서 Name, IAM Role을 알맞게 선택하고, 위에서 생성한 Launch Template을 선택
- step1,step2,step3 에서 Name/IAM Role/NodeGroup Scaling/Networking 정보를 입력하여 생성완료
- 아래 이미지에서 test-lt-managed-ami가 3번 전략 방식으로 생성된 NodeGroup입니다.
- AMI release version항목의 UpdateNow 버튼을 통해서 kubernetes 버전을 관리할 수 있습니다.
- Launch template의 Change version버튼을 통해 LT의 버전 업데이트가 가능합니다.
[생성 예시] 3번 전략 - Managed NodeGroup with Launch Template + Custom AMI
- 1) EKS최적화 AMI이미지 검색
- EKS 최적화된 AMI이미지의 ID값을 아래 URL에서 검색합니다.
https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html
- 2) LaunchTemplate 생성
- AWS Managed Console - Services - EC2 - Launch Template 을 선택
- Launch template name를 알맞게 입력
- 위에서 찾은 AMI이미지를 입력
- Instance Type/Keypair/SecurityGroup정보 입력 (Storage의 Device 정보는 /dev/xvda로 자동입력됨 )
- Advanced details - UserData 에 아래 정보 입력
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="
--==MYBOUNDARY==
Content-Type: text/x-shellscript; charset="us-ascii"
#!/bin/bash
/etc/eks/bootstrap.sh <MY_EKS_NAME> --kubelet-extra-args '--node-labels=eks.amazonaws.com/nodegroup=<MY_NODE_GROUP_NAME>,eks.amazonaws.com/nodegroup-image=<MY_CUSTOM_IMAGE>'
--==MYBOUNDARY==--\
3) NodeGroup 생성
- AWS Managed Console - Services - EKS - Cluster - Configuration - Compute - Add node Group
- 아래 이미지에서 Name, IAM Role을 알맞게 선택하고, 위에서 생성한 Launch Template을 선택
- step1,step2,step3 에서 Name/IAM Role/NodeGroup Scaling/Networking 정보를 입력하여 생성완료
- 아래 이미지의 test-lt-custom-ami가 4번전략으로 생성된 NodeGroup입니다.
- AMI release version항목의 UpdateNow 버튼이 없으며 대신에 AMI ID값이 표기됩니다.
- Launch template의 Change version버튼을 통해 LT의 버전 업데이트가 가능합니다.
반응형
'IT > AWS' 카테고리의 다른 글
[AWS]EKS Securitygroup(보안그룹) 파헤치기 (5) | 2021.06.09 |
---|---|
[AWS] eksctl을 이용한 EKS 생성 (Managed NodeGroup with Launchtemplate + Managed AMI) (0) | 2021.05.26 |
[AWS]EKS 네트워크 이해하기(CNI Plugin) (6) | 2020.06.26 |
AWS Cloud watch Agent설치및 Custom metric설정(Linux) (0) | 2020.06.03 |
[AWS]EKS란? EKS생성 하기(AWS Console, AWS CLI사용) (0) | 2020.01.19 |