Amazon EKS 시작하기 - eksctl - Amazon EKS

Amazon EKS 시작하기 - eksctl

이 가이드는 Amazon EKS에서 Kubernetes 클러스터를 생성 및 관리하기 위한 간단한 명령줄 유틸리티인 eksctl을 사용하여 Amazon Elastic Kubernetes Service(Amazon EKS)를 시작할 때 필요한 모든 리소스를 설치하는 데 도움이 됩니다. 이 튜토리얼의 마지막에서는 애플리케이션을 배포할 수 있는 Amazon EKS에 클러스터를 실행하게 됩니다.

이 가이드의 절차에서는 AWS Management Console을 사용하여 클러스터를 생성할 경우 수동으로 생성해야 하는 여러 리소스를 자동으로 생성합니다. 대부분의 리소스를 수동으로 만들고 리소스가 상호 작용하는 방식을 더 잘 이해하려면 AWS Management Console을 사용하여 클러스터 및 컴퓨팅을 생성합니다. 자세한 내용은 Amazon EKS 시작하기 - AWS Management Console 및 AWS CLI 섹션을 참조하세요.

사전 조건

이 튜토리얼에서는 Amazon EKS 클러스터를 생성하고 관리할 때 필요한 다음 도구 및 리소스를 설치하고 구성해야 합니다.

  • kubectl - Kubernetes 클러스터 작업을 위한 명령줄 도구입니다. 자세한 내용은 kubectl 설치 또는 업데이트 섹션을 참조하세요.

  • eksctl - 많은 개별 태스크를 자동화하는 EKS 클러스터를 사용하기 위한 명령줄 도구입니다. 자세한 내용은 eksctl 설명서에서 Installation을 참조하세요.

  • 필요한 IAM 권한 - 사용하는 IAM 보안 주체에 Amazon EKS IAM 역할, 서비스 연결 역할, AWS CloudFormation, VPC 및 관련 리소스를 사용할 수 있는 권한이 있어야 합니다. 자세한 내용은 IAM 사용 설명서에서 Amazon Elastic Container Service for Kubernetes에 사용되는 작업, 리소스 및 조건 키Kubernetes서비스 연결 역할 사용 섹션을 참조하세요. 이 가이드의 모든 단계를 동일한 사용자로 완료해야 합니다. 현재 사용자를 확인하려면 다음 명령을 실행합니다.

    aws sts get-caller-identity

1단계: Amazon EKS 클러스터 및 노드 생성

중요

이 주제에는 가능한 한 간단하고 빠르게 시작하기 위해 기본 설정으로 클러스터와 노드를 생성하는 단계가 포함되어 있습니다. 프로덕션 용도로 클러스터 및 노드를 생성하기 전에 모든 설정을 숙지하고 요구 사항을 충족하는 설정으로 클러스터와 노드를 배포하는 것이 좋습니다. 자세한 내용은 Amazon EKS 클러스터 생성Amazon EKS 노드 섹션을 참조하세요. 일부 설정은 클러스터와 노드를 생성할 때만 사용 설정할 수 있습니다.

다음 노드 유형 중 하나를 사용하여 클러스터를 생성할 수 있습니다. 각 유형에 대한 자세한 내용은 Amazon EKS 노드 부분을 참조하세요. 클러스터를 배포한 후에 다른 노드 유형을 추가할 수 있습니다.

  • Fargate – LinuxAWS Fargate에서 Linux 애플리케이션을 실행하려는 경우 이 노드 유형을 선택합니다. Fargate는 Amazon EC2 인스턴스를 관리하지 않고도 Kubernetes Pods를 배포할 수 있는 서버리스 컴퓨팅 엔진입니다.

  • 관리형 노드 — Linux - Amazon EC2 인스턴스에서 Amazon Linux 애플리케이션을 실행하려면 이 노드 유형을 선택합니다. 이 가이드에서는 다루지 않지만 Windows 자체 관리형Bottlerocket 노드를 클러스터에 추가할 수도 있습니다.

다음 명령을 사용하여 Amazon EKS 클러스터를 생성합니다. my-cluster를 고유한 값으로 바꿀 수 있습니다. 이름에는 영숫자(대소문자 구분)와 하이픈만 사용할 수 있습니다. 영문자로 시작해야 하며 100자 이하여야 합니다. region-code를 Amazon EKS에서 지원하는 AWS 리전으로 바꿉니다. AWS 리전 목록은 AWS 일반 참조 가이드의 Amazon EKS 엔드포인트 및 할당량을 참조하세요.

Fargate – Linux
eksctl create cluster --name my-cluster --region region-code --fargate
Managed nodes – Linux
eksctl create cluster --name my-cluster --region region-code

클러스터 생성에 몇 분 정도 걸립니다. 생성하는 동안 여러 줄의 출력이 표시됩니다. 출력의 마지막 줄은 다음 예제와 유사합니다.

[...]
[✓]  EKS cluster "my-cluster" in "region-code" region is ready

eksctl~/.kubekubectl config 파일을 생성했거나 컴퓨터터의 ~/.kube에 있는 기존 config 파일에 새 클러스터의 구성을 추가했습니다.

클러스터 생성이 완료되면 AWS CloudFormation 콘솔(https://console.aws.amazon.com/cloudformation)에서 eksctl-my-cluster-cluster라는 AWS CloudFormation 스택을 살펴보세요.

2단계: Kubernetes 리소스 보기

  1. 클러스터 노드를 확인합니다.

    kubectl get nodes -o wide

    예제 출력은 다음과 같습니다.

    Fargate – Linux
    NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME fargate-ip-192-0-2-0.region-code.compute.internal Ready <none> 8m3s v1.2.3-eks-1234567 192.0.2.0 <none> Amazon Linux 2 1.23.456-789.012.amzn2.x86_64 containerd://1.2.3 fargate-ip-192-0-2-1.region-code.compute.internal Ready <none> 7m30s v1.2.3-eks-1234567 192-0-2-1 <none> Amazon Linux 2 1.23.456-789.012.amzn2.x86_64 containerd://1.2.3
    Managed nodes – Linux
    NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME ip-192-0-2-0.region-code.compute.internal Ready <none> 6m7s v1.2.3-eks-1234567 192.0.2.0 192.0.2.2 Amazon Linux 2 1.23.456-789.012.amzn2.x86_64 containerd://1.2.3 ip-192-0-2-1.region-code.compute.internal Ready <none> 6m4s v1.2.3-eks-1234567 192.0.2.1 192.0.2.3 Amazon Linux 2 1.23.456-789.012.amzn2.x86_64 containerd://1.2.3

    출력에 표시되는 항목에 대한 자세한 내용은 Kubernetes 리소스 보기 섹션을 참조하세요.

  2. 클러스터에서 실행 중인 워크로드를 확인합니다.

    kubectl get pods -A -o wide

    예제 출력은 다음과 같습니다.

    Fargate – Linux
    NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES kube-system coredns-1234567890-abcde 1/1 Running 0 18m 192.0.2.0 fargate-ip-192-0-2-0.region-code.compute.internal <none> <none> kube-system coredns-1234567890-12345 1/1 Running 0 18m 192.0.2.1 fargate-ip-192-0-2-1.region-code.compute.internal <none> <none>
    Managed nodes – Linux
    NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES kube-system aws-node-12345 1/1 Running 0 7m43s 192.0.2.1 ip-192-0-2-1.region-code.compute.internal <none> <none> kube-system aws-node-67890 1/1 Running 0 7m46s 192.0.2.0 ip-192-0-2-0.region-code.compute.internal <none> <none> kube-system coredns-1234567890-abcde 1/1 Running 0 14m 192.0.2.3 ip-192-0-2-3.region-code.compute.internal <none> <none> kube-system coredns-1234567890-12345 1/1 Running 0 14m 192.0.2.4 ip-192-0-2-4.region-code.compute.internal <none> <none> kube-system kube-proxy-12345 1/1 Running 0 7m46s 192.0.2.0 ip-192-0-2-0.region-code.compute.internal <none> <none> kube-system kube-proxy-67890 1/1 Running 0 7m43s 192.0.2.1 ip-192-0-2-1.region-code.compute.internal <none> <none>

    출력에 표시되는 항목에 대한 자세한 내용은 Kubernetes 리소스 보기 섹션을 참조하세요.

3단계: 클러스터 및 노드 삭제

이 자습서용으로 생성한 클러스터와 노드의 사용을 끝낸 후에는 다음 명령으로 클러스터와 노드를 삭제하여 정리해야 합니다. 정리하기 전에 이 클러스터로 추가 작업을 수행하려면 다음 단계 섹션을 참조하세요.

eksctl delete cluster --name my-cluster --region region-code

다음 단계

다음은 클러스터의 기능을 확장하는 데 도움이 되는 설명서 주제입니다.