EKS 클러스터 생성

Amazon EKS 클러스터를 생성하는 방법은 여러 가지가 있습니다. 이 장에서는 다양한 도구와 방법을 사용하여 EKS 클러스터를 생성하는 방법을 자세히 알아보겠습니다.

목차

사전 요구 사항

EKS 클러스터를 생성하기 전에 다음과 같은 사전 요구 사항이 필요합니다:

1. AWS 계정

유효한 AWS 계정이 필요합니다. AWS 계정이 없는 경우 AWS 웹사이트arrow-up-right에서 가입할 수 있습니다.

2. IAM 권한

EKS 클러스터를 생성하고 관리하려면 다음과 같은 IAM 권한이 필요합니다:

  • eks:*

  • ec2:*

  • iam:*

  • cloudformation:*

관리자 권한이 있는 경우 추가 권한 설정이 필요하지 않습니다. 그렇지 않은 경우 다음과 같은 IAM 정책을 사용자 또는 역할에 연결해야 합니다:

3. 도구 설치

EKS 클러스터를 생성하고 관리하기 위해 다음과 같은 도구를 설치해야 합니다:

AWS CLI

AWS CLI는 AWS 서비스를 명령줄에서 제어하기 위한 통합 도구입니다.

macOS:

Linux:

Windows:

AWS CLI 설치 후 다음 명령을 실행하여 자격 증명을 구성합니다:

kubectl

kubectl은 Kubernetes 클러스터와 통신하기 위한 명령줄 도구입니다.

macOS:

Linux:

Windows:

eksctl

eksctl은 EKS 클러스터를 생성하고 관리하기 위한 간단한 CLI 도구입니다.

macOS:

또는:

Linux:

Windows:

4. VPC 및 서브넷

EKS 클러스터는 VPC와 서브넷이 필요합니다. 기존 VPC를 사용하거나 새 VPC를 생성할 수 있습니다. EKS 클러스터를 위한 VPC는 다음 요구 사항을 충족해야 합니다:

  • 최소 2개의 서브넷이 서로 다른 가용 영역에 있어야 합니다.

  • 서브넷에는 인터넷 액세스가 필요합니다(NAT 게이트웨이 또는 인터넷 게이트웨이를 통해).

  • 서브넷에는 충분한 IP 주소가 있어야 합니다.

  • 서브넷에는 적절한 태그가 지정되어야 합니다.

EKS 클러스터를 위한 VPC 태그

EKS 클러스터가 VPC 및 서브넷을 올바르게 사용할 수 있도록 다음과 같은 태그를 지정해야 합니다:

VPC 태그:

  • kubernetes.io/cluster/<cluster-name>: shared 또는 owned

퍼블릭 서브넷 태그:

  • kubernetes.io/cluster/<cluster-name>: shared 또는 owned

  • kubernetes.io/role/elb: 1

프라이빗 서브넷 태그:

  • kubernetes.io/cluster/<cluster-name>: shared 또는 owned

  • kubernetes.io/role/internal-elb: 1

eksctl을 사용한 클러스터 생성

eksctl은 EKS 클러스터를 생성하고 관리하기 위한 가장 간단한 방법입니다. eksctl은 CloudFormation을 사용하여 EKS 클러스터와 관련 리소스를 생성합니다.

기본 클러스터 생성

가장 기본적인 형태의 EKS 클러스터를 생성하려면 다음 명령을 실행합니다:

이 명령은 다음과 같은 기본 설정으로 클러스터를 생성합니다:

  • 2개의 m5.large 노드

  • 새로운 VPC 및 서브넷

  • 기본 Amazon Linux 2 AMI

  • 최신 Kubernetes 버전

구성 파일을 사용한 클러스터 생성

더 복잡한 구성의 경우 YAML 파일을 사용하여 클러스터를 정의할 수 있습니다:

이 구성 파일을 사용하여 클러스터를 생성하려면 다음 명령을 실행합니다:

관리형 노드 그룹 생성

기존 클러스터에 관리형 노드 그룹을 추가하려면 다음 명령을 실행합니다:

또는 구성 파일을 사용할 수 있습니다:

EKS Auto Mode 클러스터 생성

EKS Auto Mode는 2024년에 출시된 새로운 기능으로, Kubernetes 클러스터 인프라를 자동화하여 운영 오버헤드를 크게 줄입니다. Auto Mode는 컴퓨팅, 네트워킹, 스토리지 등의 인프라 관리를 AWS가 자동으로 처리합니다.

EKS Auto Mode의 주요 특징

  • 자동화된 노드 관리: 워크로드 요구사항에 따라 자동으로 노드를 추가/제거

  • 보안 강화: 불변 AMI, SELinux 강제 모드, 읽기 전용 루트 파일 시스템

  • 자동 업그레이드: 21일 최대 노드 수명으로 정기적인 보안 패치 및 업데이트

  • 통합 구성 요소: Pod 네트워킹, DNS, 스토리지, GPU 지원 등이 기본 제공

  • 비용 최적화: 사용하지 않는 인스턴스 자동 종료 및 워크로드 통합

기본 Auto Mode 클러스터 생성

구성 파일을 사용한 Auto Mode 클러스터 생성

클러스터 생성:

Auto Mode vs 기존 방식 비교

기능
기존 EKS
EKS Auto Mode

노드 관리

수동 관리형 노드 그룹

자동 노드 관리

스케일링

Cluster Autoscaler 설정 필요

자동 스케일링 내장

업그레이드

수동 업그레이드

자동 업그레이드 (21일 주기)

보안

사용자 구성

강화된 보안 기본 제공

네트워킹

CNI 플러그인 설정

자동 네트워킹 구성

스토리지

CSI 드라이버 설치 필요

EBS CSI 자동 제공

GPU 지원

수동 드라이버 설치

자동 GPU 지원

Auto Mode 클러스터 검증

클러스터가 생성된 후 다음 명령으로 상태를 확인할 수 있습니다:

커스텀 노드 풀 생성

Auto Mode에서는 기본 노드 풀 외에 커스텀 노드 풀을 생성할 수 있습니다:

Auto Mode 제한사항

  • SSH 또는 SSM을 통한 노드 직접 액세스 불가

  • 노드 수명 최대 21일 (자동 교체)

  • 기본 노드 풀 및 노드 클래스 수정 불가

  • 특정 인스턴스 유형 제한 가능

Auto Mode 모니터링

Auto Mode 클러스터는 CloudWatch와 통합되어 자동으로 메트릭을 수집합니다:

Fargate 프로필 생성

Fargate 프로필을 생성하려면 다음 명령을 실행합니다:

또는 구성 파일을 사용할 수 있습니다:

클러스터 업데이트

eksctl을 사용하여 기존 클러스터를 업데이트할 수 있습니다:

클러스터 삭제

eksctl을 사용하여 클러스터를 삭제할 수 있습니다:

AWS Management Console을 사용한 클러스터 생성

AWS Management Console을 사용하여 EKS 클러스터를 생성하는 단계는 다음과 같습니다:

  1. "EKS"를 검색하거나 서비스 목록에서 "Elastic Kubernetes Service"를 선택합니다.

  2. "클러스터" 페이지에서 "클러스터 생성" 버튼을 클릭합니다.

EKS Auto Mode 클러스터 생성 (빠른 구성)

EKS Auto Mode를 사용하면 최소한의 구성으로 프로덕션 준비된 클러스터를 생성할 수 있습니다.

1. 빠른 구성 선택

  1. "빠른 구성" 옵션이 선택되어 있는지 확인합니다.

  2. 다음 정보를 입력합니다:

    • 클러스터 이름: 클러스터의 고유한 이름을 입력합니다.

    • Kubernetes 버전: 사용할 Kubernetes 버전을 선택합니다 (최신 버전 권장).

2. IAM 역할 구성

  1. 클러스터 IAM 역할 선택:

    • 첫 번째 Auto Mode 클러스터인 경우 "권장 역할 생성" 옵션을 사용합니다.

    • 기존 역할이 있는 경우 재사용할 수 있습니다.

    • 권장 역할 이름: AmazonEKSAutoClusterRole

  2. 노드 IAM 역할 선택:

    • 첫 번째 Auto Mode 클러스터인 경우 "권장 역할 생성" 옵션을 사용합니다.

    • 권장 역할 이름: AmazonEKSAutoNodeRole

3. 네트워킹 구성

  1. VPC 선택:

    • 새 VPC 생성: "VPC 생성" 옵션을 선택하여 EKS용 새 VPC를 생성합니다.

    • 기존 VPC 사용: 이전에 생성한 EKS용 VPC를 선택합니다.

  2. 서브넷 구성 (선택사항):

    • EKS Auto Mode는 자동으로 VPC의 프라이빗 서브넷을 선택합니다.

    • 필요에 따라 서브넷을 추가하거나 제거할 수 있습니다.

4. 구성 검토 및 생성

  1. 빠른 구성 기본값 보기를 선택하여 모든 구성 값을 검토합니다.

  2. 클러스터 생성을 클릭합니다. (클러스터 생성에는 약 15분이 소요됩니다)

사용자 지정 구성을 사용한 클러스터 생성

더 세밀한 제어가 필요한 경우 사용자 지정 구성을 사용할 수 있습니다.

클러스터 구성

  1. "클러스터 구성" 페이지에서 다음 정보를 입력합니다:

    • 클러스터 이름: 클러스터의 고유한 이름을 입력합니다.

    • Kubernetes 버전: 사용할 Kubernetes 버전을 선택합니다.

    • 클러스터 서비스 역할: 새 역할을 생성하거나 기존 역할을 선택합니다.

    • EKS Auto Mode: Auto Mode를 활성화하려면 체크박스를 선택합니다.

    • 태그: 필요한 경우 태그를 추가합니다.

    • "다음" 버튼을 클릭합니다.

네트워킹 지정

  1. "네트워킹 지정" 페이지에서 다음 정보를 입력합니다:

    • VPC: 새 VPC를 생성하거나 기존 VPC를 선택합니다.

    • 서브넷: 클러스터에 사용할 서브넷을 선택합니다. 최소 2개의 서브넷이 서로 다른 가용 영역에 있어야 합니다.

    • 보안 그룹: 클러스터에 사용할 보안 그룹을 선택합니다.

    • 클러스터 엔드포인트 액세스: 클러스터 API 서버 엔드포인트에 대한 액세스를 구성합니다.

      • 퍼블릭: 인터넷에서 API 서버에 액세스할 수 있습니다.

      • 프라이빗: VPC 내에서만 API 서버에 액세스할 수 있습니다.

      • 퍼블릭 및 프라이빗: 인터넷과 VPC 내에서 모두 API 서버에 액세스할 수 있습니다.

    • "다음" 버튼을 클릭합니다.

로깅 구성

  1. "로깅 구성" 페이지에서 다음 정보를 입력합니다:

    • 컨트롤 플레인 로깅: 활성화할 로그 유형을 선택합니다.

      • API 서버 로그

      • 감사 로그

      • 인증자 로그

      • 컨트롤러 관리자 로그

      • 스케줄러 로그

    • "다음" 버튼을 클릭합니다.

애드온 선택

  1. "애드온 선택" 페이지에서 다음 정보를 입력합니다:

    • Amazon VPC CNI: 포드 네트워킹을 위한 CNI 플러그인입니다.

    • CoreDNS: 클러스터 내 DNS 서비스입니다.

    • kube-proxy: 네트워크 프록시 및 로드 밸런싱을 제공합니다.

    • Amazon EBS CSI Driver: EKS Auto Mode에서는 자동으로 포함됩니다.

    • "다음" 버튼을 클릭합니다.

검토 및 생성

  1. "검토 및 생성" 페이지에서 구성을 검토하고 "생성" 버튼을 클릭합니다.

Auto Mode가 아닌 클러스터의 노드 그룹 추가

EKS Auto Mode를 사용하지 않는 경우, 클러스터 생성 후 노드 그룹을 수동으로 추가해야 합니다.

노드 그룹 추가

  1. "노드 그룹 구성" 페이지에서 다음 정보를 입력합니다:

    • 노드 그룹 이름: 노드 그룹의 고유한 이름을 입력합니다.

    • 노드 IAM 역할: 새 역할을 생성하거나 기존 역할을 선택합니다.

    • "다음" 버튼을 클릭합니다.

  2. "컴퓨팅 및 크기 조정 구성 설정" 페이지에서 다음 정보를 입력합니다:

    • AMI 유형: 노드에 사용할 AMI 유형을 선택합니다.

    • 인스턴스 유형: 노드에 사용할 EC2 인스턴스 유형을 선택합니다.

    • 디스크 크기: 노드의 디스크 크기를 지정합니다.

    • 노드 수: 최소, 최대 및 원하는 노드 수를 지정합니다.

    • "다음" 버튼을 클릭합니다.

  3. "네트워킹 지정" 페이지에서 다음 정보를 입력합니다:

    • 서브넷: 노드 그룹에 사용할 서브넷을 선택합니다.

    • 원격 액세스 구성: SSH 액세스를 구성합니다.

    • "다음" 버튼을 클릭합니다.

  4. "검토 및 생성" 페이지에서 구성을 검토하고 "생성" 버튼을 클릭합니다.

AWS CLI를 사용한 클러스터 생성

AWS CLI를 사용하여 EKS 클러스터를 생성할 수 있습니다. 이 방법은 스크립트 자동화나 CI/CD 파이프라인에 유용합니다.

EKS Auto Mode 클러스터 생성

1. 클러스터 생성

2. 클러스터 상태 확인

3. kubeconfig 업데이트

기존 방식 클러스터 생성

Auto Mode를 사용하지 않는 경우의 클러스터 생성 방법입니다.

기본 클러스터 생성

클러스터 상태 확인

클러스터가 생성되면 상태가 ACTIVE로 변경됩니다. 이 과정은 약 10-15분이 소요됩니다.

kubeconfig 업데이트

관리형 노드 그룹 생성

노드 그룹 상태 확인

Terraform을 사용한 클러스터 생성

Terraform을 사용하여 EKS 클러스터를 생성하면 인프라를 코드로 관리할 수 있습니다.

EKS Auto Mode 클러스터 Terraform 구성

Terraform 실행

기존 방식 Terraform 구성

Auto Mode를 사용하지 않는 경우의 Terraform 구성입니다:

AWS CDK를 사용한 클러스터 생성

AWS CDK(Cloud Development Kit)를 사용하여 EKS 클러스터를 생성할 수 있습니다.

TypeScript를 사용한 EKS Auto Mode 클러스터

CDK 앱 진입점

CDK 배포

클러스터 액세스 구성

EKS 클러스터에 액세스하기 위해서는 적절한 권한과 구성이 필요합니다.

kubeconfig 구성

RBAC 구성

클러스터 검증

클러스터가 올바르게 생성되었는지 확인하는 방법입니다.

기본 검증

Auto Mode 특정 검증

샘플 애플리케이션 배포

클러스터 업그레이드

EKS 클러스터의 Kubernetes 버전을 업그레이드하는 방법입니다.

Auto Mode 클러스터 업그레이드

Auto Mode 클러스터는 자동으로 업그레이드되지만, 수동으로도 가능합니다:

기존 방식 클러스터 업그레이드

클러스터 삭제

클러스터를 삭제하는 방법입니다.

eksctl을 사용한 삭제

AWS CLI를 사용한 삭제

Terraform을 사용한 삭제

CDK를 사용한 삭제

결론

EKS 클러스터 생성에는 여러 가지 방법이 있으며, 각각의 장단점이 있습니다:

  • EKS Auto Mode: 최소한의 운영 오버헤드로 프로덕션 준비된 클러스터 제공

  • eksctl: 간단하고 빠른 클러스터 생성

  • AWS Management Console: GUI를 통한 직관적인 생성

  • AWS CLI: 스크립트 자동화에 적합

  • Terraform: 인프라를 코드로 관리

  • AWS CDK: 프로그래밍 언어를 사용한 인프라 정의

프로덕션 환경에서는 EKS Auto Mode나 Terraform/CDK를 사용하여 일관되고 반복 가능한 인프라를 구축하는 것을 권장합니다.

마지막 업데이트