[AWS] EKS (Elastic Kubernetes Service)

hugingstar·2026년 4월 1일

AWS

목록 보기
17/18
post-thumbnail

EKS (Elastic Kubernetes Service)

  • AWS에서 제공하는 k8s Service

  • 이전 글에서 만들었던 인스턴스가 있다. 그것을 사용한다.

EKS 설정 시작

k8s 관리도구 - kubectl

# https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/install-kubectl.html

# 파일 내려 받기
curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.34.2/2025-11-13/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 --client

eks 설치/운영 도구 - eksctl

# https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/eksctl.html
curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
mv /tmp/eksctl /usr/local/bin
eksctl version

Role 설정

  • IAM으로 간다. 왼쪽에 보면 역할이라는 것이 있다. 역할 생성을 누른다.

EKS Role 설정

  • EKS 검색해서, EKS-Cluster를 선택한다. 다음 눌러서 권한 추가는 기본으로 놓고 넘어간다.

  • 이름을 설정하고 역할을 생성한다.

  • 아래쪽에 역할이 생겨 있는 것을 확인할 수 있다.

  • 권한 추가를 해줘야하기 때문에 역할로 들어간 후에 "정책 연결"로 설정한다.

  • EKSVPC를 검색해서 선택한다.

EC2 Role 설정

  • EC2를 검색해서 EC2를 설정한다.

추가할 것은 아래와 같다.

  • AmazonEC2ContainerRegistryReadOnly
  • AmazonEKSWorkerNodePolicy
  • AmazonEKS_CNI_Policy
  • AmazonSSMManagedInstanceCore

  • eks-workerNodeRole 을 입력하고 생성한다.

  • 가장 밑에 eks-workerNodeRole이 생성된 것이 보인다.

  • clster.yaml 파일을 작성해야 하는데, VPC, 서브넷, 등의 정보가 필요하다.
  • Region을 보면 ap-southeast-2이다.
# 클러스터 용
mkdir cluster && cd cluster

# 클러스터 yaml 생성
vi cluster.yaml

# 작성한 내용
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: yslee-cluster
  region: ap-northeast-2

vpc:
  id: vpc-087938bd1d3bb5910
  subnets:
    public:
      ap-northeast-2a:
        id: subnet-0d8f8b992c8739fde
      ap-northeast-2c:
        id: subnet-03ca1d569fe5571ba

iam:
  withOIDC: true

managedNodeGroups:
  - name: yslee-nodeGroup
    instanceType: t3.medium
    desiredCapacity: 2
    minSize: 1
    maxSize: 2
    privateNetworking: false
    subnets:
      - subnet-0d8f8b992c8739fde
      - subnet-03ca1d569fe5571ba
    iam:
      withAddonPolicies:
        imageBuilder: true
        autoScaler: true
        ebs: true
    ssh:
      allow: true
      publicKeyName: yslee-02

  • awscli 설치해준다.
  • aws config를 입력한다. Accesskey ID, Secret access key 필요
  • Region 꼭 확인하기.
sudo apt update && sudo apt install unzip -y

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

unzip awscliv2.zip

sudo ./aws/install

# 설치 확인
aws --version

# aws config 설정
aws config

# 지역
ap-southeast-2

# config 설정값 확인
aws sts get-caller-identity
  • 위에서 설치 과정, config 과정이 끝나면 eksctl이 작동 될 것이다.
  • eksctl로 cluster.yaml을 실행시킨다.
eksctl create cluster -f cluster.yaml

  • CloudFormation > 스택으로 넘어간다.

  • 작업진행중인 것이 시각화되어서 확인할 수 있다.

  • 단, PUB-2A, PUB-2C 둘 다 서브넷에 자동할당 IP 설정 되어 있는지 꼭 확인해야한다. 멈출수도 있기 때문이다.
  • 혹시 중간에 멈춰버리면 delete하고 다시 해야한다.
eksctl delete cluster --refgion=ap-southeast-2 --name=yslee-cluster

  • 오래 기다려야한다. 여러개가 뜬다.
  • Mova에서도 잘 떠 있다.

  • Managed-server에서 Node가 2개 생긴 것을 확인할 수 있다.
kubectl get nodes -o wide

  • EC2 인스턴스에 가보면 Workernode 2개 생겨 있는 것을 볼 수 있다.

  • k8s로 nginx deployment와 Service를 생성해본다.
# 파일 생성
vi nginx-00.yaml

# 작성한 내용
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deploy
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: docker.io/yslee4050/yslee-nginx:v1.0
          ports:
          - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: nginx-svc
spec:
  type: NodePort
  selector:
    app: nginx
  ports:
  - port: 80
    targetPort: 80
    nodePort: 30080

  • nginx-00.yaml
kubectl apply -f nginx-00.yaml

kubectl get pod,deploy,svc

  • curl로 외부접속 테스트해도 안들어가질 것이다.
kubectl get node -o wide

  • eks-cluster-sg-yslee-cluster 이거에서 인바운드 규칙을 추가해줘야 접속할 수 있다.

  • 30080 인바운드 규칙을 추가해줬다.

  • 웹페이지로 접속해도 잘 들어가진다.

0개의 댓글