쿠버네티스 클러스터는 여러개의 노드로 이루어져 있는것인데, AWS EKS를 이용한다면 Master Node는 AWS 에서 제공 및 관리해주므로 Worker node들만 구성해 주면 된다.
이때, AWS에서는 노드의 유형을 세가지를 제공한다. 여기서는 EKS 관리형 노드그룹(Managed Node group)을 사용한다. 관리형 노드그룹은 나머지 두개의 노드유형인 자체관리형 노드그룹과 AWS Fargate 의 중간 기능(?)의 유형이다. 관리형 노드 그룹은 클러스터의 노드(Amazon EC2 인스턴스) 프로비저닝 및 수명 주기 관리를 자동화하여 자체관리형 노드그룹보다 관리가 간편하다. AWS Fargate는 직접 최적화 및 설정을 할 필요 없이 AWS에서 완전히 관리해 주는 서비스이나, 다른 노드유형보다 제약이 많다. 자세한 설명은 공식 홈페이지를 참고하면 된다.
https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/eks-compute.html
관리형 노드그룹은 eksctl 또는 AWS Management Console을 사용하여 생성할 수 있다. 여기서는 eksctl을 사용해서 생성 할 것이므로, eksctl을 먼저 설치한다.
#eksctl 설치확인
$ eksctl version
#eksctl 최신버전 다운로드 및 압축해제
$ curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
#바이너리 파일 이동
$ sudo mv /tmp/eksctl /usr/local/bin
#설치 확인
$ eksctl version
0.107.0
eksctl 설치가 끝났다면, 이제 노드그룹을 생성해 주면 된다. 노드그룹을 생성하기 위해서 여기서는 시작템플릿( launch template)을 작서해서 사용한다. 시작 템플릿 없이 명령어로 간편하게 설정해서 생성 할 수도 있다.
시작 템플릿에서는 이전에 만들었던 VPC(EKS Cluster 배포를 위한 VPC 구성 참고)의 정보를 작성해주어 해당 VPC에 클러스터가 구성되도록 한다. 만약 미리 만들어둔 VPC가 없다면, 리전만 지정해주어도 자동으로 VPC를 생성한다. 커스터마이징이 필요하지 않은 경우, 자동생성되도록 해도 될 듯 하다.
VPC 정보를 모두 입력 했으면, 노드그룹을 정의해 주면 된다. 여기서는 프라이빗 서브넷에 위치하는 노드그룹 한개만 생성한다. 추후에 필요한 경우 추가할 수 있다.
중요한 부분은 노드그룹에 구성되는 노드의 갯수의 범위를 설정하는 것이다. 노드는 오토스케일링으로 관리되지만 여기에 설정된 값의 범위 내에서 늘어나고 축소된다.
아래와 같이 시작 템플릿을 작성해서 eksctl 명령어로 노드그룹을 생성 해 주면 된다.
eksctl create cluster \
--config-file=~/demo/config/clusterConfig.yml
시작 템플릿 예시:
---
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: demo-EKSCluster
region: us-east-2
version: "1.22"
vpc:
id: vpc-xxxxxxxxxxx
subnets:
public:
PublicSubnet01:
az: us-east-2a
id: subnet-xxxxxxxxxxx
PublicSubnet02:
az: us-east-2b
id: subnet-xxxxxxxxxxx
private:
PrivateSubnet01:
az: us-east-2a
id: subnet-xxxxxxxxxxx
PrivateSubnet02:
az: us-east-2b
id: subnet-xxxxxxxxxxx
managedNodeGroups:
- name: managed-ng-private
instanceType: t3.small
subnets:
- !Ref PrivateSubnet01
- !Ref PrivateSubnet02
privateNetworking: true
#노드 갯수 범위 설정
desiredCapacity: 2
minSize: 1
maxSize: 9
#인스턴스 설정
volumeSize: 50
volumeType: gp3
amiFamily: AmazonLinux2
labels:
nodegroup-type: "managed-private-workloads"
#EC2인스턴스에 연결할 키페어 지정
ssh:
publicKeyPath: "~/demo-EKSCluster/demoEksCluster.pub"
tags: {nodegroup-role: private-ng}
iam:
attachPolicyARNs:
withAddonPolicies:
autoScaler: true
ebs: true
efs: true
참고:
https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/create-managed-node-group.html
'Amazon AWS > EKS' 카테고리의 다른 글
AWS EKS에서 CA(Cluster Autoscaler) 구성하기 (0) | 2022.11.13 |
---|---|
Configmap, Secret 사용하기 (0) | 2022.10.16 |
Ingress 사용을 위한 AWS Loadbalancer Controller 설치 (0) | 2022.09.04 |
EKS Cluster 배포를 위한 VPC 구성 (0) | 2022.08.17 |
EKS 클러스터의 Node group 설정 수정하기 (0) | 2022.07.24 |