안녕하세요, heyjee 입니다 .

이번에는 AWS 대시보드에서 EKS 클러스터 및 노드를 직접 생성해보기로 하겠습니다 .

 

그전에, 다음의 네 가지 tool 을 install 및 apply 가 필요합니다 .

 > AWS CLI
 > aws configure 을 통한 IAM
 > kubectl
 > eksctl

 

여기서 kubectl 과 eksctl 의 차이점은 ...

 kubectl : k8s 클러스터 작업을 위한 명령줄 tool
 eksctl : 개벌 태스크를 자동화하는 EKS 클러스터를 사용하기 위한 명령줄 tool

 

install 및 apply 가 완료되었다면, 본격적으로 생성해보도록 하겠습니다 .

 

1. EKS 클러스터용 Role 을 생성합니다 .

2. EKS 노드그룹용 Role 을 생성합니다 .

 

3. 심플한 VPC 환경 구성을 위해 CloudFormation 으로 스택을 생성합니다 .

 

4. 본격적으로 다음과 같이 EKS 클러스터를 구성합니다 .

(이 때, 서브넷은 2개의 private subnet 으로 설정합니다 .)

 

5. 생성 및 활성화된 클러스터를 확인합니다 . 

 

6. (AWS CLI, kubectl 사전 Install 후)

'kubectl get pod --all-namespaces' 명령어를 통해 클러스터가 생성되었는지 확인합니다 .

> 현재 생성되어 있는 coredns ~ 이름의 클러스터 2개의 status 가 Pending (보류중) 상태입니다 .
이것은 클러스터만 생성했을 뿐, 아직 그 안에 노드를 생성하지 않았기 때문입니다 .
따라서, 노드도 생성을 해주어야 합니다 .

 

 

7. 클러스터 안에 들어갈 노드 그룹을 구성합니다 .

(마찬가지로, 서브넷은 2개의 private subnet 으로 설정합니다 .)

8. 원하는 개수만큼의 노드가 생성 및 활성화되었는지 확인합니다 . 

 

9. 다시 'kubectl get pod --all-namespaces' 명령어를 통해 노드가 생성되었는지 확인합니다 .

kube-system 네임스페이스 안에 aws-node ~ 이름의 노드 2개와 각 노드에 대한 kube-proxy Static Pod 가 생성되어 클러스터의 status 가 Running 상태로 바뀐 것을 확인할 수 있습니다 .

이렇게 생성된 해당 노드에 ssh 접속하여 각종 k8s 리소스 생성을 통한 아키텍처 구축 진행이 가능합니다 .

 

여기까지가 AWS 대시보드를 통한 단일 클러스터 생성 과정이었습니다 .

당연한 말이겠지만, 단일 뿐만 아니라 멀티 클러스터 생성 및 구축도 가능합니다 .

(예를 들면, 배포 환경 setting 시, DEV / STG/ PRD 각각에 서로 다른 클러스터로 구축)

 

한 가지 또 말씀드리고 싶은 것은, 맨 위에서 언급한 eksctl 을 설치했다면 해당 명령어에 의한 imperative command 방식으로 일련의 작업이 가능합니다 . 실무에서는 eksctl 을 통해 구축 작업이 이루어진다고 선배님께서 말씀해주시기도 하셨네요 ~

그래서 !!! 다음 3편에서는 eksctl 명령어를 통한 기본 구축을 한 번 해보도록 하겠습니다 .

 

혹시 수정이 되어야 할 부분이 있다면 얼마든지 코멘트 대환영입니다 . 감사합니다 :)

'AWS' 카테고리의 다른 글

1. What is EKS (Elastic Kubernetes Service) ?  (0) 2021.11.27

안녕하세요, heyjee 입니다 .

k8s 를 공부하면서 이런 생각을 해봤습니다 .

'아키텍처가 작으면 괜찮겠지만, 만약 전사적으로 큰 규모의 아키텍처라면 클러스터 및 노드를 포함한 각종 리소스를 일일이 생성하고 관리하기가 매우 까다롭고 번거로울 수 있을 것 같다 .'

그래서 알아보니 AWS 에서 EKS 라는 서비스를 제공한다고 해서 Intro 부터 알아보기로 했습니다 .

 

먼저, EKS 를 다음과 같이 정리할 수 있습니다 .

 EKS = Elastic Kubernetes Service

 > k8s 를 실행하는데 사용할 수 있는 관리형 서비스

 > AWS 의 여러 가용 영역 (Availability Zone) 에 걸쳐 k8s 에서 마스터 노드라 할 수 있는 control plane 을 실행하고 그 크기를 조정해서 높은 가용성을 보장

 > 컨테이너에 삽입되는 이미지에 대해 ECR, ELB, IAM, VPC 기능을 포함한 Application 에 대한 확장성과 보안까지 제공

 

위에서 control plane 이라는 일종의 마스터 노드?같은 이 친구에 대해서 좀 더 알아보면...

 EKS control plane 아키텍처

 > 각 클러스터에 대해 단일 테넌트의 k8s control plane 을 실행

 > control plane 은 2개 이상의 API 서버 인스턴스와 리전 내 3개의 가용 영역에서 실행되는 3개의 etcd 인스턴스로 구성

 > control plane 인프라는 클러스터 또는 AWS 계정간에 공유되지 않음 (각 클러스터마다 독립적)

 > EKS 는 VPC 네트워크 정책을 사용하여 control plane 구성 요소간의 트래픽을 단일 클러스터 내로 제한
 따라서, 클러스터에 대한 control plane 구성 요소는 k8s RBAC (Role Based Access Control) 정책에 따라 권한을 부여받지 않은 경우, 다른 클러스터 또는 다른 AWS 계정의 통신을 보거나 수신 불가 !

 

이러한 특징을 가진 EKS 의 Workflow 는 다음과 같이 총 4단계로 볼 수 있습니다 .

 

EKS Workflow

 1. Provision an EKS cluster : AWS Management Console, CLI, SDK 를 사용하여 EKS 생성
 2. Deploy compute : 관리형 / 자체 관리형 EC2 노드를 실행하거나 워크로드를 Fargate 에 배포
 3. Connect to EKS : 클러스터가 준비되면, 원하는 k8s 도구를 구성해 클러스터와 통신 가능
 4. Run Kubernetes application : EKS 클러스터에 워크로드 배포, 관리

 

다음 2편에서는 실제 AWS 대시보드에서 EKS 클러스터 및 노드를 생성하는 방법을 알아보기로 하겠습니다 .

 

혹시 수정이 되어야 할 부분이 있다면 얼마든지 코멘트 대환영입니다 . 감사합니다 :)

'AWS' 카테고리의 다른 글

2. Create EKS Cluster & Node with AWS Dashboard  (0) 2021.11.27

+ Recent posts