강의와 책과 스터디

강의) EKS. AWS EKS 서비스 설명

우당탕 오리의 개발모험 2024. 6. 26. 09:45

강의: 인프런 > CloudNet@와 함께하는 Amazon EKS 기본 강의


 

Kubernetes 관리형 서비스 종류

Amazon AWS의 EKS

Microsoft Azure의 AKS

Google GCP의 GKE

 

Amazon EKS 특징

Elastic Kubernetes Service

여러 가용영역에서 쿠버네티스 컨트롤-플랜을 실행 & 워커노드 실행 => 고가용성 확보 & 안정적 환경 구성

AWS의 다른 서비스와 통합 가능 => 확장성 & 보안성

- ECR : 컨테이너 이미지 저장소

- ELB : 부하 분산

- IAM : 보안 주체 관리 & 액세스 관리

- VPC : 노드 격리

최신버전 Kubernetes 사용 => 코드수정 없이 마이그레이션 쉽게 가능

- 보통 4-5개 마이너버전 제공

 

AWS EKS Cluster 배포 방법 종류

1. 관리 콘솔 : 관리 콘솔 WEB UI에서 작업

2. eksctl : 명령어로 작업 => 강의에서 주로 사용

3. IaC : CDK, CloudFormation, Terraform. 코드 기반으로 인프라를 정의해서 생성

 

EKS Control Plane 아키텍처

'AWS 관리형'으로 동작한다

사용자 계정이 아닌, AWS 시스템 계정에서 VPC가 생성된다.

클러스터를 생성하면 -> N개 가용영역에 각각 Control-Plane이 생성된다.

(API서버, 컨트롤러, 스케쥴러, ETCD 가 생성됨)

N개 가용영역을 관통해서 Auto Scaling Group 으로 관리한다.

 

EKS Data Plane 아키텍처

노드를 만들기 위한 데이터 플레인 컴포넌트가 동작?

(컨테이너 런타임, kubelet, kube-proxy 가 생성됨)

사용자 계정 산하로 VPC 생성된다.

워커노드-컨트롤플레인 간 통신을 위해 ENI를 통하는데, 이 때 서로 다른 어카운트의 서비스 끼리 연결이다.

이 것을 Cross Account ENI 이라고 한다.

 => kublelet In 워커노드 -[연결]-> CrossAccount ENI -[연결]-> API 서버 In 컨트롤플레인

 

데이터 플레인 노드를 구성하는 3가지 방식

  • 관리형 노드 그룹 : 최신 AMI 사용. AWS에서 지원하여 유지 & 버전 관리
  • 자체 관리형 노드 : 사용자 정의 AMI 사용. 사용자가 직접 유지 & 버전 관리
  • AWS Fargate : 사용자 직접 관리 X. 서버리스 환경에서 동작. 컨테이너 형태가 아닌, Micro VM 형태로 관리(GeustOS 사용). => so, 컨트롤플레인 뿐만 아니라, 데이터 플레인도 관리형으로 관리될 수 있다. <= ??? 이해 안 됨

 

EKS Cluster Endpoint Access (Endpoint 통신 흐름)

Amazon EKS Cluster Endpoint Access - Public : 3가지 트래픽 통신 흐름

  • API 서버 -> kubelet : API 서버 =[EKS owned ENI]-> kubelet 
  • kubelet -> API 서버 : kubelet -[Private Hosted Zone = EKS owned ENI]-> API 서버
  • 사용자 kubectl -> API 서버 : 사용자 kubectl -[인터넷-NLB public IP]-> API 서버

통신이 외부 노출되어 보안에 취약

내부 -> 외부 -> 내부로 절달 = 비효율적

 

Amazon EKS Cluster Endpoint Access - Public + Private : 3가지 트래픽 통신 흐름

  • API 서버 -> kubelet : API 서버 =[EKS owned ENI]-> kubelet
  • kubelet -> API 서버 : kubelet -[Private Hosted Zone]-> API 서버
  • 사용자 kubectl -> API 서버 : 사용자 kubectl -[인터넷-NLB public IP]-> API 서버

 

Amazon EKS Cluster Endpoint Access - Private : 3가지 트래픽 통신 흐름

  • API 서버 -> kubelet : API 서버 =[EKS owned ENI]-> kubelet
  • kubelet -> API 서버 : kubelet -[Private Hosted Zone]-> API 서버
  • 사용자 kubectl -> API 서버 : 사용자 kubectl -[Private Hosted Zone = EKS owned ENI]-> API 서버

모든 트래픽이 private 네트워크 내에서 호출 됨.

보안적 & 효율적

EKS 권장사항