BLOG

Amazon EKS 정식 출시
작성일: 2018-06-21

Kubernetes용 Amazon Elastic 컨테이너 서비스를 발표했고 고객들을 초대하여 re:Invent 2017 동안 프리뷰를 살펴보도록 했습니다. 오늘 Amazon EKS가 생산 양식에 사용 가능하다는 것을 알려 드릴 수 있게 되어 기쁩니다. Kubernetes 담당자로 인증되었으며 기존 Kubernetes 워크 로드를 실행할 준비가 되었습니다.

 

Cloud Native Computing Foundation최신 데이터를 기반으로, 모든 기업의 57%가 AWS를 선택하여 Kubernetes를 위한 선도적인 환경을 제공하고 있습니다. 고객들은 Kubernetes가 IT 전략의 핵심이며 이미 AWS에서 매주 수억개의 컨테이너를 실행하고 있다고 말합니다. Amazon EKS는 Kubernetes 클러스터를 구축, 보호, 운영 및 유지 관리하는 과정을 간소화하고, 처음부터 Kubernetes 클러스터를 설정하는 대신 애플리케이션 구축에 집중하려는 조직에게 컨테이너 기반 컴퓨팅의 이점을 제공합니다.

 

AWS 내부

 

Amazon EKS는 AWS 클라우드에서 실행된다는 사실을 활용하여 많은 AWS 서비스와 기능을 활용하는 동시에 이미 알고 있는 Kubernetes에 대한 모든 정보가 적용 가능하고 유용합니다. 개요는 다음과 같습니다.

 

Multi-AZ-Kubernetes 제어부(API 서버 및 etcd 데이터베이스)는 세 개의 AWS 가용 영역에서 고가용성 방식으로 실행됩니다. 제어부 노드는 모니터링되고 장애가 발생할 경우 교체되며 자동으로 패치되고 업데이트됩니다.

 

 

IAM 통합–Amazon EKS는 인증에 Heptio Authenticator를 사용합니다. IAM 역할을 사용하여 다른 자격 증명을 관리할 때 발생하는 번거로움을 피할 수 있습니다.

 

로드 밸런서 지원–AWS 네트워크 로드 밸런서, AWS 애플리케이션 로드 밸런서 또는 원래(기존) Elastic 로드 밸런서를 사용하여 작업자 노드로 트래픽을 라우팅 할 수 있습니다.

 

EBS–Kubernetes PersistentVolumes (클러스터 스토리지에 사용됨)는 Amazon EBS(Amazon Elastic Block Store)볼륨으로 구현됩니다.

라우트 53외부 DNS 프로젝트를 사용하면 라우트 53 DNS 레코드를 통해 Kubernetes 클러스터의 서비스에 액세스 할 수 있습니다. 이를 통해 서비스 검색을 간소화하고 로드 밸런싱을 지원합니다.

 

오토 스케일링–클러스터는 로드 변화에 따라 오토 스케일링, 확장 및 축소 기능을 사용할 수 있습니다.

 

컨테이너 인터페이스–Kubernetes용 컨테이너 네트워크 인터페이스Elastic 네트워크 인터페이스를 사용하여 Kubernetes Pods에 보조 IP 주소를 제공합니다.

 

이러한 기능에 대한 자세한 내용은 Kubernetes용 Amazon Elastic 컨테이너 서비스에 대해 참조하십시오.

Amazon EKS는 공유 책임 모델을 중심으로 구축되며, 제어부 노드는 AWS에서 관리하고 작업자 노드를 실행합니다. 따라서 고가용성을 제공하고 기존 워크 로드를 EKS로 이동하는 프로세스를 간소화할 수 있습니다. 다음은 매우 개괄적인 개요입니다.

 

 

Amazon EKS 클러스터 생성하기

클러스터를 생성하기 위해 제어부를 프로비저닝하고, 작업자 클러스터를 프로비저닝 및 연결하고, 컨테이너를 시작합니다. 아래의 예에서는 작업자 클러스터에 대한 새 VPC를 생성하지만 원하는 서브넷에 Kubernetes 클러스터 이름이 태그 되어 있는 경우 기존 VPC를 사용할 수도 있습니다.

Amazon EKS 시작 안내서의 지침에 따라 IAM 역할을 만드는 것으로 시작합니다. Kubernetes는 이 역할을 가정하고 이 역할을 사용하여 Elastic 로드 밸런서와 같은 AWS 리소스를 생성합니다. 이 역할은 모든 클러스터에 사용할 수 있습니다. IAM 콘솔을 열고, 역할 생성을 클릭하고, EKS를 선택하고, 다음:허가를 클릭합니다.

 

 

정책이 좋아 보이므로 다음:리뷰를 클릭합니다.

 

 

역할 이름을 입력하고 역할 생성을 클릭합니다.

 

 

그런 다음 시작 가이드의 샘플 템플릿을 사용하여 다음 매개 변수를 사용하여 VPC(Virtual Private Cloud)를 생성합니다.

 

 

템플릿은 서브넷이 세 개인 VPC와 필요한 모든 라우트 테이블, 게이트웨이 및 보안 그룹을 생성합니다.

 

 

ARN의 경우와 마찬가지로 나중에 보안 그룹의 ID가 필요합니다.

 

 

다음으로, 저는 kubectl 을 다운받아 Heptio Authenticator를 사용하도록 설정했습니다. Authenticator를 사용하면 Kubectl이 Kubernetes 클러스터에 액세스 할 때 IAM 인증을 사용할 수 있습니다. 다운로드 및 설정에 대한 지침은 시작 가이드에 나와 있으며 지침에 따라 수행합니다.

 

설정 프로세스를 완료하기 위해 다음과 같이 eks help을 실행하여 AWS 명령줄 인터페이스(CLI)의 최신 버전을 실행합니다(이전 버전을 실행하는 경우 eks 명령을 사용할 수 없습니다).

 

 

IAM 역할, VPC 및 도구를 모두 사용하여 첫번째 Amazon EKS 클러스터를 만들 준비가 되었습니다!

관리 권한이 있는 IAM 사용자(Heptio Authenticator의 작동 방식으로 인해 루트 자격 증명을 사용할 수 없음)를 사용하여 EKS 콘솔에 로그인하고 클러스터 생성을 클릭합니다.

 

 

VPC를 생성할 때 입력한 클러스터 이름(VPC를 생성할 때 입력한 이름과 일치해야 하며 이를 입력하는 이유는 Kubernetes가 서브넷 태깅에 의존하기 때문입니다)과 VPC를 위한 서브넷 ID 및 보안 그룹 ID을 입력하고 생성을 클릭합니다.

 

 

제어부 클러스터가 생성 상태에서 시작되고 10분 이내에 활성 상태로 전환됩니다.

 

 

이제 클러스터에 액세스 할 수 있도록 kubectl을 구성해야 합니다. 이 작업을 수행하기 전에 CLI를 사용하여 인증 기관 데이터를 검색해야 합니다.

 

$ aws eks describe-cluster –region us-west-2 –name jeff1 –query cluster.certificateAuthority.data

 

이 명령은 1분 내에 필요한 긴 데이터 문자열을 반환합니다.

또한 콘솔에서 클러스터 엔드포인트도 검색합니다.

 

 

CLI를 사용하여 엔드포인트를 검색할 수도 있습니다.

 

$ aws eks describe-cluster –region us-west-2 –name jeff1 –query cluster.endpoint

 

홈 디렉토리에 있는지 확인하고 하위 디렉토리에 .kube 를 생성한 다음 파일 config-jeff1을 생성합니다. 그런 다음 편집기에서 config-jeff1을 열고 시작 가이드에서 템플릿 구성 파일을 복사한 다음 클러스터 엔드포인트, 인증서 및 클러스터 이름을 완료합니다. 제 파일은 다음과 같습니다.

 

apiVersion: v1

clusters:

– cluster:

server: https://FDA1964D96C9EEF2B76684C103F31C67.sk1.us-west-2.eks.amazonaws.com

certificate-authority-data: “….”

name: kubernetes

contexts:

– context:

cluster: kubernetes

user: aws

name: aws

current-context: aws

kind: Config

preferences: {}

users:

– name: aws

user:

exec:

apiVersion: client.authentication.k8s.io/v1alpha1

command: heptio-authenticator-aws

args:

– “token”

– “-i”

– “jeff1”

 

Kubectl을 테스트하기 전에 클러스터를 생성하기 위해 콘솔에 로그인했을 때 사용했던 것과 동일한 IAM 사용자를 사용하도록 CLI가 구성되어 있는지 확인해야 합니다.

 

 

이제 간단한 테스트를 실행하여 모든 것이 예상대로 작동하는지 확인할 수 있습니다.

 

 

이 시점에서 제어부 VPC와 Kubernetes 제어부를 설정했습니다. 작업자 노드(EC2 인스턴스)를 생성할 준비가 되었습니다. 다시 한번, 이 작업은 CloudFormation 템플릿을 사용하여 수행됩니다.

 

 

스택은 몇 분 내에 만들어지며 IAM 역할, 보안 그룹 및 오토 스케일링을 설정합니다. NodeInstanceRole의 ARN이 필요합니다.

 

 

이제 작업자 노드가 클러스터에 가입하는 방법을 알 수 있도록 구성기 맵을 설정해야 합니다. 지도를 다운로드하고 스택에서 NodeInstanceRole의 ARN을 추가한 다음 구성을 적용합니다.

 

$ curl -O https://amazon-eks.s3-us-west-2.amazonaws.com/1.10.3/2018-06-05/aws-auth-cm.yaml

% Total % Received % Xferd Average Speed Time Time Time Current

Dload Upload Total Spent Left Speed

100 282 100 282 0 0 347 0 —:–:— –:—:– —:–:— 347

$ vim aws-auth-cm.yaml

$ kubectl apply -f aws-auth-cm.yaml

configmap “aws-auth” created

 

그런 다음 노드가 준비되었는지 확인합니다.

 

 

게스트 북 샘플 실행하기

 

Kubernetes 클러스터가 모두 설정되어 있으며 게스트 북 애플리케이션을 사용하여 테스트할 수 있습니다. Kubernetes 복제 컨트롤러 및 서비스를 생성합니다.

 

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

replicationcontroller “redis-master” created

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

service “redis-master” created

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

replicationcontroller “redis-slave” created

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

service “redis-slave” created

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

replicationcontroller “guestbook” created

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

service “guestbook” created

 

실행 중인 서비스를 나열하고 외부 IP 주소 및 포트를 캡처합니다.

 

 

웹 브라우저에서 다음 주소를 방문하십시오.

 

 

알아야 할 사항

 

우리는 Kubernetes repoCNI 플러그인, Heptio AWS Authenticator, Virtual Kubelet 같은 프로젝트에 업스트림을 기여합니다. 현재 Kubernetes의 경험이 있는 시스템 개발 엔지니어, 개발 엔지니어, 제품 관리자 및 솔루션 설계자를 찾고 있습니다. 자세한 내용은 오픈 포지션의 전체 목록을 참조하십시오.

 

Amazon EKS는 오늘날 미국 동부(북 버지니아)와 미국 서부(오리건) 지역에서 이용 가능하며 곧 다른 지역으로 확대될 예정입니다. 우리는 상세한 로드맵을 가지고 있으며 올해 추가적인 많은 기능들을 발표할 계획입니다.

 

사용자 계정에서 실행되는 리소스에 대해 EKS 제어부와 일반적인 EC2, EBS 및 로드 밸런싱 가격으로 시간당 0.20달러를 지불합니다. 자세한 내용은 EKS 가격 책정 페이지를 참조하십시오.

 

원문 URL: https://aws.amazon.com/ko/blogs/aws/amazon-eks-now-generally-available/

** 메가존 TechBlog는 AWS BLOG 영문 게재글중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 게재하고 있습니다. 추가로 번역및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.