SK플래닛 ai활용 데이터엔지니어 과정 2기/쿠버네티스

쿠버네티스 - 3

dev-lee 2026. 3. 25. 20:50

AWS EKS(Amazon Elastic Kubernetes Service) 생성 가이드 요약


1. EKS란?

EKS(Amazon Elastic Kubernetes Service)는 AWS에서 제공하는 쿠버네티스 관리형 서비스이다.
쿠버네티스를 직접 구축·운영할 때 필요한 마스터 노드 관리, 보안 설정, 업데이트 등의 작업을 AWS가 대신 처리해줌.

핵심 특징

특징 설명
관리형 컨트롤 플레인 쿠버네티스의 컨트롤 플레인을 AWS가 직접 운영, 가용성 자동 관리
높은 보안성 AWS IAM과 연동되어 권한 관리가 세밀하고 안전
유연한 컴퓨팅 옵션 EC2: 서버 직접 제어 / Fargate: 서버리스 방식
표준 쿠버네티스 준수 오픈소스 쿠버네티스와 100% 호환

EKS를 쓰는 이유 (장점)

특징 설명
운영 부담 감소 업데이트, 패치, 백업 등 복잡한 인프라 관리를 AWS에 위임
고가용성 컨트롤 플레인이 여러 가용 영역(AZ)에 복제되어 안정성 확보
에코시스템 ELB, VPC, CloudWatch 등 AWS 서비스와 연동

동작 구조

  1. 클러스터 생성: AWS 콘솔 또는 CLI에서 EKS 클러스터 생성
  2. 노드 연결: 컨테이너가 실행될 서버(EC2 또는 Fargate)를 클러스터에 연결
  3. 애플리케이션 배포: kubectl 등 표준 도구로 컨테이너 이미지 배포

2. EKS 생성 - 권한 준비

  1. AWS 콘솔 IAM에서 계정 생성 후 Admin 권한 부여
  2. Access Key, Secret Key 생성 후 안전한 곳에 보관
  3. 명령 서버 또는 PC에서 AWS CLI 설정:
aws configure
# AWS Access Key ID: AKIA2E...
# AWS Secret Access Key: JGgwvJFIQM...
# Default region name: ap-northeast-2
# Default output format: (엔터)

3. OS별 EKS 설치법

Windows (PowerShell - 관리자 권한)

# AWS CLI
msiexec.exe /i https://awscli.amazonaws.com/AWSCLIV2.msi

# eksctl (Chocolatey 경유)
Set-ExecutionPolicy Bypass -Scope Process -Force; ...
choco install eksctl

# kubectl
curl.exe -LO "https://dl.k8s.io/release/v1.28.0/bin/windows/amd64/kubectl.exe"

macOS (Homebrew)

brew install awscli eksctl kubectl

Linux (Ubuntu / Amazon Linux 2)

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

# 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

# kubectl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

참고: AWS CloudFormation으로 EC2 1대를 생성하여 EKS 생성 명령 서버로 활용하는 방법도 있음.


4. eksctl로 EKS 클러스터 생성

YAML 설정 파일 작성

# eks-freetier-setup.yaml
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
  name: free-vpc-cluster
  region: ap-northeast-2
  version: "1.34"

vpc:
  clusterEndpoints:
    publicAccess: true
    privateAccess: true
  nat:
    gateway: Single  # 비용 절감: NAT 게이트웨이 1개만 생성

managedNodeGroups:
  - name: standard-nodes
    # 인스턴스 타입 가이드:
    # t3.micro  : 프리티어 (K8s 시스템 Pod 실행 시 리소스 부족 가능)
    # t3.small  : 가성비 추천 (시스템 안정성 확보)
    # c7i-flex.large (2cpu/4gb): 연산 위주
    # m7i-flex.large (2cpu/8gb): 메모리 여유
    instanceType: t3.small
    minSize: 1
    maxSize: 2
    desiredCapacity: 1  # 비용 절감: 노드 1대로 시작
    privateNetworking: true
    iam:
      withAddonPolicies:
        imageBuilder: true
        autoScaler: true
        cloudWatch: true

addons:
  - name: vpc-cni
  - name: coredns
  - name: kube-proxy

클러스터 생성 명령

eksctl create cluster -f eks-freetier-setup.yaml
# 약 15분 소요 (내부적으로 CloudFormation을 사용하여 생성)

# 생성 확인
kubectl get nodes

5. 다른 리눅스에서 kubectl get nodes 되게 하기

다른 리눅스 서버에서 EKS 클러스터에 접속하려면 두 가지 작업이 필요

1단계: 도구 설치 (AWS CLI + kubectl)

위의 Linux 설치 방법 참고

2단계: AWS 자격 증명 설정

aws configure
# IAM 사용자의 Access Key, Secret Key 입력

3단계: kubeconfig 업데이트 (가장 중요)

aws eks update-kubeconfig --region ap-northeast-2 --name free-vpc-cluster
# 클러스터 이름이 정확히 일치해야 함.

kubectl get nodes

6. Kubernetes 내부 ConfigMap 등록

클러스터를 생성한 계정(A)과 접속할 계정(B)이 다른 경우, aws-auth ConfigMap에 계정 B를 등록해야 함.

방법 A: eksctl 사용 (권장)

# Windows PowerShell
eksctl create iamidentitymapping `
  --cluster free-vpc-cluster `
  --region ap-northeast-2 `
  --arn arn:aws:iam::계정ID:user/사용자명 `
  --group system:masters `
  --username admin-user

방법 B: ConfigMap 직접 수정

kubectl edit -n kube-system configmap/aws-auth
data:
  mapUsers: |
    - userarn: arn:aws:iam::계정ID:user/사용자명
      username: admin-user
      groups:
        - system:masters

리눅스 서버에서 접속 설정 업데이트

aws configure  # 계정 B의 Access Key 등록
aws eks update-kubeconfig --region ap-northeast-2 --name free-vpc-cluster
kubectl get nodes

# 현재 로그인된 사용자 ARN 확인
aws sts get-caller-identity

⚠️ system:masters는 슈퍼 유저 권한. 실제 운영 환경에서는 필요한 권한만 가진 별도의 Role을 만드는 것을 권장.


7. 삭제

# EKS 클러스터 삭제 (약 5분 소요)
eksctl delete cluster --name free-vpc-cluster

삭제 후 아래 리소스도 수동으로 확인하여 정리:

  • CloudFormation 스택
  • 로드밸런서
  • VPC

'SK플래닛 ai활용 데이터엔지니어 과정 2기 > 쿠버네티스' 카테고리의 다른 글

쿠버네티스 - 6  (0) 2026.03.25
쿠버네티스 - 5  (0) 2026.03.25
쿠버네티스 - 4  (0) 2026.03.25
쿠버네티스 - 2  (0) 2026.03.23
쿠버네티스 - 1  (0) 2026.03.23