AWS(Amazon Web Service)

[AWS] AWS's containers - EKS

yunseohhe 2024. 12. 6. 17:44

Amazon EKS

  • Elastic Kubernetes Service의 약자이다.
  • AWS에 관리형 Kubernetes 클러스터를 실행할 수 있는 서비스이다.
  • Kubernetes는 오픈 소스 시스템으로 Docker로 컨테이너화한 애플리케이션의 자동 배포, 확장, 관리를 지원한다.
  • 컨테이너를 실행한다는 목적은 ECS와 비슷하지만 사용하는 API가 다르다.
  • ECS는 오픈 소스가 아닌 반면 Kubernetes는 오픈 소스이고, 여러 클라우드 제공자가 사용하므로 표준화를 기대할 수 있다.
  • 두 가지 실행 모드가 있다.
      - EC2 시작모드 : EC2 인스턴스에서처럼 작업자 모드를 배포할 때 사용한다.
      - Fargate 모드 : EKS 클러스터에 서버리스 컨테이너를 배포할 때 사용한다.
  • 사용 사례
      - 회사가 온프레미스나 클라우드에서 Kubernetes나 Kubernetes API를 사용 중일 때, Kubernetes 클러스터를 관리하기 위해 EKS를 사용한다.
  • Kubernetes는 클라우드 애그노스틱으로 Azure, Google Cloud 등 모든 클라우드에서 지원된다.
      - 클라우드 또는 컨테이너 간 마이그레이션을 실행하는 경우, EKS가 간단한 솔루션이 될 수 있다.

 

 

Amazon EKS - Diagram

  • VPC와 세 AZ가 있고, 각 AZ는 퍼블릭 및 프라이빗 서브넷으로 나뉜다.
  • EKS 작업자 노드를 생성하면 EC2 인스턴스가 구성되고, 각 노드는 EKS 포드를 실행한다.
  • ECS 태스크와 유사하지만 이름에서 포드를 발견하면 Amazon Kubernetes와 관련된 거라고 생각하면 된다.
  • EKS 포드가 실행되는 EKS 노드는 오토 스케일링 그룹으로 관리할 수 있다.
  • ECS와 유사하게 EKS 서비스나 Kubernetes 서비스를 노출할 때는 프라이빗 로드 밸런서나 퍼블릭 로드 밸런서를 설정해 웹에 연결해야 한다.

 

 

Amazon EKS - Node Types

  • Managed Node Groups(관리형 노드 그룹)
      - AWS로 노드, 즉 EC2 인스턴스를 생성하고 관리한다.
      - 노드는 EKS 서비스로 관리되는 오토 스케일링 그룹의 일부이다.
      - 온디맨드 인스턴스와 스팟 인스턴스를 지원한다.
  • Self-Managed Nodes(자체 관리형 노드)
      - 사용자 지정 사항이 많고 제어 대상이 많은 경우, 우리가 직접 노드를 생성하고 EKS 클러스터에 등록한 다음 ASG의 일부로 관리해야 한다.
      - 사전 빌드된 AMI인 Amazon EKS 최적화 AMI를 사용하면 시간을 절약할 수 있다.
      - 자체 AMI를 빌드해도 되지만 복잡할 수 있다.
      - 온디맨드 인스턴스와 스팟 인스턴스를 지원한다.
  • AWS Fargate
      - 노드를 원치 않는 경우에는 EKS가 지원하는 Fargate 모드를 선택하면 유지관리도 필요 없고 노드를 관리하지 않아도 된다.
      - EKS에서 컨테이너만 실행하면 된다.

 

 

Amazon EKS - Data Volumes

  • EKS 클러스터에 데이터 볼륨을 연결하려면 EKS 클러스터에 StorageClass manifest(스토리지 클래스 매니페스트)를 지정해야 한다.
  • 컨테이너 스토리지 인터페이스(CSI)라는 규격 드라이버를 활용한다.
  • EBS와 Fargate 모드가 작동하는 유일한 스토리지 클래스 유형인 EFS를 지원하고, FSx for Lustre와 FSx for NetApp ONTAP을 지원한다.