[K8S] AWS EKS로 쿠버네티스 클러스터 구축하기

Nicky·2025년 1월 20일
post-thumbnail

오늘은 AWS EKS를 이용하여 쿠버네티스 클러스터를 구축하고 어플리케이션 컨테이너를 배포해도록 하겠다.

1. EKS 클러스터 생성

EKS(Amazon Elastic Kubernetes Service)는 AWS에서 제공하는 관리형 Kubernetes 서비스로서 클러스터를 쉽게 생성하고 관리할 수 있다.

지난 포스팅에서 마스터 노드가 컨트롤 플레인을 통해 워커 노드에서 실행 중인 모든 포드에 대한 관리를 한다고 언급했는데, EKS에선 이러한 마스터 노드를 대신 관리해줌으로서 사용자의 운영 및 유지보수에 대한 부담이 적다.

클러스터 구성에는 자율 모드(Auto Mode)와 사용자 지정 2가지 방법이 존재하는데, 이번엔 직접 워커 노드를 설정해보는 사용자 지정 구성 방법으로 해보기로 한다.

EKS Auto Mode

2024년 12월 부로 출시된 자율 모드로 최적의 컴퓨팅 인스턴스를 선택하고, 리소스를 동적으로 확장하고, 비용을 지속적으로 최적화하는 등 쿠버네티스 클러스터를 더욱 편하게 관리할 수 있다고 한다.
https://aws.amazon.com/ko/blogs/korea/streamline-kubernetes-cluster-management-with-new-amazon-eks-auto-mode/

클러스터 구성에 앞서 EKS 클러스터에 대한 권한을 가진 역할을 생성하고

아래의 사이트에서 EKS 클러스터용 VPC 템플릿을 복사하여 CloudFormation에서 스택을 생성해두자.

https://docs.aws.amazon.com/eks/latest/userguide/creating-a-vpc.html#create-vpc

이후 순차적으로 설정을 하여 클러스터 구성을 마치도록 한다.

2. 노드 그룹 추가

클러스터의 생성이 완료되면 이제 pod를 실행할 노드 그룹을 추가해주자.

다음의 권한을 추가한 역할을 등록해주자.

  • AmazonEKSWorkerNodePolicy
  • AmazonEKS_CNI_Policy
  • AmazonEC2ContainerRegistryReadOnly

다음과 같이 운영할 노드의 개수를 지정할 수 있다.

나머지 설정은 default로 두고 생성하게 되면 이렇게 EC2에 새로운 인스턴스가 추가됨을 확인할 수 있다.

3. Pod 배포

이제 EKS 클러스터가 잘 구축되었는지 확인하기 위해 로컬 pc에서 컨테이너를 배포해보도록 하자.

사전에 AWS CLIKubectl을 설치하고 AWS Configure 작업 증명을 마쳐두자.

이제 다음의 명령어로 로컬 pc에서 EKS 클러스터에 접근할 수 있다.

aws eks update-kubeconfig --region {aws-region} --name {eks-cluster-name}

지난 포스팅에 만들어놓은 유레카 서버 컨테이너를 배포해보기로 한다.

eureka-server.yaml

apiVersion: v1
kind: Service
metadata:
  name: eureka-server-service
spec:
  selector:
    app: eureka-server
  type: LoadBalancer
  ports:
    - protocol: TCP
      port: 10000
      targetPort: 10000
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: eureka-server-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: eureka-server
  template:
    metadata:
      labels:
        app: eureka-server
    spec:
      containers:
        - name: eureka-server
          image: {registry_name}/eureka-server:latest
          ports:
            - containerPort: 10000

kubectl apply -f eureka-server.yaml

이후 서비스 목록을 확인보면 다음과 같이 LoadBalancer 타입으로 설정됨에 따라 10000번 포트를 외부에서 접근할 수 있음을 확인할 수 있다.

Reference

https://www.udemy.com/course/docker-kubernetes-2022/

profile
코딩 연구소

0개의 댓글