Categories: 미분류

AWS EKS로 쿠버네티스 클러스터 만들기 실전편

AWS EKS로 쿠버네티스 클러스터 만들기 실전편

쿠버네티스(Kubernetes)는 컨테이너 오케스트레이션의 사실상 표준이며, AWS에서는 이를 손쉽게 운영할 수 있도록 EKS(Amazon Elastic Kubernetes Service)를 제공합니다. EKS는 AWS에서 제공하는 완전관리형 Kubernetes 서비스로, 제어 플레인(Control Plane)을 자동으로 구성하고 유지관리하며, 보안과 가용성을 AWS 수준으로 보장합니다. 이번 포스팅에서는 실무에서 바로 활용할 수 있도록 AWS EKS로 쿠버네티스 클러스터 만들기 실전편을 단계별로 소개합니다.


✅ EKS의 기본 구조 이해

EKS는 크게 두 가지 요소로 구성됩니다:

  • Control Plane (제어 플레인)
    • AWS가 관리 (Kubernetes API 서버, etcd 등)
    • 고가용성, 자동 패치, 모니터링 포함
  • Worker Nodes (작업 노드)
    • EC2 인스턴스 또는 Fargate 기반
    • 실제 컨테이너가 실행되는 곳

✅ 준비 사항

  • AWS 계정 및 관리자 권한
  • AWS CLI 설치 및 인증 완료
  • kubectl, eksctl 설치
  • VPC, 서브넷 구성 (eksctl이 자동 생성 가능)

✅ 1단계: eksctl로 클러스터 생성하기 (가장 쉬운 방법)

**eksctl**은 EKS 클러스터를 코드 한 줄로 생성할 수 있는 CLI 도구입니다.

eksctl create cluster \
  --name my-eks-cluster \
  --region ap-northeast-2 \
  --nodegroup-name standard-workers \
  --node-type t3.medium \
  --nodes 2 \
  --nodes-min 2 \
  --nodes-max 4 \
  --managed
  • --managed: AWS 관리형 노드 그룹 사용
  • 실행 시간: 약 15분
  • 자동으로 VPC, IAM 역할, 노드 그룹까지 구성

성공 시 출력: kubectl을 통해 클러스터와 연결된 상태가 됨


✅ 2단계: kubectl로 클러스터 확인

kubectl get nodes
kubectl get all --all-namespaces
  • 노드 정보가 출력되면 클러스터가 정상적으로 구성된 것
  • kube-system 네임스페이스에 AWS 관련 파드(CoreDNS, VPC CNI 등) 확인 가능

✅ 3단계: IAM OIDC 및 서비스 계정 연결 (IRSA 설정)

EKS에서 Pod에 IAM 권한을 부여하려면, OIDC 공급자 설정 + IAM 역할과 서비스계정 연결이 필요합니다.

1. OIDC 공급자 연결

eksctl utils associate-iam-oidc-provider \
  --region ap-northeast-2 \
  --cluster my-eks-cluster \
  --approve

2. IAM 역할 생성 + 정책 연결

eksctl create iamserviceaccount \
  --name s3-reader \
  --namespace default \
  --cluster my-eks-cluster \
  --attach-policy-arn arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess \
  --approve \
  --override-existing-serviceaccounts
  • 이제 s3-reader 서비스계정을 사용하는 Pod는 S3에 접근 가능

✅ 4단계: 애플리케이션 배포 (nginx 예제)

kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --type=LoadBalancer --port=80
kubectl get svc
  • EXTERNAL-IP 항목에 퍼블릭 주소 확인 가능
  • 웹 브라우저에서 IP 접속 시 nginx 페이지 출력

✅ 5단계: Helm으로 애플리케이션 설치

Helm은 Kubernetes의 패키지 관리자 역할을 합니다.

Helm 설치 후 repo 추가

helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update

WordPress 설치 예시

helm install my-blog bitnami/wordpress
kubectl get svc
  • my-blog 서비스의 EXTERNAL-IP 확인 → 브라우저 접속

✅ 6단계: 클러스터 삭제

eksctl delete cluster --name my-eks-cluster --region ap-northeast-2
  • 관련 자원(VPC, 노드, IAM 등) 모두 자동 삭제

✅ Q&A

Q. EC2 대신 Fargate로 노드 없이 배포도 가능한가요?
네, 가능합니다. EKS는 Fargate 프로필을 설정하면 Pod 단위로만 배포할 수 있습니다. 이 경우 노드를 직접 관리할 필요 없이 서버리스 방식으로 사용량에 따라 과금됩니다.

eksctl create fargateprofile \
  --cluster my-eks-cluster \
  --name fp-default \
  --namespace default

Q. 왜 EC2 대신 EKS를 사용하나요?

  • 쿠버네티스 클러스터 설치 및 운영 자동화
  • 자동 스케일링, 롤링 업데이트, 노드 교체 용이
  • IAM, VPC, CloudWatch 등 AWS 생태계 통합 가능
  • 보안 관리(컨트롤 플레인 암호화, 인증서, OIDC 등) 강화

Q. 비용은 어떻게 계산되나요?

  • 제어 플레인: EKS 클러스터당 $0.10/시간 과금
  • 노드 EC2 인스턴스: 인스턴스 사용 시간 기준 별도 과금
  • Fargate 사용 시 CPU/메모리 단위로 과금

비용 절감을 위한 팁:

  • 예약 인스턴스 또는 Savings Plan 활용
  • Auto Scaling으로 유휴 인스턴스 최소화
  • 클러스터 수명 주기 관리

✅ 요약 정리

항목내용
서비스AWS EKS (Elastic Kubernetes Service)
클러스터 구성eksctl 또는 AWS 콘솔
워커 노드EC2 또는 Fargate 선택
권한 제어IAM + OIDC (IRSA 방식)
애플리케이션 배포kubectl, Helm 활용
삭제eksctl delete cluster 명령

결론
AWS EKS로 쿠버네티스 클러스터 만들기 실전편을 통해 인프라를 코드로 구성하고, 컨테이너 기반 서비스 배포까지 한 번에 진행할 수 있습니다. 복잡한 운영 부담을 줄이고, 클라우드 네이티브 아키텍처로 전환하고자 한다면 EKS는 매우 강력한 도구입니다. 실무에서 자주 쓰는 자동화 및 보안 기능까지 함께 익히면 더욱 유용하게 활용할 수 있습니다.

huniverse4

Recent Posts

연료첨가제는 정말 엔진 세정에 좋은지 실제 연구결과가 있는지 알아보자

자동차를 사랑하는 많은 운전자들이 한 번쯤 고민해본 문제가 바로 연료첨가제입니다. 주유소에서, 온라인 쇼핑몰에서, 자동차용품점에서 "엔진을…

2개월 ago

남자 옷핏이 예뻐보이는 몸무게를 알아보자

"옷이 날개"라고 하지만, 정작 그 날개가 제대로 펼쳐지려면 적절한 몸무게가 필요합니다. 남자들의 영원한 고민 중…

2개월 ago

제로 탄산음료는 많이 마셔도 될까? 몸무게별 섭취 상한선 알아보자

다이어트 열풍과 함께 '제로 칼로리'를 내세운 탄산음료가 폭발적으로 인기를 끌고 있습니다. 하지만 "제로 탄산음료는 많이…

2개월 ago

달을 보기 위한 망원경의 최소 성능 및 스펙은?

달 관측은 천체 관측의 첫걸음이자 가장 매력적인 경험 중 하나입니다. 하지만 달을 보기 위한 망원경의…

2개월 ago

아이폰 14 프로맥스 배터리 오래사용하는 방법 총정리

최신 아이폰 14 프로맥스는 강력한 성능과 함께 뛰어난 배터리 용량을 자랑하지만, 올바른 사용법을 모르면 배터리…

2개월 ago

윈드라이브 동기화 용량 초과 시 대처법

윈드라이브(OneDrive)를 사용하다 보면 어느 순간 “동기화 중지됨”, “저장소 가득 참”이라는 메시지를 마주할 수 있습니다. 이는…

6개월 ago