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 섹션을 참조하세요.

Prerequisites

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

  • kubectl - Kubernetes 클러스터 작업을 위한 명령줄 도구입니다. 이 가이드에서는 버전 1.21 이상을 사용해야 합니다. 자세한 내용은 kubectl 설치 섹션을 참조하세요.

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

클러스터 및 노드를 생성합니다.

중요

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

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

  • Fargate – Linux - AWS Fargate에서 Linux 애플리케이션을 실행하려는 경우 이 노드 유형을 선택합니다.

  • 관리형 노드 — Linux - Amazon EC2 인스턴스에서 Amazon Linux 애플리케이션을 실행하려면 이 노드 유형을 선택합니다. 이 가이드에서는 다루지 않지만 Windows 자체 관리형Bottlerocket 노드를 클러스터에 추가할 수도 있습니다. 모든 워크로드에서 Windows에서 실행되는 경우에도 클러스터에는 하나 이상의 Linux 노드가 포함되어 있어야 합니다.

클러스터를 생성하는 데 사용하려는 노드 유형이 있는 탭을 선택합니다.

Fargate – Linux

Fargate Linux 노드를 사용하여 클러스터를 생성하려면

  1. 다음 명령을 사용하여 AWS Fargate 프로필포드 실행 역할로 Amazon EKS 클러스터를 생성합니다. my-cluster를 사용자의 고유한 값으로 교체합니다. 모든 Amazon EKS 지원 리전에 클러스터를 생성할 수 있지만, 이 자습서에서는 미국 서부(오레곤) us-west-2에 생성합니다.

    eksctl create cluster \ --name my-cluster \ --region us-west-2 \ --fargate

    이전 명령은 주로 기본 설정을 사용하여 클러스터 및 Fargate 프로필을 생성합니다. 생성이 완료되면 AWS CloudFormation 콘솔에서 eksctl-<my-cluster>-cluster라는 스택을 보면서 생성된 모든 리소스를 검토할 수 있습니다. 모든 설정 및 옵션 목록을 보려면 eksctl create cluster -h를 입력합니다. 모든 설정과 옵션에 대한 자세한 내용은 eksctl에서 클러스터 생성 및 관리 섹션을 참조하세요.

    결과

    클러스터 및 Fargate 프로필이 생성되면 여러 줄의 출력이 표시됩니다. 생성하는 데 몇 분 정도 걸립니다. 출력의 마지막 줄은 다음 예제와 유사합니다.

    ... [✓] EKS cluster "my-cluster" in "us-west-2" region is ready

    노드가 클러스터에 조인하지 못한 경우 문제 해결 가이드의 노드가 클러스터 조인에 실패 섹션을 참조하세요.

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

  2. 구성을 테스트합니다.

    kubectl get svc

    결과

    NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE svc/kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 1m
Managed nodes – Linux

Amazon EC2 Linux 관리형 노드를 사용하여 클러스터를 생성하려면 다음을 수행합니다.

클러스터 및 Linux 관리형 노드 그룹을 생성합니다. my-cluster를 사용자의 고유한 값으로 교체합니다.

<your-key>(<> 포함)를 기존 키 페어의 이름으로 바꿉니다. 키 페어가 없는 경우 다음 명령을 사용하여 생성할 수 있습니다. 필요한 경우 us-west-2를 클러스터를 생성하는 리전으로 변경합니다. 반환 출력을 로컬 컴퓨터의 파일에 저장해야 합니다. 자세한 내용은 Linux 인스턴스용 Amazon EC2 사용 설명서에서 키 페어 생성 또는 가져오기 섹션을 참조하세요. 이 가이드에서는 키가 필요하지 않지만, 사용할 키는 노드 그룹을 생성할 경우에만 지정할 수 있습니다. 키를 지정하면 생성된 노드에 SSH로 연결할 수 있습니다. 이 명령을 실행하려면 AWS CLI 버전 2.2.22 이상 또는 1.20.6 이상이 필요합니다. 자세한 내용은 AWS Command Line Interface 사용 설명서에서 AWS CLI 설치, 업데이트 및 제거를 참조하세요.

aws ec2 create-key-pair --region us-west-2 --key-name myKeyPair

다음 명령을 사용하여 클러스터 및 노드를 생성합니다. 예제 값(<> 포함)을 사용자의 값으로 바꿉니다. 모든 Amazon EKS 지원 리전에 클러스터를 생성할 수 있지만, 이 자습서에서는 미국 서부(오레곤) us-west-2에 생성합니다.

eksctl create cluster \ --name my-cluster \ --region us-west-2 \ --with-oidc \ --ssh-access \ --ssh-public-key <your-key> \ --managed

이전 명령은 주로 기본 Amazon EKS 설정을 사용하는 노드가 있는 클러스터를 생성합니다. 생성된 모든 리소스를 보려면 AWS CloudFormation 콘솔(https://console.aws.amazon.com/cloudformation)에서 eksctl-<my-cluster>-cluster라는 스택을 살펴보세요. 모든 설정 및 옵션 목록을 보려면 eksctl create cluster -h를 입력합니다. 모든 설정과 옵션에 대한 자세한 내용은 eksctl에서 클러스터 생성 및 관리 섹션을 참조하세요.

결과

클러스터 및 노드가 생성되면 여러 줄의 출력이 표시됩니다. 클러스터 및 노드 생성에는 일반적으로 몇 분 정도 걸립니다. 출력의 마지막 줄은 다음 예제와 유사합니다.

... [✓] EKS cluster "my-cluster" in "us-west-2" region is ready

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

2단계: 리소스 보기

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

    kubectl get nodes -o wide

    Amazon EC2 노드 출력

    NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME ip-192-168-12-49.us-west-2.compute.internal Ready <none> 6m7s v1.18.9-eks-d1db3c 192.168.12.49 52.35.116.65 Amazon Linux 2 4.14.209-160.335.amzn2.x86_64 docker://19.3.6 ip-192-168-72-129.us-west-2.compute.internal Ready <none> 6m4s v1.18.9-eks-d1db3c 192.168.72.129 44.242.140.21 Amazon Linux 2 4.14.209-160.335.amzn2.x86_64 docker://19.3.6

    Fargate 노드 출력

    NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME fargate-ip-192-168-141-147.us-west-2.compute.internal Ready <none> 8m3s v1.18.8-eks-7c9bda 192.168.141.147 <none> Amazon Linux 2 4.14.209-160.335.amzn2.x86_64 containerd://1.3.2 fargate-ip-192-168-164-53.us-west-2.compute.internal Ready <none> 7m30s v1.18.8-eks-7c9bda 192.168.164.53 <none> Amazon Linux 2 4.14.209-160.335.amzn2.x86_64 containerd://1.3.2

    여기에 표시되는 항목에 대한 자세한 정보는 노드 보기 섹션을 참조하세요.

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

    kubectl get pods --all-namespaces -o wide

    Amazon EC2 노드 출력

    NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES kube-system aws-node-6ctpm 1/1 Running 0 7m43s 192.168.72.129 ip-192-168-72-129.us-west-2.compute.internal <none> <none> kube-system aws-node-cbntg 1/1 Running 0 7m46s 192.168.12.49 ip-192-168-12-49.us-west-2.compute.internal <none> <none> kube-system coredns-559b5db75d-26t47 1/1 Running 0 14m 192.168.78.81 ip-192-168-72-129.us-west-2.compute.internal <none> <none> kube-system coredns-559b5db75d-9rvnk 1/1 Running 0 14m 192.168.29.248 ip-192-168-12-49.us-west-2.compute.internal <none> <none> kube-system kube-proxy-l8pbd 1/1 Running 0 7m46s 192.168.12.49 ip-192-168-12-49.us-west-2.compute.internal <none> <none> kube-system kube-proxy-zh85h 1/1 Running 0 7m43s 192.168.72.129 ip-192-168-72-129.us-west-2.compute.internal <none> <none>

    Fargate 출력

    NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES kube-system coredns-69dfb8f894-9z95l 1/1 Running 0 18m 192.168.164.53 fargate-ip-192-168-164-53.us-west-2.compute.internal <none> <none> kube-system coredns-69dfb8f894-c8v66 1/1 Running 0 18m 192.168.141.147 fargate-ip-192-168-141-147.us-west-2.compute.internal <none> <none>

    여기에 표시되는 항목에 대한 자세한 정보는 워크로드 보기 섹션을 참조하세요.

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

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

클러스터와 노드를 삭제합니다.

eksctl delete cluster --name my-cluster --region us-west-2

다음 단계

정상 작동하는 Amazon EKS 클러스터와 노드가 있으므로, Kubernetes 애드온을 설치하고 클러스터에 애플리케이션 배포를 시작할 준비가 되었습니다. 다음은 클러스터의 기능을 확장하는 데 도움이 되는 설명서 주제입니다.