티스토리 뷰

Cloud/AWS

[AWS EC2] EKS 시작하기(2): eksctl CLI

나미의 로그포스 2023. 6. 6. 17:01

EKS 설치 및 시작하기

 

EKS는 CLI와 콘솔에서 모두 설치 가능하며, 클러스터를 구성하는 방법은 크게 다음의 3가지가 있습니다.

 

📌 EKS 클러스터 구성 방법 3가지
       1. eksctl CLI를 이용해 root 권한으로 yaml 파일 생성 및 실행
       2. 콘솔을 통해 클러스터 구성 ← 사전에 role 생성 필요
       3. 일반 사용자 권한으로 사용자 키를 이용해 인증 후 스크립트 실행 
            → 버전 변경 후 불안정한 방식, 거의 사용 X

 

이 글에서는 우선 첫 번째 방법인 CLI를 사용해 EKS를 설치하고 클러스터를 구성해 보겠습니다.

 

eksctl CLI 이용

 

1) k8s-managed-server 인스턴스 생성

 

우선 클러스터 관리 용도로 사용할 인스턴스를 하나 생성합니다.

 

서버 on/off 때 마다 주소가 바뀌지 않도록 EIP를 할당해 고정

 

 

2) AWS CLI 설치

 

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

 

aws cli 설치

 

 

3) 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

 

eksctl 설치 (eksctl: EKS 운영 툴)

 

 

4) kubectl 설치

 

curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.21.2/2021-07-05/bin/linux/amd64/kubectl
chmod +x ./kubectl
mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$PATH:$HOME/bin
echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc
kubectl version --short --client

 

kubectl 설치 (kubectl: k8s 운영 툴)

 

 

5) IAM 사용자 생성

 

aws configure에 로그인할 사용자를 생성합니다.

 

root 계정으로 로그인 후 IAM 사용자(eks-manager-user) 생성

 

AdministratorAccess 권한 추가

 

 

📌 AdministratorAccess = 모든 권한

인스턴스 생성과 삭제, 서비스 실행과 종료, 사용자 생성/수정/삭제 등 모든 작업이 가능한 권한으로 신중히 사용해야 하는 권한입니다.

특히 사용자의 권한을 통제할 수 있는 IAM 권한까지 포함하기 때문에 신중히 사용해야 하지만, 그렇기 때문에 역설적이게도 모든 실습에 가장 많이 사용되는 권한이기도 합니다(!)

 

 

보안 자격 증명 - 액세스 키 만들기

 

Access Key 만들고 .csv 파일을 저장해 확인

 

 

6) aws configure 계정 등록

 

aws configure

 

 

7) cluster.yaml 파일 생성 및 실행

 

vi cluster.yaml

eksctl create cluster -f cluster.yaml
# yaml 파일 실행 (약 20분 정도 소요)

eksctl delete cluster -f cluster.yaml
# 삭제

 

apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
  name: cluster-in-existing-vpc
  region:  ap-northeast-2
vpc:
  subnets:
    private:
      ap-northeast-2c: { id: subnet-03xxxxxxxxxxxxxxx }
      ap-northeast-2a: { id: subnet-0cxxxxxxxxxxxxxxx }

nodeGroups:
  - name: ng-1-workers
    labels: { role: workers }
    instanceType: t2.small
    desiredCapacity: 3
    privateNetworking: true
  - name: ng-2-builders
    labels: { role: builders }
    instanceType: t2.small
    desiredCapacity: 3
    privateNetworking: true
    iam:
      withAddonPolicies:
        imageBuilder: true

 

*** 환경에 맞도록 subnet 수정

*** 노드그룹 ng-1 3개 + ng-2 3개 = 총 6개의 인스턴스를 기본적으로 생성

*** privateNetworking : 보안을 위해 private subnet에 만들어지도록 사용하는 옵션

 

 

8) 설치 확인

 

Cloud Formation 에서 설치 확인 가능

 

nodes 생성

 

EKS 에서 "생성 중" 확인 가능

 

yaml 파일에 의해 생성 및 실행되는 인스턴스

 

kubectl get nodes -o wide 생성된 node 확인

 

+) 클러스터 구성 방법 비교: CLI vs 콘솔

 

CLI로 생성한 노드와 콘솔로 생성한 노드 비교

 

CLI를 통해서 만들면 Worker-node의 이름이 직관적으로 설정되지만, 콘솔에서 생성한 경우 이름이 설정되지 않습니다.

따라서 현업에서는 명시적 구별이 쉬운 CLI로 yaml 파일을 통해 클러스터를 구성 하고 노드를 생성하는 경우가 많습니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함