본문 바로가기
Kubernetes/AWS EKS Workshop Study

1주차 1편 Amanon EKS 소개

by 개발자 영만 2024. 3. 9.

Amazon EKS 란

  • Amazone EKS는 Kubernetes Control Plane을 설치, 운영 및 유지 관리할 필요가 없는 관리형 서비스
    • 여러 가용 영역에 걸쳐 Control Plane 인스턴스를 실행하여 고가용성 보장
    • 비정상 Control Plane 인스턴스를 자동으로 감지하고 교체
    • 자동화된 버전 업그레이드 및 패치 제공
  • Amazon EKS는 다양한 AWS Services와 연동하여 애플리케이션에 대한 확장성 및 보안 제공
    • Amazon ECR(Elastic Container Registry) - 컨테이너 이미지 저장소
    • AWS ELB(Elastic Load Balancing) - 부하 분산
    • AWS IAM - 인증과 권한
    • Amazon VPC - 격리된 네트워크
  • Amazon EKS는 오픈 소스 Kubernetes 소프트웨어의 최신 버전 실행
    • 커뮤니티에서 제공하는 플러그인과 도구 모두 사용 가능
    • Kubernetes 환경에서 실행 중인 애플리케이션과 완벽하게 호환 - Amazon EKS로 손쉽게 마이그레이션

 

Amazon EKS Kubernetes 버전

  • 커뮤니티에서 평균 4개월에 한 번씩 새로운 마이너 버전 릴리스
  • 마이너 버전 릴리스 후 14개월 동안 표준 지원
  • 표준 지원 종료되면 자동으로 다음 12개월 동안 추가 지원 시작
    • 시간당 추가 비용 발생
    • 특정 버전을 더 오래 사용 가능
버전 Amazon EKS 릴리스 표준 지원 종료 추가 지원 종료
1.29 2024년 1월 23일 2025년 3월 23일 2026년 3월 23일
1.28 2023년 9월 26일 2024년 11월 26일 2025년 11월 26일
1.27 2023년 5월 24일 2024년 7월 24일 2025년 7월 24일
1.26 2023년 4월 11일 2024년 6월 11일 2025년 6월 11일
1.25 2023년 2월 22일 2024년 5월 1일 2025년 5월 1일
1.24 2022년 11월 15일 2024년 1월 31일 2025년 1월 31일
1.23 2022년 8월 11일 2023년 10월 11일 2024년 10월 11일

 

Amazon EKS 아키텍처

Amazon EKS Cluster - Control Plane

https://awskoreamarketingasset.s3.amazonaws.com/2022%20Summit/pdf/T14S4_Amazon%20EKS%20%EB%A7%88%EC%9D%B4%EA%B7%B8%EB%A0%88%EC%9D%B4%EC%85%98%20%EC%9A%94%EC%A0%90%20%EC%A0%95%EB%A6%AC.pdf

  • Control Plane은 AWS에서 직접 관리 - AWS Managed VPC
  • Control Plane은 API 서버와 etcd 같은 Kubernetes를 제어하기 위한 소프트웨어를 실행하는 노드로 구성
    • API 서버 - 클러스터와의 모든 통신을 처리하는 엔드포인트
    • etcd - 클러스터의 상태와 구성 정보를 저장하는 데 사용하는 분산 key-value 저장소
    • 스케줄러 - 새로 생성된 컨테이너를 클러스터 내의 적절한 노에 할당하는 역할
    • 컨트롤러 - 클러스터의 상태를 감시하고 현재 상태와 원하는 상태가 일지 하도록 관리
  • 여러 가용 영역에 걸쳐 API 서버 노드와 etcd 노드를 프로비저닝 하고 부하 분산을 위해 Network Load Balancer(NLB) 사용

https://aws.github.io/aws-eks-best-practices/reliability/docs/controlplane/

  • Control Plane과의 통신을 위해 Cluster Endpoint 생성 - kubectl과 같은 Kubernetes 관리 도구 사용
  • Control Plane과 Data Plane 간 통신을 위해 Elastic Network Interface(ENI)를 프로비저닝
  • etcd에 저장된 모든 데이터와 연결된 Amazon EBS 볼륨은 AWS KMS를 사용하여 암호화

API Server 부하 분산을 위해 Network Load Balancer을 사용하는 이유
1. Control Plane의 API Server는 주로 단순한 TCP 연결만을 처리하므로, 이에 적합한 Network Load Balancer를 사용하는 것이 더 간편하고 효과적
2. 고성능 및 낮은 지연 시간, 높은 확장성을 제공. Control Plane에 대한 부하를 처리하는 데 효과적

 

Amazon EKS Node - Data Plane

https://awskoreamarketingasset.s3.amazonaws.com/2022%20Summit/pdf/T14S4_Amazon%20EKS%20%EB%A7%88%EC%9D%B4%EA%B7%B8%EB%A0%88%EC%9D%B4%EC%85%98%20%EC%9A%94%EC%A0%90%20%EC%A0%95%EB%A6%AC.pdf

  • Data Plane은 고객이 관리하는 애플리케이션이 실행되는 장소. 여러 개의 노드로 구성되어 있고 각 노드는 컨테이너화된 애플리케이션을 실행  
  • 각 노드의 구성 요소
    • Pod - 애플리케이션을 배포하는 최소 단위. 여러 개의 컨테이너로 구성된 파드도 있고 단일 컨테이너로 구성된 파드도 있다.
    • Container runtime - 컨테이너 실행을 담당하는 소프트웨어
    • kubelet - 각 노드에서 실행되는 에이전트.  API 서버로 부터 파드를 생성, 수정, 삭제하는 명령을 받아 해당 명령을 Container runtime에 전달. 파드가 스펙에 따라 건강하게 동작하는지 확인.
    • kube-proxy - 각 노드에서 실행되는 네트워크 프록시. 노드의 네트워크 규칙을 관리. 이 네트워크 규칙이 내부 네트워크 세션이나 클러스터 바깥에서 파드로 네트워크 통신을 할 수 있도록 해줌
  • 노드의 배포 옵션
    • 관리형 노드 그룹 - AWS가 관리하는 인스턴스로 구성된 노드 그룹을 사용. 인스턴스의 관리 및 스케일링은 AWS에 의해 자동으로 처리. 최신 EKS optimized AMI를 사용
    • 자체 관리형 노드 - 사용자가 직접 관리하는 인스턴스로 구성된 노드 그룹을 사용. 인스턴스의 관리, 스케일링, 업데이트, 패치 등을 모두 사용자가 담당
    • AWS Fargate - 사용자가 인스턴스를 프로비저닝하거나 관리할 필요 없이 컨테이너를 실행

 

Amazon EKS Cluster Endpoint

Public endpoint only

https://awskoreamarketingasset.s3.amazonaws.com/2022%20Summit/pdf/T14S4_Amazon%20EKS%20%EB%A7%88%EC%9D%B4%EA%B7%B8%EB%A0%88%EC%9D%B4%EC%85%98%20%EC%9A%94%EC%A0%90%20%EC%A0%95%EB%A6%AC.pdf
https://aws.amazon.com/ko/blogs/containers/de-mystifying-cluster-networking-for-amazon-eks-worker-nodes/

  • Customer VPC 외부로부터 Cluster endpoint 접근 가능
  • 엔드포인트 접근을 위해 Worker node 트래픽이 Customer VPC 외부로 나감 - 외부망 사용
  • 엔드포인트의 Public Domain을 NLB의 Public IP와 연결
  • 트래픽 흐름
    • User kubectl → (Public Domain)  Public endpoint → Control Plane(API 서버)
    • Control Plane(API 서버) → EKS owned ENI → Worker node(kubelet)
    • Worker node(kubelet) → (Public Domain) → Public endpoint → Control Plane(API 서버)

 

Public and Private endpoints

https://awskoreamarketingasset.s3.amazonaws.com/2022%20Summit/pdf/T14S4_Amazon%20EKS%20%EB%A7%88%EC%9D%B4%EA%B7%B8%EB%A0%88%EC%9D%B4%EC%85%98%20%EC%9A%94%EC%A0%90%20%EC%A0%95%EB%A6%AC.pdf
https://aws.amazon.com/ko/blogs/containers/de-mystifying-cluster-networking-for-amazon-eks-worker-nodes/

  • Customer VPC 외부로부터 Cluster endpoint 접근 가능
  • endpoint 접근을 위해 Worker node 트래픽이 Customer VPC 외부로 나갈 필요 없음 - 내부 통신
  • Private hosted zone을 이용해 Private Domain을  EKS-owned ENI와 연결
  • 트래픽 흐름
    • User kubectl → (Public Domain) → Public endpoint → Control Plane(API 서버)
    • Control Plane(API 서버) → EKS owned ENI → Worker node(kubelet)
    • Worker node(kubelet) → (Private Domain) → EKS owned ENI → Control Plane(API 서버)

 

Private endpoint only

https://awskoreamarketingasset.s3.amazonaws.com/2022%20Summit/pdf/T14S4_Amazon%20EKS%20%EB%A7%88%EC%9D%B4%EA%B7%B8%EB%A0%88%EC%9D%B4%EC%85%98%20%EC%9A%94%EC%A0%90%20%EC%A0%95%EB%A6%AC.pdf
https://aws.amazon.com/ko/blogs/containers/de-mystifying-cluster-networking-for-amazon-eks-worker-nodes/

  • Customer VPC 에서만 Cluster endpoint 접근 가능
  • endpoint 접근을 위해 Worker node 트래픽이 Customer VPC 외부로 나갈 필요 없음 - 내부 통신
  • Private hosted zone을 이용해 Private Domain을  EKS-owned ENI와 연결
  • 트래픽 흐름
    • User kubectl → (Private Domain) → EKS owned ENI → Control Plane(API 서버)
    • Control Plane(API 서버) → EKS owned ENI → Worker node(kubelet)
    • Worker node(kubelet) → (Private Domain) → EKS owned ENI → Control Plane(API 서버)