전공영역 공부 기록

EKS 설치(aws에 쿠버네티스 설치)

악분 2021. 1. 2. 07:08
반응형

▶ 영상: youtu.be/7saoGfHY4zQ

 

1. EKS란?

AWS 쿠버네티스 서비스로서 마스터(control plane) 노드를 직접 관리하고 기존 AWS리소스(예: IAM, EC2, VPC 등)와 연동하여 쿠버네티스를 관리합니다. 시간당 0.1$달러 요금이 부과되고 무중단 한달 운영하면 78달러가 부과됩니다. EKS이외의 요금은 별도로 계산됩니다.

 

워커노드는 EC2를 사용하고 네트워크는 VPC를 사용합니다. 워커노드는 워커노드 그룹으로 묶어서 eks가 관리합니다.

 

그림1. EKS 아키텍처(참고자료: https://aws.amazon.com/ko/blogs/compute/cost-optimization-and-resilience-eks-with-spot-instances/)

 

2. 설치 준비

eksctl명령어를 사용하기 위해 eksctl설치가 필요합니다. eskctl는 aws cli설치와 설정이 필요합니다. 

kubctl은 eks를 설치하고 쿠버네티스를 제어하는 목적으로 사용합니다.

 

2.1 aws cli설치

공식문서에 aws cli설치 명령어를 소개하고 있습니다.

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

 

2.2 aws configure

aws cli가 명령어를 실행하기 위한 인증정보 설정입니다. 액세스 키 ID와 비밀 액세스 키가 필수로 필요합니다.

 

IAM을 사용해서 eks를 관리하는 유저를 생성하고 해당 엑세스 키를 사용합니다.

그림2 IAM 사용자 추가 페이지

 

사용자 이름을 입력하고 프로그래밍 방식 액세스를 선택합니다. 프로그래밍 방식은 말 그대로 aws cli를 이용한다는 의미입니다.

그림3 사용자 이름과 액세스 유형 선택

 

그림4 사용자 권한 설정

 

태그는 생략합니다.

그림5 사용자 태그

 

사용자가 생성되면 액세스 키 ID와 비밀 액세스 키가 자동으로 생성됩니다. 이후 부터는 비밀 액세스 액세스 키는 확인이 불가하므로 csv다운로드 버튼을 클릭해서 잘 관리합니다.

그림6 사용자 액세스 키ID와 비밀 액세스 키

 

aws configure명령어를 입력하면 aws 인증정보를 설정하는 입력 프롬프트가 화면에 출력됩니다. 만들었던 사용자 액세스 키와 비밀 액세스 키를 차례대로 입력합니다. 리전은 서울에 해당하는 ap-northeast-2를 사용합니다.

$ aws configure
AWS Access Key ID [None]: <AKIAIOSFODNN7EXAMPLE>
AWS Secret Access Key [None]: <wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY>
Default region name [None]: <ap-northeast-2>

 

2.3 kubectl 설치

curl 명령어를 kubectl를 다운로드 받은 후 실행권한을 설정합니다. 그리고 /usr/local/bin으로 옮깁니다.

curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.18.8/2020-09-18/bin/linux/amd64/kubectl
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin

 

kubectl명령어가 실행되면 잘 설치되었습니다.

kubectl version --short --client

 

2.4 eksctl 설치

eksctl를 다운로드 받은 후 압축을 풀고 /usr/local/bin으로 옮깁니다.

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명령어가 잘 실행되면 설치가 성공한 것입니다.

eksctl version

 

2.5 ssh 키 쌍 생성

워커노드에 원격접속하기 위한 ssh키 쌍을 생성합니다. eks는 워커노드를 ec2 인스턴스로 관리됩니다.

ssh-keygen

 

3. eks설치

eksctl 명령어를 사용해서 eks를 설치합니다. 내부적으로 aws cli를 사용하므로 aws configure이 잘 설정되어 있어야 합니다. 

 

아래 명령어는 워커노드를 1개만 실행되고 원격접속시 ssh-keygen이 생성한 공개키를 사용합니다. 워커노드 ec2 타입은 t3.medium을 사용합니다.

eksctl create cluster \
    --name eks-demo \
    --version 1.18 \
    --region ap-northeast-2 \
    --nodegroup-name linux-nodes \
    --nodes 1 \
    --nodes-min 1 \
    --nodes-max 1 \
    --ssh-access \
    --ssh-public-key eks-demo.pub \
    --managed \
    --node-type t3.medium

 

프리티어 ec2타입인 t2.micro를 사용하면 에러가 발생합니다. 현재 서울지역의 워커노드 ec2타입은 프리티어를 미지원합니다.

그림7. t2.micro사용시 오류 메세지

 

eks가 성공적으로 설치되면 [aws 콘솔 -> eks -> 클러스터]에서 생성된 클러스터가 보입니다. 

그림8. eks설치 성공

 

현재 eks는 중지기능이 없고 실행, 삭제기능만 있습니다.

 

참고자료

[1] eskctl 설치 공식문서: https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/getting-started-eksctl.html

[2] ec2 instance 요금 공식문서: https://aws.amazon.com/ko/ec2/spot/pricing/

[3] eks spot instance 공식문서: https://aws.amazon.com/ko/blogs/compute/cost-optimization-and-resilience-eks-with-spot-instances/

반응형