[AWS]EKS란? EKS생성 하기(AWS Console, AWS CLI사용)
IT/AWS

[AWS]EKS란? EKS생성 하기(AWS Console, AWS CLI사용)

반응형

Amazon EKS 란?

Amazon EKS는 AWS에서 만든 관리형 쿠버네티스 서비스 입니다. EKS는 Elastic Kubernetes Service 의 약자 입니다.
EKS를 사용하면 쿠버네티스 마스터노드구성을 하지 않아도 AWS에서 관리해주기 때문에 되기 때문에 쉽고 빠르게 쿠버네티스를 이용할 수 있습니다.
다만 AWS의 ELB, VPC 등 EKS를 실행하기 위해 여러 서비스에 활용되기 때문에 AWS를 처음 사용하는 분들은 다소 생소 할수도 있습니다.
EKS는구축하기 위해서 EKS클러스터생성과 노드그룹을 생성해야 합니다.
오늘은 AWS콘솔과 AWS CLI 명령어를 혼합사용하여 EKS클러스터와 노드그룹을 생성해보겠습니다.

Amazon EKS 클러스터 생성하기

ekctl을 사용하지 않고 직접 EKS를 생성하기 위해서 AWS상에서 IAM유저,보안그룹, 네트워크 구성을 직접 해야합니다.
오늘 포스팅에서는 AWS상의 네트워크 구성에 대해서는 다루지 않습니다. 이미 네트워크 구성이 되어있다고 가정하고 진행하겠습니다. (AWS를 처음 사용하시는 분들은 따라오기 어려울 수 있습니다.)

EKS 클러스터 생성 위한 VPC 고려 사항

  1. 2개 이상의 subnet이 필요하며, 외부 서비스를 고려해야하기 때문에 반드시 public subnet, private subnet 각각이 필요합니다. * private-only 가 되면 안됩니다
  2. VPC는 DNS hostnames 과 DNS resolution을 모두 지원해야 합니다. 그렇지 않으면 작업자 노드가 클러스터에 등록되지 않습니다. AWS콘솔의 VPC에서 description탭에 아래 설정이 되어있는지 확인합니다.

  1. 도커는 Amazon EKS 클러스터의 172.17.0.0/16 CIDR 범위에서 실행됩니다. 클러스터의 VPC 서브넷이 이 범위와 겹치지 않게 해야 합니다. 그렇지 않으면 다음 오류가 발생합니다.
    Error: : error upgrading connection: error dialing backend: dial tcp 172.17.nn.nn:10250: getsockopt: no route to host

사전준비 ( vpc/subnet tag 설정, iam role 생성)

  • EKS 클러스터 생성 위한 VPC 태그(tag) 설정
  • KEY : kubernetes.io/cluster/<cluster-name> Value : shared
  • EKS 클러스터 생성 위한 subnet 태그(tag) 설정
  • KEY : kubernetes.io/cluster/<cluster-name> Value : shared
  • 내부(internal) ELB를 위한 Private subnet 태그(tag) 설정
  • KEY : kubernetes.io/role/internal-elb Value : 1
  • 외부(external) ELB를 위한 Private subnet 태그(tag) 설정
  • KEY : kubernetes.io/role/elb Value : 1
  • EKS용 security group 생성
  • inbound role : All traffic, 나자신의 security group id outbound role : All traffic, all
  • IAM role 생성
  • <권한> 1. AmazonEKSClusterPolicy 2. AmazonEKSServicePolicy 3. cloudwatch 의 write 4. EC2의 read, write, list 5. ELB, ELB v2의 Full access * 3,4,5번은 inline policy 로 별도 추가하였습니다.

EKS 생성

EKS생성을 AWS콘솔에서 클릭해가며 할 수도 있지만 아래와 같이 aws cli 명령어를 사용하면 아래 한줄로 간단히 생성 가능합니다.
다만 각 옵션값 --role-arn , subnetIds 은 내 설정에 맞게 해야 합니다.

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

AWS콘솔에서 확인해보니 잘 생성이 됩니다. 클러스터에 필요한 security group또한 자동으로 생성해주는군요.

EKS 노드그룹 생성

위에서 EKS클러스터를 생성해보았습니다. EKS클러스터를 생성하기전에 아래와 같은 것들을 진행했습니다.

  1. VPC, subnet 등 기본 네트워크 구성
  2. VPC tag, subnet tag 설정
  3. EKS 클러스터 서비스용 iam role 생성

오늘은 생성한 EKS클러스터에 노드 그룹을 생성하고 작업노드를 생성해보겠습니다.

사전 준비

  1. 노드 그룹용IAM role 생성
  2. AmazonEKSWorkerNodePolicy AmazonEC2ContainerRegistryReadOnly AmazonEKS_CNI_Policy
  3. key pair 생성

EKS 노드 그룹 생성

  • AWS콘솔에서 생성한 EKS 클러스터를 선택하여 EKS 노드 그룹을 생성을 클릭합니다.

  • 사전 준비에서 만든 IAM role을 선택, keypair 선택합니다.
  • subnet은 public을 제외 해줍니다. public을 제외하지 않으면 실제 생성될 작업노드들이 public에 생성됩니다.
  • security group은 만든 후에 수정하도록 하고 우선 all로 선택합니다.

AWS EKS Cluster 생성 3가지 방법 (eksctl 사용)

Managed NodeGroup + Managed AMI : https://kim-dragon.tistory.com/83
Managed NodeGroup with Launch Template + Managed AMI : https://kim-dragon.tistory.com/56
Managed NodeGroup with Launch Template + Custom AMI : https://kim-dragon.tistory.com/84

반응형