Oops - IT

EKS 생성하기 본문

AWS

EKS 생성하기

김모우 2025. 1. 14. 00:41
반응형

 

요구조건


  • EKS는 Private 망에다가 구성하며, 외부에서 들어오는 통신은 모두 차단
  • EKS는 AWS Public ECR Gallery를 사용할 수 있게 구성
  • EKS에서의 K8S RBAC 및 Pod 내부 권한을 IAM을 통해 할당 할 수 있도록 구성

 

VPC 구성


 

Amazon EKS 클러스터에 대한 Amazon VPC 생성 - Amazon EKS

Amazon EKS 클러스터에 대한 Amazon VPC 생성 Amazon Virtual Private Cloud(Amazon VPC)를 사용하여 사용자가 정의한 가상 네트워크로 AWS 리소스를 시작할 수 있습니다. 이 가상 네트워크는 사용자의 자체 데이터

docs.aws.amazon.com

 

 

VPC 및 서브넷에 대한 Amazon EKS 네트워킹 요구 사항 보기 - Amazon EKS

1 엔드포인트는 IPv4 및 IPv6 주소가 모두 포함된 이중 스택입니다. AWS 외부의 애플리케이션, 클러스터의 노드 및 클러스터 내부의 포드는 IPv4 또는 IPv6 중 하나를 통해 이 엔드포인트에 도달할 수

docs.aws.amazon.com

 

  • 네트워크 구성
    • 대상 요구 조건
      • EKS는 Private 망에다가 구성하며, 외부에서 들어오는 통신은 모두 차단 (Private 서브넷으로 구성)
      • Public AWS ECR Gallery 이미지 사용 (Private 망에서 Public AWS ECR 사용을 위해 Inetrnal -> External 통신 NAT GW 통한 흐름 구성)
    • 구성 요약
       
    • 요구조건에 맞추기 위해, Public - Private를 조합한 Hybrid 형태로 구성
      • Public Subnet
        • Default - IGW
        • 내부 통신 - Local
      • Private Subnet
        • Default - NAT GW(Public Subnet)
        • 내부 통신 - Local

 

 

 

  • 리소스 생성 확인
    • VPC 생성확인
    • 서브넷 4개 생성 확인 (Public 2EA, Private 2EA)
    • 인터넷 GW 생성 확인
    • NAT GW 생성 확인
    • 라우팅 테이블 확인
      • Public
        • 10.0.0.0/16 - Local
        • 0.0.0.0/0 - IGW
      • Private
        • 10.0.0.0/16 - Local
        • 0.0.0.0/0  - NAT GW

 

EKS 생성 (Console)


  • EKS 생성
    • 빠른 구성(★ 선택)
      • EKS Default 구성
    • 사용자 지정 구성
      • 네트워크 및 클러스터 구성에 대한 세부 사항 커스터 마이징 가능
  • 이번 포스팅에서 EKS 생성은 빠른 구성을 통해 진행하였습니다.
    • 클러스터 이름 입력
    • 클러스터 버전 선택
      • default
    • 클러스터 IAM 역할 및 노드 IAM 역할을 권장 생성 하여, 새로 고침 후 할당
    • 서브넷 할당
      • 기존에 생성한 Private 서브넷 2EA 할당
  • 클러스터 생성에 약 15분 ~ 20분 정도 소요되므로, 천천히 기다려 주시면 됩니다.
    • 생성 완료 시, EKS 선택 시 아래와 같이 접속 가능한 정보가 출력이 됩니다.

 

 

 

Kubeconfig 업데이트

 


  • 클러스터 접속을 위해 기존 생성된 IAM 유저 계정에 권한 할당
    • 생성된 EKS 선택 -> IAM 엑세스 항목 선택 -> 액세스 항목 생성 -> IAM User 선택 및 알맞은 K8S RBAC 부여
  • Kubeconfig 업데이트
## kubeconfig 파일 생성
# aws eks update-kubeconfig --region ap-northeast-2 --name <클러스터 이름>

## kubeconfig 파일 확인
# cat ~/.kube/config

## kubectl 명령어 확인
# kubectl get nodes

 

 

 

 

EKS 추가 기능 활성화


  • EKS 본격적인 사용을 위해 EKS에서 제공하는 추가 기능을 활성화 해줍니다.
  • 빠른 시작으로 선택 시 기본적으로 "metrics server" 기능만 활성화 됩니다.
  • 추가 기능 배포
    • Amazon VPC CNI
      • Amazon에서 제공하는 Container Network Interface로 컨테이너 간의 네트워크 통신을 할 수 있게 지원합니다.
      • 비슷한 기능으로는, Calico, Flannel 등이 있습니다.
    • CoreDNS
      • K8S 내부에서 DNS 역할을 하는 기능 (클러스터 내부에서 DNS 기반 통신 지원)
      • ex) xxx.<namespace>.svc.cluster.local 
    • kube-proxy
      • Pod에 대한 네트워크 매핑 지원
    • Amazon EKS POD Identity 에이전트
      • POD에 AWS IAM 기반 권할 할당 시 사용

 

  • 추가 기능 배포는 EKS 내 추가 기능 탭을 통해서 손쉽게 배포 가능합니다.

 

 

테스트 파드 배포


  • 테스트 Nginx Pod 배포
    • nginx-deploy.yaml
## nginx-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: web
        image: public.ecr.aws/nginx/nginx:1.26-alpine-perl
        ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  selector:
    app: nginx
  type: NodePort
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80

 

  • Pod 배포
## 테스트 Pod 배포
# kubectl apply -f nginx-deploy.yaml

## 테스트 Pod 확인
# kubectl get all -n default

 

 

 

다음 포스팅에서는 EKS 내에 생성한 Nginx Pod를 ELB를 통해 외부로 노출 시키는 방법에 대해서 다뤄보겠습니다.
반응형

'AWS' 카테고리의 다른 글

Lambda 사용 해보기  (2) 2025.01.15
EKS 생성하기 - LB를 통한 서비스 외부 노출  (0) 2025.01.14
AWS 면접 후기 (에필로그)  (0) 2025.01.08
AWS 면접 후기  (10) 2024.11.28
AWS SSO 구성  (0) 2023.04.13