mingming

EKS 클러스터 배포하기 (eksctl 명령어) 본문

kubernetes

EKS 클러스터 배포하기 (eksctl 명령어)

mingming_96 2023. 8. 9. 02:33

EKS 클러스터 배포하는 방법엔 여러가지가 있는데 총 세가지를 소개해보려고 합니다 .

 

1. eksctl 명령어를 통한 클러스터 배포

 

2. 클러스터 컨피그 파일 작성후 배포하기 

 

3. 테라폼으로 배포하기 

 

이 글에선 1번 , 2번 방법으로 배포하는 방법을 알아보려고 합니다.

 

 [ EKS ] 

Amazon Elastic Kubernetes Service(Amazon EKS)는 자체 Kubernetes 컨트롤 플레인 또는 노드를 설치, 운영 및 유지 관리할 필요 없이 AWS의 Kubernetes 실행에 사용할 수 있는 관리형 서비스입니다. Kubernetes는 컨테이너화된 애플리케이션의 배포, 확장, 관리를 자동화하기 위한 오픈 소스 시스템입니다.

 

[ 실습환경 ]

OS : Amazon linux

Instance Type : t2.micro

 

[ 사전 준비사항 ]

1. AWS CLI 설치

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
export PATH=/usr/local/bin:$PATH
source ~/.bash_profile

버전 확인

aws --version

2. Kubectl 설치

 

kubectl 설치

sudo curl -o /usr/local/bin/kubectl  \
   https://s3.us-west-2.amazonaws.com/amazon-eks/1.23.13/2022-10-31/bin/linux/amd64/kubectl

실행권한 부여

sudo chmod +x /usr/local/bin/kubectl

버전 확인 

kubectl version --client=true --short=true

 

3. bash-completion 설치하기

sudo yum install -y bash-completion

 

4. eksctl 설치하기

curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp

sudo mv -v /tmp/eksctl /usr/local/bin

버전 확인

eksctl version

 

[ eks cluster 배포 ]

1. eksctl 명령어를 통한 배포

 

클러스터 배포하기

eksctl create cluster --name <cluster_name> --version 1.24 \
	--region ap-northeast-2 \
	--nodegroup-name linux-noded \
	--nodes 2 --nodes-min 1 --nodes-max 4 \
	--ssh-access --ssh-public-key <Key_name> --node-type t3.small --managed

 

eksctl 명령어로 간단하게 클러스터를 배포할 수 있습니다. <cluster_name> 과 <Key_name> 부분에 

실제 사용할 클러스터 이름과 ssh key name을 입력하시면 됩니다.

 

해당 명령어를 입력하면 클라우드 포메이션에 eks cluster 스택이 생성됩니다.

 

클러스터 삭제하기 

eksctl delete cluster --name <cluster_name>

 

 

2. 클러스터 컨피그 파일 작성후 배포하기 

 

클러스터컨피그 파일 생성하기

cat << EOF > eks-demo-cluster.yaml
---
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: eks-demo # 생성할 EKS 클러스터명
  region: ap-northeast-2 # 클러스터를 생성할 리전
  version: "1.23"

vpc:
  cidr: "10.0.0.0/16" # 클러스터에서 사용할 VPC의 CIDR
  nat:
    gateway: HighlyAvailable

managedNodeGroups:
  - name: node-group # 클러스터의 노드 그룹명
    instanceType: t3.small # 클러스터 워커 노드의 인스턴스 타입
    desiredCapacity: 3 # 클러스터 워커 노드의 갯수
    volumeSize: 20  # 클러스터 워커 노드의 EBS 용량 (단위: GiB)
    privateNetworking: true
    ssh:
      enableSsm: true
    iam:
      withAddonPolicies:
        imageBuilder: true # Amazon ECR에 대한 권한 추가
        albIngress: true  # albIngress에 대한 권한 추가
        cloudWatch: true # cloudWatch에 대한 권한 추가
        autoScaler: true # auto scaling에 대한 권한 추가
        ebs: true # EBS CSI Driver에 대한 권한 추가

cloudWatch:
  clusterLogging:
    enableTypes: ["*"]

iam:
  withOIDC: true
EOF

 

생성한 클러스터 컨피그 파일 배포하기 

eksctl create cluster -f eks-demo-cluster.yaml

 

클러스터 삭제하기

eksctl delete -f eks-demo-cluster.yaml

 

클러스터 배포 결과 

생성이 완료되면 kubernetes 객체에 엑세스 할 수 없습니다. 라는 문구가 나오는데 이걸 해결해보도록 하겠습니다.

 

콘솔에 접근할 수있는 credential 추가

kubectl edit configmap aws-auth -n kube-system

mapRoles: 하단에 아래내용 추가

- groups:
   - system:masters
   rolearn: arn:aws:iam::AWS본인계정ID:root
   username: admin

해당 작업을 완료하고 나면 콘솔에서 클러스터 정보를 조회할 수 있습니다.

 

 

이상으로 글을 마치겠습니다. 다음 글은 terraform을 통한 EKS 클러스터 배포에 관한 글일것 같습니다.

해당 내용은 AWS Workshop 내용을 기반으로 작성하였습니다.

 

'kubernetes' 카테고리의 다른 글

Kubernetes 컴포넌트  (0) 2023.08.14
kubernetes 동작원리  (1) 2023.08.13
kubernetes 연습장  (0) 2023.08.13
EKS 클러스터 배포하기 (Terraform)  (0) 2023.08.11
Kubernetes 설치하기 (Ubuntu 20.04)  (0) 2023.08.08