Amazon Elastic Kubernetes Service (EKS)는 Amazon Web Services (AWS)에서 제공하는 관리형 Kubernetes 서비스이다.
EKS는 사용자가 Kubernetes를 쉽게 사용할 수 있도록 클러스터 관리 및 운영 작업을 AWS가 대신 처리한다.
쿠버네티스를 제어하는 컨트롤 플레인을 제공하는 관리형 서비스이다.
쿠버네티스 도입 중 가장 큰 어려움은 '컨트롤 플레인의 유지 및 운영'이다.
쿠버네티스에서는 여러 컴포넌트들이 서로 독립적이고 비동기로 동작하며 전체를 구성한다.
각 구성 요소의 설정이나 장애가 발생했을 시 복구 방법 등이 복잡할 수 있다.
이러한 유지, 운영의 어려움을 AWS에서 해결해준다.
AWS에서 컨트롤 플레인 부분(kube-apiserver, kube scheduler, controller, CoreDNS)을 관리해준다.
이미 구축된 쿠버네티스 클러스터에서 동작하는 애플리케이션을 수정하지 않고 동작시킬 수 있다. (쿠버네티스와의 완전한 호완성)
AWS의 각종 서비스와 통합이 쉽다.
파드 네트워크에는 데이터 플레인의 네트워크와는 다른 자체 네트워크 체계를 배치하여, 클러스터 외부에서 파드에 명시적으로 엔드 포인트를 생성하지 않으면 통신이 불가능하다.
Amazon VPC(Amazon Virtual Private Cloud) 통합 네트워킹을 통해 파드에서 VPC 내부 주소 대역을 사용하여 클러스터 외부와의 통신을 심리스(Seamless)하게 구현할 수 있다.
- 심리스(Seamless)
서비스 접근을 단순하게 한느 것 혹은 복잡한 기술이나 기능을 설명하지 않아도 서비스 기능을 직관적으로 구현하는 것을 목표로 한다.
쿠버네티스 클러스터는 kubectl이라는 명령줄 도구를 사용하여 조작
- kubectl
쿠버네티스(Kubernetes) 클러스터를 관리하기 위한 기본적인 커맨드 라인 인터페이스(CLI) 도구이다. kubectl을 사용하면 쿠버네티스 클러스터의 리소스를 생성, 업데이트, 삭제, 조회할 수 있다.
조작을 위해서는 적절한 인증/인가 구조가 필요하다.
EKS에서는 IAM과 연결한 인증 및 인가 구조를 제공한다.
쿠버네티스 클러스터 외부에서 접속할 때는 ELB를 사용해 엔드포인트를 생성한다.
EKS에서는 로드밸런서를 설정하면 자동적으로 ELB가 생성된다.
ELB를 통해 HTTPS나 경로 기반 라우팅 등의 L7 로드밸런서 기능을 AWS로 구현할 수 있다.
쿠버네티스는 컨트롤 플레인과 데이터 플레인으로 구성되고, 컨트롤 플레인은 EKS에서 관리형 서비스로 제공된다.
- 컨트롤 플레인(Control Plane): 클러스터의 전반적인 관리와 제어를 담당하는 계층으로, 클러스터의 상태를 모니터링하고 원하는 상태로 유지한다.
- 데이터 플레인(Data Plane): 실제로 애플리케이션이 실행되고 네트워크 트래픽이 흐르는 계층으로, 사용자 애플리케이션의 실행을 책임진다.
EKS 클러스터의 유지 관리나 버전을 업그레이드할 때 필요한 가상 머신 설정을 쉽게 해주는 관리형 노드 그룹 구조(EC2)와 가상 머신을 의식하지 않고 파드를 배포할 수 있는 파게이트(Fargate)를 이용하여 데이터 플레인을 관리할 수 있다.
파게이트는 데이터 플레인 관리가 필요 없는 만큼 파드가 배포되는 호스트에 사용자 접근이 제한되는 등 제약이 존재한다.