Amazon EKS
사용 설명서

Amazon EKS 시작하기

이 시작 안내서는 Amazon EKS 시작하기에 필요한 모든 리소스를 생성하는 데 도움이 됩니다.

Amazon EKS 필수 조건

Amazon EKS 클러스터를 생성하기 전에 Kubernetes가 AWS 리소스 생성 시 수임할 수 있는 IAM 역할을 생성해야 합니다. 예를 들어 로드 밸런서가 생성될 때 Kubernetes는 역할을 수임하여 계정에 Elastic Load Balancing 로드 밸런서를 생성합니다. 한 번만 수행해야 하고 여러 EKS 클러스터에 대해 사용할 수 있습니다.

클러스터가 사용할 보안 그룹과 VPC를 생성해야 합니다. 여러 클러스터에 대해 VPC 및 보안 그룹을 사용할 수 있지만 더욱 효율적인 네트워크 격리를 제공하기 위해 각 EKS 클러스터에 별도의 VPC를 사용하는 것이 좋습니다.

이 단원은 또한 kubectl 바이너리를 설치하고 Amazon EKS를 사용하도록 구성하는 데 도움이 됩니다.

Amazon EKS 서비스 역할 생성

IAM 콘솔에서 Amazon EKS 서비스 역할을 만들려면

  1. https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

  2. [Roles]를 선택한 다음 [Create role]을 선택합니다.

  3. 서비스 목록에서 EKS를 선택한 다음 사용 사례에 대해 Allows Amazon EKS to manage your clusters on your behalf(EKS에서 사용자를 대신하여 클러스터를 관리하도록 허용)를 선택하고 Next: Permissions(다음: 권한)를 선택합니다.

  4. [Next: Review]를 선택합니다.

  5. Role name(역할 이름)에서 역할에 대한 고유 이름(예: eksServiceRole)을 입력한 다음 Create role(역할 생성)을 선택합니다.

Amazon EKS 클러스터 VPC 생성

클러스터 VPC를 생성하려면

  1. https://console.aws.amazon.com/cloudformation에서 AWS CloudFormation 콘솔을 엽니다.

  2. 탐색 모음에서 Amazon EKS를 지원하는 리전을 선택합니다.

    참고

    현재 다음 리전에서 Amazon EKS를 사용할 수 있습니다.

    • 미국 서부(오리건) (us-west-2)

    • 미국 동부(버지니아 북부) (us-east-1)

    • 미국 동부(오하이오)(us-east-2)

    • EU(아일랜드) (eu-west-1)

  3. [Create stack]을 선택합니다.

  4. 템플릿 선택에서 Amazon S3 템플릿 URL 지정을 선택합니다.

  5. 텍스트 영역에 다음 URL을 붙여넣고 다음을 선택합니다.

    https://amazon-eks.s3-us-west-2.amazonaws.com/cloudformation/2019-01-09/amazon-eks-vpc-sample.yaml
  6. Specify Details(세부 정보 지정) 페이지에서 파라미터를 입력하고 다음을 선택합니다.

    • 스택 이름: AWS CloudFormation 스택에 대한 스택 이름을 선택합니다. 예를 들어 eks-vpc로 사용할 수 있습니다.

    • VpcBlock: VPC에 대한 CIDR 범위를 선택합니다. 기본값을 유지할 수 있습니다.

    • Subnet01Block: 서브넷 1에 대한 CIDR 범위를 선택합니다. 기본값을 유지할 수 있습니다.

    • Subnet02Block: 서브넷 2에 대한 CIDR 범위를 선택합니다. 기본값을 유지할 수 있습니다.

    • Subnet03Block: 서브넷 3에 대한 CIDR 범위를 선택합니다. 기본값을 유지할 수 있습니다.

  7. (선택 사항) 옵션 페이지에서 스택 리소스에 태그를 지정합니다. [Next]를 선택합니다.

  8. [Review] 페이지에서 [Create]을 선택합니다.

  9. 스택이 생성된 후 콘솔에서 이를 선택하고 출력을 선택합니다.

  10. 생성된 보안 그룹에 대한 SecurityGroups 값을 기록합니다. 이 값은 EKS 클러스터를 생성할 때 필요합니다. 이 보안 그룹은 서브넷에 생성된 계정 간 탄력적 네트워크 인터페이스에 적용되고, 이를 통해 Amazon EKS 제어 플레인이 작업자 노드와 통신할 수 있습니다.

  11. 생성된 VPC의 VpcId를 기록합니다. 작업자 노드 그룹 템플릿을 시작할 때 필요합니다.

  12. 생성된 서브넷에 대한 SubnetIds를 기록합니다. EKS 클러스터를 생성할 때 필요합니다. 작업자 노드가 시작되는 서브넷입니다.

Amazon EKS에 대한 kubectl을 설치하고 구성합니다.

Kubernetes는 클러스터 API 서버와 통신하기 위해 kubectl이라는 명령줄 유틸리티를 사용합니다. 또한 Amazon EKS 클러스터는 Kubernetes 클러스터에 대한 IAM 인증을 위해 Kubernetes용 AWS IAM Authenticator를 필요로 합니다. Kubernetes 버전 1.10부터 Kubernetes용 AWS IAM Authenticator를 설치하고 인증에 사용할 kubectl 구성 파일을 사용하여 Amazon EKS를 사용할 kubectl 클라이언트를 구성할 수 있습니다.

Amazon EKS는 동일한 버전의 업스트림 aws-iam-authenticator 바이너리와 동일하게 사용할 수 있는 aws-iam-authenticator 바이너리를 판매합니다. 또는 go get을 사용하여 GitHub의 Kubernetes용 AWS IAM Authenticator 프로젝트에서 바이너리를 가져올 수 있습니다.

Amazon EKS용 kubectl를 설치하려면

  • 운영 체제에 따라 kubectl을 다운로드하고 설치하는 다양한 옵션이 있습니다.

    • kubectl 바이너리는 많은 운영 체제 패키지 관리자에 제공되며, 이 옵션은 대체로 수동 다운로드 및 설치 프로세스보다 훨씬 쉽습니다. 해당 운영 체제 또는 패키지 관리자에 대한 Kubernetes 문서의 지침에 따라 설치할 수 있습니다.

    • Amazon EKS는 동일한 버전의 업스트림 kubectl 바이너리와 동일하게 사용할 수 있는 kubectl 바이너리도 판매합니다. 운영 체제에 해당하는 Amazon EKS 판매 바이너리를 설치하려면 kubectl 설치를 참조하십시오.

Amazon EKS용 aws-iam-authenticator를 설치하려면

  1. Amazon S3에서 Amazon EKS 판매 aws-iam-authenticator 바이너리를 다운로드합니다.

    아래 명령을 사용하여 바이너리를 다운로드하고 플랫폼에 맞는 올바른 URL로 교체합니다. 아래 예는 MacOS 클라이언트에 해당됩니다.

    curl -o aws-iam-authenticator https://amazon-eks.s3-us-west-2.amazonaws.com/1.11.5/2018-12-06/bin/darwin/amd64/aws-iam-authenticator
  2. (선택 사항) 동일한 버킷 접두사에 제공된 SHA-256 합계를 사용하여 다운로드한 바이너리를 확인하고 플랫폼에 맞는 올바른 URL로 바꿉니다.

    1. 해당 시스템에 맞는 SHA-256 합계를 다운로드하십시오. 아래 예는 MacOS 클라이언트의 SHA-256 합계를 다운로드합니다.

      curl -o aws-iam-authenticator.sha256 https://amazon-eks.s3-us-west-2.amazonaws.com/1.11.5/2018-12-06/bin/darwin/amd64/aws-iam-authenticator.sha256
    2. 다운로드한 바이너리에 대해 SHA-256 합계를 확인합니다. 아래의 예제 openssl 명령은 MacOS 및 Ubuntu 클라이언트에 대해 테스트되었습니다. 해당 운영 체제에서 다른 명령이나 구문을 사용하여 SHA-256 합계를 검사할 수도 있습니다. 필요한 경우 해당 운영 체제 설명서를 참조하십시오.

      openssl sha1 -sha256 aws-iam-authenticator
    3. 명령 출력에 생성된 SHA-256 합계를 다운로드한 aws-iam-authenticator.sha256 파일과 비교합니다. 두 값이 일치해야 합니다.

  3. 바이너리에 실행 권한을 적용합니다.

    chmod +x ./aws-iam-authenticator
  4. 바이너리를 $PATH의 폴더에 복사합니다. $HOME/bin/aws-iam-authenticator를 생성하고 $PATH$HOME/bin로 시작하는 것이 좋습니다.

    cp ./aws-iam-authenticator $HOME/bin/aws-iam-authenticator && export PATH=$HOME/bin:$PATH
  5. PATH 환경 변수에 $HOME/bin을 추가합니다.

    • MacOS의 Bash 셸의 경우:

      echo 'export PATH=$HOME/bin:$PATH' >> ~/.bash_profile
    • Linux의 Bash 셸의 경우:

      echo 'export PATH=$HOME/bin:$PATH' >> ~/.bashrc
  6. aws-iam-authenticator 바이너리가 작동하는지 테스트합니다.

    aws-iam-authenticator help

(선택 사항) 최신 AWS CLI 다운로드 및 설치

AWS CLI가 Amazon EKS 사용을 명시적으로 요구하지는 않지만, update-kubeconfig 명령을 사용하면 kubeconfig 생성 프로세스가 크게 간소화됩니다. AWS CLI에서 Amazon EKS를 사용하려면 1.16.73 버전 이상의 AWS CLI가 설치되어 있어야 합니다. AWS CLI를 설치 또는 업그레이드하려면 AWS Command Line Interface 사용 설명서AWS 명령줄 인터페이스 설치를 참조하십시오.

중요

yum, apt-get 또는 Homebrew 등의 MacOS용 패키지 관리자는 흔히 AWS CLI의 여러 버전 뒤에 있습니다. 최신 버전이 설치되어 있는지 확인하려면 AWS Command Line Interface 사용 설명서AWS 명령줄 인터페이스 설치를 참조하십시오.

AWS CLI 버전은 다음 명령을 통해 확인할 수 있습니다.

aws --version

참고

시스템의 Python 버전이 Python 3 또는 Python 2.7.9 이상이어야 합니다. 그렇지 않은 경우 Amazon EKS에 대한 AWS CLI 호출과 함께 hostname doesn't match 오류가 표시됩니다. 자세한 내용은 Python 요청 FAQ의 What are "hostname doesn't match" errors?를 참조하십시오.

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

이제 Amazon EKS 클러스터를 생성할 수 있습니다.

중요

Amazon EKS 클러스터가 생성될 때 클러스터를 생성하는 IAM 엔터티(사용자 또는 역할)가 Kubernetes RBAC 권한 부여 표에 관리자(system:master 권한이 있음)로 추가됩니다. 처음에는 해당 IAM 사용자만이 kubectl을 사용하여 Kubernetes API를 호출할 수 있습니다. 자세한 정보는 클러스터의 사용자 또는 IAM 역할 관리 단원을 참조하십시오. 또한 Kubernetes용 AWS IAM Authenticator에서는 Go용 AWS SDK을 사용하여 Amazon EKS 클러스터에 대한 인증을 수행합니다. 콘솔을 사용하여 클러스터를 생성하는 경우 클러스터에서 kubectl 명령을 실행할 때 동일한 IAM 사용자 자격 증명이 AWS SDK 자격 증명 체인에 있어야 합니다.

AWS CLI를 설치하고 구성하면 사용자에 대한 IAM 자격 증명을 구성할 수 있습니다. 이 자격 증명은 Kubernetes용 AWS IAM Authenticator에 대해서도 유효합니다. AWS CLI가 사용자에 대해 적절하게 구성된 경우 Kubernetes용 AWS IAM Authenticator에서도 이 자격 증명을 찾을 수 있습니다. 자세한 정보는 AWS Command Line Interface 사용 설명서AWS CLI 구성을 참조하십시오.

콘솔을 사용하여 클러스터를 생성하려면

  1. Open the Amazon EKS console at https://console.aws.amazon.com/eks/home#/clusters.

  2. [Create cluster]를 선택합니다.

    참고

    IAM 사용자에게 관리 권한이 없는 경우 해당 사용자가 Amazon EKS API 작업을 호출하는 권한을 명시적으로 추가해야 합니다. 자세한 내용은 Amazon EKS IAM 정책 만들기 단원을 참조하십시오.

  3. 클러스터 생성 페이지에서 다음 필드를 입력한 다음 생성을 선택합니다.

    • Cluster name: 클러스터에 대해 고유한 이름입니다.

    • Kubernetes version: 클러스터에 대해 사용할 Kubernetes 버전. 기본적으로 최신 버전이 선택됩니다.

    • 역할 ARN: Amazon EKS 서비스 역할 생성 사용을 통해 생성한 IAM 역할을 선택합니다.

    • VPC: Amazon EKS 클러스터 VPC 생성 사용을 통해 생성한 VPC. 드롭다운 목록에서 VPC의 이름을 찾을 수 있습니다.

    • 서브넷: Amazon EKS 클러스터 VPC 생성 사용을 통해 생성된 AWS CloudFormation 출력의 SubnetIds 값(쉼표로 구분). 기본적으로 위 VPC에서 사용 가능한 서브넷이 사전 선택됩니다.

    • 보안 그룹: Amazon EKS 클러스터 VPC 생성 사용을 통해 생성된 AWS CloudFormation 출력의 SecurityGroups 값. 이 보안 그룹의 드롭다운 이름에는 ControlPlaneSecurityGroup이 있습니다.

      중요

      작업자 노드 AWS CloudFormation 템플릿이 여기서 사용자가 지정하는 보안 그룹을 수정하므로 클러스터 제어 플레인에 대한 전용 보안 그룹을 사용하는 것이 바람직합니다. 다른 리소스와 공유할 경우 이러한 리소스를 방해하거나 막을 수 있습니다.

    참고

    요청의 가용 영역 중 하나에 Amazon EKS 클러스터를 생성하는 데 충분한 용량이 없다는 오류가 표시될 수 있습니다. 이 경우 오류 출력에는 새 클러스터를 지원할 수 있는 가용 영역이 포함됩니다. 사용자 계정의 지원 가용 영역에 있는 2개 이상의 서브넷을 사용하여 클러스터를 다시 생성합니다.

  4. 클러스터 페이지에서 새로 생성한 클러스터의 이름을 선택하고 클러스터 정보를 확인합니다.

  5. Status(상태) 필드는 클러스터 프로비저닝 프로세스가 완료될 때까지 CREATING(생성 중)으로 표시됩니다.

AWS CLI를 사용하여 클러스터를 생성하려면

  1. 다음 명령을 사용하여 클러스터를 생성합니다. 클러스터 이름, Amazon EKS 서비스 역할 생성에서 생성한 Amazon EKS 서비스 역할의 Amazon 리소스 이름(ARN), Amazon EKS 클러스터 VPC 생성에서 생성한 VPC에 대한 서브넷 및 보안 그룹 ID를 교체합니다.

    aws eks --region region create-cluster --name devel --role-arn arn:aws:iam::111122223333:role/eks-service-role-AWSServiceRoleForAmazonEKS-EXAMPLEBKZRQR --resources-vpc-config subnetIds=subnet-a9189fe2,subnet-50432629,securityGroupIds=sg-f5c54184

    중요

    다음과 유사한 구문 오류를 수신한 경우 Amazon EKS용 AWS CLI의 미리 보기 버전을 사용할 수 있습니다. 퍼블릭 서비스가 시작된 이후 여러 명령의 구문이 변경되었습니다. AWS CLI 버전을 사용 가능한 최신 버전으로 업데이트하고 ~/.aws/models/eks에서 사용자 지정 서비스 모델 디렉터리를 반드시 삭제하십시오.

    aws: error: argument --cluster-name is required

    참고

    IAM 사용자에게 관리 권한이 없는 경우 해당 사용자가 Amazon EKS API 작업을 호출하는 권한을 명시적으로 추가해야 합니다. 자세한 내용은 Amazon EKS IAM 정책 만들기 단원을 참조하십시오.

    결과:

    { "cluster": { "name": "devel", "arn": "arn:aws:eks:us-west-2:111122223333:cluster/devel", "createdAt": 1527785885.159, "version": "1.10", "roleArn": "arn:aws:iam::111122223333:role/eks-service-role-AWSServiceRoleForAmazonEKS-AFNL4H8HB71F", "resourcesVpcConfig": { "subnetIds": [ "subnet-a9189fe2", "subnet-50432629" ], "securityGroupIds": [ "sg-f5c54184" ], "vpcId": "vpc-a54041dc" }, "status": "CREATING", "certificateAuthority": {} } }
  2. 클러스터 프로비저닝은 일반적으로 10분 미만이 걸립니다. 다음 명령을 사용하여 클러스터의 상태를 쿼리할 수 있습니다. 클러스터 상태가 ACTIVE인 경우 계속 진행할 수 있습니다.

    aws eks --region region describe-cluster --name devel --query cluster.status

2단계: Amazon EKS용 kubectl 구성

이 단원에서는 AWS CLI update-kubeconfig 명령으로 클러스터에 대한 kubeconfig 파일을 생성합니다. AWS CLI를 설치하고 싶지 않거나, kubeconfig를 수동으로 생성하거나 업데이트하려는 경우 Amazon EKS에 대한 kubeconfig 생성를 참조하십시오.

AWS CLI로 kubeconfig를 생성하려면

  1. 1.16.73 버전 이상의 AWS CLI가 설치되어 있어야 합니다. AWS CLI를 설치 또는 업그레이드하려면 AWS Command Line Interface 사용 설명서AWS 명령줄 인터페이스 설치를 참조하십시오.

    참고

    시스템의 Python 버전이 Python 3 또는 Python 2.7.9 이상이어야 합니다. 그렇지 않은 경우 Amazon EKS에 대한 AWS CLI 호출과 함께 hostname doesn't match 오류가 표시됩니다. 자세한 내용은 Python 요청 FAQ의 What are "hostname doesn't match" errors?를 참조하십시오.

    AWS CLI 버전은 다음 명령을 통해 확인할 수 있습니다.

    aws --version

    중요

    yum, apt-get 또는 Homebrew 등의 MacOS용 패키지 관리자는 흔히 AWS CLI의 여러 버전 뒤에 있습니다. 최신 버전이 설치되어 있는지 확인하려면 AWS Command Line Interface 사용 설명서AWS 명령줄 인터페이스 설치를 참조하십시오.

  2. AWS CLI update-kubeconfig 명령을 사용하여 클러스터에 대한 kubeconfig를 생성하거나 업데이트합니다.

    • 기본적으로, 구성 파일은 홈 디렉터리의 기본 kubeconfig 경로(.kube/config)에 생성되거나 해당 위치의 기존 kubeconfig와 병합됩니다. --kubeconfig 옵션을 사용하여 다른 경로를 지정할 수 있습니다.

    • --role-arn 옵션으로 IAM 역할 ARN을 지정하면 kubectl 명령을 실행할 때 인증에 사용할 수 있습니다. 그렇지 않으면 기본 AWS CLI 또는 SDK 자격 증명 체인의 IAM 엔터티가 사용됩니다. aws sts get-caller-identity 명령을 실행하여 기본 AWS CLI 또는 SDK ID를 확인할 수 있습니다.

    • 자세한 내용은 aws eks update-kubeconfig help 명령의 도움말 페이지 또는 AWS CLI Command Referenceupdate-kubeconfig를 참조하십시오.

    aws eks --region region update-kubeconfig --name cluster_name
  3. 구성을 테스트합니다.

    kubectl get svc

    참고

    "aws-iam-authenticator": executable file not found in $PATH 오류가 표시되는 경우 Amazon EKS에 대해 kubectl이 구성되지 않았습니다. 자세한 내용은 단원을 참조하십시오.

    결과:

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

3단계: Amazon EKS 작업자 노드 시작 및 구성

VPC 및 Kubernetes 제어 플레인이 생성되었으므로 작업자 노드를 시작 및 구성할 수 있습니다.

중요

Amazon EKS 작업자 노드는 표준 Amazon EC2 인스턴스이고, 일반 Amazon EC2 온디맨드 인스턴스 가격을 기반으로 비용이 청구됩니다. 자세한 내용은 Amazon EC2 요금 단원을 참조하십시오.

작업자 노드를 시작하려면

  1. 클러스터 상태가 ACTIVE가 되기를 기다립니다. 클러스터가 활성화되기 전에 작업자 노드를 시작하면 작업자 노드가 클러스터에 등록되지 않고 작업자 노드를 다시 시작해야 합니다.

  2. https://console.aws.amazon.com/cloudformation에서 AWS CloudFormation 콘솔을 엽니다.

  3. 탐색 모음에서 Amazon EKS를 지원하는 리전을 선택합니다.

    참고

    현재 다음 리전에서 Amazon EKS를 사용할 수 있습니다.

    • 미국 서부(오리건) (us-west-2)

    • 미국 동부(버지니아 북부) (us-east-1)

    • 미국 동부(오하이오)(us-east-2)

    • EU(아일랜드) (eu-west-1)

  4. [Create stack]을 선택합니다.

  5. 템플릿 선택에서 Amazon S3 템플릿 URL 지정을 선택합니다.

  6. 텍스트 영역에 다음 URL을 붙여넣고 다음을 선택합니다.

    https://amazon-eks.s3-us-west-2.amazonaws.com/cloudformation/2019-01-09/amazon-eks-nodegroup.yaml
  7. Specify Details(세부 정보 지정) 페이지에서 다음 파라미터를 입력하고 다음을 선택합니다.

    • 스택 이름: AWS CloudFormation 스택에 대한 스택 이름을 선택합니다. 예를 들어 <cluster-name>-worker-nodes로 사용할 수 있습니다.

    • ClusterName: Amazon EKS 클러스터 생성 시 사용할 이름을 입력합니다.

      중요

      이 이름은 1단계: Amazon EKS 클러스터 생성에서 사용하는 이름과 정확하게 일치해야 합니다. 그렇지 않은 경우 작업자 노드가 클러스터에 조인할 수 없습니다.

    • ClusterControlPlaneSecurityGroup: Amazon EKS 클러스터 VPC 생성 사용을 통해 생성된 AWS CloudFormation 출력의 SecurityGroups 값을 선택합니다.

    • NodeGroupName: 노드 그룹의 이름을 입력합니다. 이 이름은 나중에 작업자 노드에 대해 생성된 Auto Scaling 노드 그룹을 식별하는 데 사용할 수 있습니다.

    • NodeAutoScalingGroupMinSize: Auto Scaling 그룹이 축소할 수 있는 작업자 노드의 최소 노드 수를 입력합니다.

    • NodeAutoScalingGroupDesiredCapacity: 스택을 생성할 때 조정할 원하는 노드 수를 입력합니다.

    • NodeAutoScalingGroupMaxSize: Auto Scaling 그룹이 확장할 수 있는 작업자 노드의 최대 노드 수를 입력합니다.

    • NodeInstanceType: 작업자 노드에 대한 인스턴스 유형을 선택합니다.

    • NodeImageId: 리전에 대한 현재 Amazon EKS 작업자 노드 AMI ID를 입력합니다. 최신 Amazon EKS 최적화 AMI(GPU 지원 유무는 상이)의 AMI ID는 다음 표에 나와 있습니다.

      참고

      GPU 지원이 포함된 Amazon EKS 최적화 AMI는 P2 및 P3 인스턴스 유형만 지원합니다. 작업자 노드 AWS CloudFormation 템플릿에서 이러한 인스턴스 유형을 지정해야 합니다. 이 AMI에는 최종 사용자 라이선스 계약(EULA)이 필요한 타사 소프트웨어가 포함되므로 작업자 노드 그룹에서 AMI를 사용하려면 먼저 AWS Marketplace에서 AMI에 가입하고 EULA에 동의해야 합니다. AMI에 가입하려면 AWS Marketplace를 방문하십시오.

      리전 Amazon EKS 최적화 AMI (GPU 지원 포함)
      미국 서부(오리건) (us-west-2)
      미국 동부(버지니아 북부) (us-east-1)
      미국 동부(오하이오)(us-east-2)
      EU(아일랜드)(eu-west-1)

      참고

      Amazon EKS 작업자 노드 AMI는 Amazon Linux 2 기반입니다. Amazon Linux 보안 센터에서 Amazon Linux 2에 대한 보안 또는 프라이버시 이벤트를 추적하거나 관련 RSS 피드를 구독할 수 있습니다. 보안 및 프라이버시 이벤트에는 문제의 개요, 영향을 받는 패키지 및 인스턴스를 업데이트하여 문제를 해결하는 방법이 포함됩니다.

    • KeyName: 시작 이후 SSH를 사용하여 작업자 노드에 연결하는 데 사용할 수 있는 Amazon EC2 SSH 키 페어 이름을 입력합니다. Amazon EC2 키 페어가 아직 없는 경우 AWS Management 콘솔에서 새로 생성할 수 있습니다. 자세한 내용은 Linux 인스턴스용 Amazon EC2 사용 설명서Amazon EC2 키 페어를 참조하십시오.

      참고

      여기에 키 페어를 입력하지 않으면 AWS CloudFormation 스택이 생성되지 않습니다.

    • BootstrapArguments: 별도의 kubelet 인수와 같이 작업자 노드 부트스트랩 스크립트에 전달할 선택적 인수를 지정합니다. 자세한 내용은 https://github.com/awslabs/amazon-eks-ami/blob/master/files/bootstrap.sh에서 부트스트랩 스크립트 사용 정보를 참조하십시오.

    • VpcId: Amazon EKS 클러스터 VPC 생성에서 생성한 VPC에 대한 ID를 입력합니다.

    • Subnets: Amazon EKS 클러스터 VPC 생성에서 생성한 서브넷을 선택합니다.

  8. 옵션 페이지에서 스택 리소스에 태그를 지정할 수 있습니다. [Next]를 선택합니다.

  9. 검토 페이지에서 정보를 검토하고, 스택이 IAM 리소스를 생성할 수 있음을 인지한 다음 생성을 선택합니다.

  10. 스택이 생성된 후 콘솔에서 이를 선택하고 출력 탭을 선택합니다.

  11. 생성된 노드 그룹에 대해 NodeInstanceRole을 기록합니다. Amazon EKS 작업자 노드를 구성할 때 필요합니다.

작업자 노드가 클러스터에 조인하도록 하려면

  1. AWS Authenticator 구성 맵 다운로드, 편집 및 적용:

    1. 구성 맵을 다운로드합니다.

      curl -O https://amazon-eks.s3-us-west-2.amazonaws.com/cloudformation/2019-01-09/aws-auth-cm.yaml
    2. 즐겨찾는 텍스트 편집기에서 파일을 엽니다. 인스턴스 역할의 <ARN(비인스턴스 프로파일)> 조각을 이전 절차에서 기록한 NodeInstanceRole 값으로 교체하고 파일을 저장합니다.

      중요

      이 파일에서 어떠한 행도 수정하지 마십시오.

      apiVersion: v1 kind: ConfigMap metadata: name: aws-auth namespace: kube-system data: mapRoles: | - rolearn: <ARN of instance role (not instance profile)> username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodes
    3. 구성을 적용합니다. 이 명령을 완료하는 데 몇 분이 걸릴 수 있습니다.

      kubectl apply -f aws-auth-cm.yaml

      참고

      "aws-iam-authenticator": executable file not found in $PATH 오류가 표시되는 경우 Amazon EKS에 대해 kubectl이 구성되지 않았습니다. 자세한 내용은 단원을 참조하십시오.

  2. 노드의 상태를 확인하고 Ready 상태가 될 때까지 대기합니다.

    kubectl get nodes --watch
  3. (GPU 작업자만 해당) P2 또는 P3 인스턴스 유형과 GPU 지원이 포함된 Amazon EKS 최적화 AMI를 선택한 경우, 다음 명령을 이용해 클러스터에 Kubernetes용 NVIDIA 디바이스 플러그인을 데몬 세트로 적용해야 합니다.

    kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v1.11/nvidia-device-plugin.yml

4단계: 게스트 북 애플리케이션 시작

이 단원에서는 샘플 게스트 북 애플리케이션을 생성하고 새 클러스터를 테스트합니다.

참고

게스트 북 예제 설정에 대한 자세한 내용은 Kubernetes 문서의 https://github.com/kubernetes/examples/blob/master/guestbook-go/README.md를 참조하십시오.

게스트 북 애플리케이션을 생성하려면

  1. Redis 마스터 복제 컨트롤러를 생성합니다.

    kubectl apply -f https://raw.githubusercontent.com/kubernetes/examples/master/guestbook-go/redis-master-controller.json

    참고

    "aws-iam-authenticator": executable file not found in $PATH 오류가 표시되는 경우 Amazon EKS에 대해 kubectl이 구성되지 않았습니다. 자세한 내용은 단원을 참조하십시오.

    결과:

    replicationcontroller "redis-master" created
  2. Redis 마스터 서비스를 생성합니다.

    kubectl apply -f https://raw.githubusercontent.com/kubernetes/examples/master/guestbook-go/redis-master-service.json

    결과:

    service "redis-master" created
  3. Redis 슬레이브 복제 컨트롤러를 생성합니다.

    kubectl apply -f https://raw.githubusercontent.com/kubernetes/examples/master/guestbook-go/redis-slave-controller.json

    결과:

    replicationcontroller "redis-slave" created
  4. Redis 슬레이브 서비스를 생성합니다.

    kubectl apply -f https://raw.githubusercontent.com/kubernetes/examples/master/guestbook-go/redis-slave-service.json

    결과:

    service "redis-slave" created
  5. 게스트 북 복제 컨트롤러를 생성합니다.

    kubectl apply -f https://raw.githubusercontent.com/kubernetes/examples/master/guestbook-go/guestbook-controller.json

    결과:

    replicationcontroller "guestbook" created
  6. 게스트 북 서비스를 생성합니다.

    kubectl apply -f https://raw.githubusercontent.com/kubernetes/examples/master/guestbook-go/guestbook-service.json

    결과:

    service "guestbook" created
  7. guestbook 서비스의 External IP 열이 채워질 때까지 클러스터에서 서비스를 쿼리합니다.

    참고

    IP 주소가 사용 가능할 때까지 몇 분이 걸릴 수 있습니다.

    kubectl get services -o wide
  8. 외부 IP 주소가 이용 가능한 이후 웹 브라우저를 포트 3000의 해당 주소로 가리켜 게스트 북을 확인합니다. 예: http://a7a95c2b9e69711e7b1a3022fdcfdf2e-1985673473.us-west-2.elb.amazonaws.com:3000

    참고

    DNS가 전파되고 게스트 북이 표시되기까지 몇 분이 걸릴 수 있습니다.

    
                        게스트 북

    중요

    브라우저를 사용하여 외부 IP 주소에 연결할 수 없는 경우 사내 방화벽이 3000과 같은 비표준 포트를 차단하지 않도록 해야 합니다. 게스트 네트워크로 전환하여 확인할 수 있습니다.

5단계: 게스트 북 객체 정리

게스트 북 애플리케이션으로 실험을 완료한 이후 이에 대해 생성한 리소스를 정리해야 합니다. 다음 명령은 게스트 북 애플리케이션에 대한 모든 서비스 및 복제 컨트롤러를 삭제합니다.

kubectl delete rc/redis-master rc/redis-slave rc/guestbook svc/redis-master svc/redis-slave svc/guestbook

참고

"aws-iam-authenticator": executable file not found in $PATH 오류가 표시되는 경우 Amazon EKS에 대해 kubectl이 구성되지 않았습니다. 자세한 내용은 단원을 참조하십시오.

Amazon EKS 클러스터 사용을 완료한 후에는 추가 비용이 발생하지 않도록 클러스터 및 연결된 리소스를 삭제해야 합니다. 자세한 내용은 클러스터 삭제 단원을 참조하십시오.