Kubernetes의 컨트롤 플레인 또는 노드를 제공하는 AWS의 관리형 K8S 서비스
그럼 EKS를 알아가기 전에 Kubernetes를 정말 간단하게만 알아가봅시다.
컨테이너화된 애플리케이션의 배포, 확장 및 관리를 자동화하는 오픈소스 플랫폼
컨테이너 기술을 활용하면 애플리케이션과 그 종속성을 독립적으로 패키징하고 실행할 수 있어 개발과 배포가 용이해집니다. 하지만 애플리케이션이 성장함에 따라 수백 개, 수천 개의 컨테이너를 관리해야 하는 상황이 발생할 수 있습니다. 그러면서 다양한 문제를 마주할 수 있습니다.
컨테이너를 어디에 배포할지 결정하고 트래픽 변화에 따라 적절히 수를 조정해야 하는 배포와 스케일링의 어려움, 컨테이너가 실패했을 때 이를 자동으로 복구해야 하는 장애 복구의 필요성, 여러 컨테이너로 요청을 효율적으로 분배해야 하는 로드 밸런싱, 그리고 각 컨테이너의 상태를 지속적으로 확인하고 문제를 진단할 수 있는 모니터링과 로깅 등이 있습니다.
따라서, Kubernetes는 이러한 문제를 해결하기 위해 설계된 컨테이너 오케스트레이션 플랫폼입니다.
컨테이너 배포 및 복구
애플리케이션을 정의하면 쿠버네티스가 필요한 컨테이너를 자동으로 배포하고, 문제가 발생하면 즉시 복구 작업을 수행합니다.
자동 확장 & 축소
시스템 부하에 따라 컨테이너를 수평으로 확장(스케일 아웃)하거나 축소(스케일 인)합니다.
로드밸런싱
클러스터 내에서 트래픽을 각 컨테이너로 분배하여 애플리케이션의 성능을 최적화합니다.
서비스 디스커버리 및 네트워킹
DNS 이름 또는 IP를 통해 컨테이너 간 통신을 지원하며, 네트워크 설정을 간소화합니다.
롤링 업데이트 & 롤백
애플리케이션을 중단 없이 업데이트하고, 문제가 발생하면 이전 버전으로 되돌릴 수 있습니다.
이러한 기능들 덕분에, 대규모 애플리케이션을 안정적이고 효율적으로 운영하고자한다면 Kubernetes는 최적의 선택이 될 수 있습니다.
Amazon EKS는 결국 AWS에서 제공하는 매니지드 Kubernetes 서비스이기 때문에 AWS 인프라와 호환성이 좋습니다. EKS는 쿠버네티스의 컨트롤 플레인과 노드 관리를 자동화하여 운영 복잡성을 대폭 줄여주기 때문에 사용자가 쿠버네티스 워크로드를 더 쉽게 배포하고 관리할 수 있습니다.
쿠버네티스 컨트롤 플레인을 AWS가 완전히 관리하여 운영 부담을 줄이고, 사용자는 워커 노드와 애플리케이션 배포에만 집중할 수 있습니다. 컨트롤 플레인은 다중 AZ(가용 영역)에 걸쳐 배포되어 고가용성과 안정성을 제공하며, 자동 업그레이드 및 패치로 항상 최신 상태를 유지합니다.
IAM, CloudWatch, VPC, ELB 등 AWS 서비스와 통합되어 보안, 네트워킹, 모니터링 작업을 간소화합니다. ELB(Elastic Load Balancing)으로 로드 밸런싱을 자동 설정하고, ECR을 통해 컨테이너 이미지를 효율적으로 관리할 수 있습니다.
Amazon Auto Scaling 및 Managed Node Groups를 지원하여 워커 노드의 수를 자동으로 확장하거나 축소할 수 있습니다. 또한, HPA(Horizontal Pod Autoscaler)와 Karpenter와 같은 도구를 통해 Pod 단위의 확장도 자동화하여 효율적으로 리소스 관리를 할 수 있습니다.
다중 AZ에 걸쳐 클러스터를 배포하여 장애 발생 시에도 애플리케이션의 중단 없는 운영을 보장합니다. 이러한 아키텍처는 서비스 연속성을 유지하며, 안정적인 애플리케이션 운영이 ㅅ가능합니다.
AWS IAM을 활용하여 사용자와 리소스의 인증 및 권한 관리를 강화할 수 있습니다.
AWS Fargate와 통합되어 서버리스 방식으로 쿠버네티스 워크로드를 실행할 수 있습니다. 이를 통해 워커 노드와 관련된 인프라를 관리할 필요 없이 매니지드된 환경에서 애플리케이션을 손쉽게 운영할 수 있습니다.
AWS가 관리형 서비스로 제공하는 만큼, 자체적으로 쿠버네티스를 운영하는 것보다 비용이 더 들 수 있습니다. 특히 대규모 클러스터를 운영할 때는 비용 관리가 중요한 문제로 부각될 수 있습니다.
또한, EKS는 AWS 클라우드 환경에 종속적이기 때문에 멀티클라우드 전략이나 온프레미스 환경에서는 활용할 수 없는 제약이 있습니다. 더불어, 컨트롤 플레인을 AWS가 관리하다 보니 일부 설정은 사용자 마음대로 변경할 수 없어서, 세부적인 커스터마이징이 필요한 상황에서는 한계를 느낄 수도 있습니다.
AWS 기반 서비스를 운영 중인 곳에서 적합합니다.
이미 AWS 서비스를 활용하고 있다면, EKS를 통해 쿠버네티스를 손쉽게 통합할 수 있습니다. 또한, 쿠버네티스 운영에 대한 경험이 부족한 경우에도 운영 부담을 크게 줄이고 빠르게 컨테이너 환경을 구축할 수 있어 유리합니다.
만약 대규모 애플리케이션을 안정적으로 운영해야 하거나 고가용성과 확장성이 중요한 상황에서도 EKS는 좋은 선택지가 될 수 있습니다. 특히 서버 관리에 들이는 노력을 줄이고 AWS의 네트워킹 및 보안 기능을 최대한 활용하려는 경우라면, EKS는 이상적인 클라우드 서비스입니다. 하지만 수제로 만드는 것보단 비싼건 어쩔 수 없는 부분입니다.