
오늘은 AWS 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



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




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

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


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

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

이제 EKS 클러스터가 잘 구축되었는지 확인하기 위해 로컬 pc에서 컨테이너를 배포해보도록 하자.
사전에 AWS CLI와 Kubectl을 설치하고 AWS Configure 작업 증명을 마쳐두자.

이제 다음의 명령어로 로컬 pc에서 EKS 클러스터에 접근할 수 있다.
aws eks update-kubeconfig --region {aws-region} --name {eks-cluster-name}
지난 포스팅에 만들어놓은 유레카 서버 컨테이너를 배포해보기로 한다.
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번 포트를 외부에서 접근할 수 있음을 확인할 수 있다.

