[cloud native][platform][AWS] Amazon EKS(Elastic Kubernetes Service)
Updated:
개요
- https://aws.amazon.com/ko/eks/
- AWS와 온프레미스에서 손쉽게 Kubernetes를 실행할 수 있는 관리형 Kubernetes 서비스
- 컨테이너식 어플리케이션의 배포, 확장 및 관리를 자동화하기 위한 오픈 소스 시스템
- 컨테이너 예약, 어플리케이션 가용성 관리, 클러스터 데이터 저장 및 다른 주요 태스크를 담당하는 Kubernetes 제어 영역의 가용성과 확장성을 관리
- Amazon EC2(Elastic Compute Cloud), AWS Fargate에서 Kubernetes 어플리케이션을 실행 가능
- AWS 인프라의 모든 성능, 규모, 안정성 및 가용성뿐만 아니라 AWS 네트워킹 및 보안 서비스와의 통합에 따른 이점을 활용
- ALB(Application Load Balancer)
- IAM(Identity and Access Management)
- RBAC
- VPC(Virtual Private Cloud)
기능
- https://aws.amazon.com/ko/eks/features/
- 관리형 Kubernetes 클러스터
- 관리형 제어 영역
- 여러 AWS 가용 영역(AZ)에서 실행되는, 확장 가능하고 가용성이 높은 Kubernetes 제어 영역을 제공
- etcd 지속성 계층과 Kubernetes API 서버의 가용성 및 확장성을 자동으로 관리
- 높은 가용성을 보장하기 위해 3개의 AZ에서 Kubernetes 제어 영역을 실행하
- 비정상적인 제어 영역 노드를 자동으로 감지해 교체
- 서비스 통합
- ACK(AWS Controllers for Kubernetes)를 사용하면 Kubernetes 환경 내에서 직접 AWS 서비스를 관리하고 제어
- AWS 서비스를 활용하는, 확장 가능한 고가용성의 Kubernetes 어플리케이션을 간편하게 구축
- 호스트형 Kubernetes 콘솔
- Kubernetes 클러스터에 대한 통합 콘솔을 제공
- 클러스터 운영자와 어플리케이션 개발자는 EKS를 단일 위치로 사용하여 Kubernetes 어플리케이션을 구성하고 시각화하며 관련 문제를 해결
- EKS 추가 기능
- Kubernetes의 운영 기능을 확장하는 일반적인 운영 소프트웨어
- 가관측성, 네트워킹, 자동 크기 조정 및 AWS 서비스 통합을 위한 Kubernetes 도구를 포함하여 클러스터에서 실행하려는 추가 기능을 선택
- 관리형 노드 그룹
- 단일 명령으로 클러스터의 노드를 생성, 업데이트, 조정 및 종료
- 노드에서 Amazon EC2 스팟 인스턴스를 활용하여 비용을 절감
- Amazon EC2 스팟 인스턴스
- https://aws.amazon.com/ko/ec2/spot/
- AWS 클라우드에서 미사용 EC2 용량을 활용
- AWS 계정의 최신 EKS 최적화 또는 사용자 지정 AMI(Amazon Machine Image)를 사용하여 Amazon EC2 인스턴스를 실행
- 업데이트 및 종료 시에는 노드를 정상적으로 드레이닝하여 어플리케이션 가용성을 유지
- 관리형 제어 영역
- 노드 시작 및 단일 위치 관리에 eksctl 사용
- eksctl
- eksctl 명령줄 도구를 사용하여 Amazon EKS 가동 및 실행을 몇 분 안에 시작
eksctl create cluster
명령을 실행하기만 하면 EKS 클러스터가 생성- 노드 및 추가 기능의 관리를 포함하여 클러스터 관리 및 운영을 간소화
- Windows 지원
- Windows 작업자 노드 및 Windows 컨테이너 예약을 지원
- Linux 작업자 노드와 함께 Windows 작업자 노드의 실행을 지원
- 동일한 클러스터를 사용하여 이러한 운영 체제에서 어플리케이션을 관리
- ARM 지원
- Arm 기반 EC2 인스턴스를 구동하는 AWS Graviton2 프로세서는 성능과 기능을 대폭 개선하는 동시에 비용을 크게 감소
- eksctl
- 네트워킹과 보안
- IPv6 지원
- 서비스 검색
- AWS Cloud Map
- https://aws.amazon.com/ko/cloud-map/
- 클라우드 리소스 검색 서비스
- 어플리케이션 리소스의 사용자 지정 이름을 정의
- 동적으로 변화하는 이러한 리소스의 업데이트된 위치를 유지 관리
- 웹 서비스가 항상 가장 최신 리소스 위치를 검색할 수 있어 어플리케이션 가용성이 향상
- Cloud Map을 통해 Kubernetes 기반 서비스를 검색할 수 있으므로 Cloud Map을 모든 컨테이너 워크로드에 대한 통합 서비스 레지스트리로 사용
- AWS Cloud Map
- 서비스 메시
- 어플리케이션에 있는 모든 마이크로서비스의 통신 방법을 표준화하여 복잡한 마이크로서비스 어플리케이션을 손쉽게 구축하고 실행
- AWS App Mesh
- https://aws.amazon.com/ko/app-mesh/
- 어플리케이션 수준의 네트워킹을 통해 서비스에서 여러 유형의 컴퓨팅 인프라와 원활하게 통신할 수 있도록 하는 서비스 메시
- VPC 네이티브 네트워킹
- Amazon VPC에서 실행되는 EKS 클러스터를 통해 자체 VPC 보안 그룹과 네트워크 액세스 제어 목록(ACL)을 사용
- 컴퓨팅 리소스는 다른 고객과 공유되지 않으므로 높은 수준의 격리
- Amazon VPC 컨테이너 네트워크 인터페이스(CNI)를 사용하여 Kubernetes 포드가 VPC에서 IP 주소를 수신하도록 허용
- Project Calico 네트워크 정책 엔진과 연동하여 Kubernetes 워크로드에 대한 세분화된 네트워킹 정책을 제공
- Kubernetes 네트워크 정책 API를 사용하여 서비스별로 액세스를 제어
- AWS IAM Authenticator
- Kubernetes RBAC와 AWS IAM를 통합
- RBAC 역할을 각 IAM 엔터티에 직접 할당하여 Kubernetes 제어 영역 노드에 대한 액세스 권한을 세분화하여 제어
- 서비스 계정에 대한 IAM
- Kubernetes 서비스 계정에 IAM 권한을 할당
- IAM 역할은 다른 컨테이너식 서비스, 데이터베이스 및 보안 정보 같은 클러스터 외부의 AWS 리소스 또는 AWS 외부에서 실행되는 서드 파티 서비스 및 어플리케이션에 대한 액세스를 제어하는 데 사용
- 여러 콜로케이션 서비스를 포함하는 클러스터를 실행할 때 포드 수준에서 액세스를 세분화하여 제어하는 동시에 클러스터 가용성 및 비용 최적화를 간소화
- 규정 준수
- SOC, PCI, ISO, FedRAMP-Moderate, IRAP, C5, K-ISMS, ENS High, OSPAR, HITRUST CSF를 준수
- HIPAA 적격 서비스
- 로드 밸런싱
- ALB(Application Load Balancer), NLB(Network Load Balancer), Classic Load Balancer를 포함한 Elastic Load Balancing의 사용을 지원
- 표준 Kubernetes 클러스터 로드 밸런싱 또는 Kubernetes를 지원하는 모든 수신 컨트롤러를 Amazon EKS 클러스터에서 실행 가능
- 서버리스 컴퓨팅
- AWS Fargate에서 서버리스 컴퓨팅을 사용하여 Kubernetes 어플리케이션을 실행하도록 지원
- AWS Fargate
- https://aws.amazon.com/ko/fargate/
- 서버를 관리하지 않고도 어플리케이션 구축에 초점을 맞출 수 있도록 지원하는 종량제 서버리스 컴퓨팅 엔진
- 하이브리드 배포
- AWS Outposts에서 EKS를 사용하여 온프레미스 시스템에 대한 매우 짧은 대기 시간을 필요로 하는 컨테이너식 어플리케이션 실행 가능
- AWS Outposts
- https://aws.amazon.com/ko/outposts/
- 진정으로 일관된 하이브리드 환경을 위해 거의 모든 온프레미스 또는 엣지 로케이션에 AWS 인프라 및 서비스를 제공하는 완전관리형 솔루션
- AWS Local Zones 또는 AWS Wavelength에서 실행되는 노드를 EKS에 연결하면 엣지에서 더 많은 AWS 관리형 인프라를 선택
- AWS Local Zones
- https://aws.amazon.com/ko/about-aws/global-infrastructure/localzones/
- 컴퓨팅, 스토리지, 데이터베이스 및 기타 엄선된 AWS 서비스를 대규모 모집단, 산업 센터와 더 가까운 위치에 배치하는 유형의 인프라 배포
- AWS Wavelength
- https://aws.amazon.com/ko/wavelength/
- 5G 네트워크에서 AWS 컴퓨팅 및 스토리지 서비스를 포함하여 매우 낮은 대기 시간의 어플리케이션을 개발하고 배포하며 확장하기 위한 모바일 엣지 컴퓨팅 인프라를 제공
- AWS Local Zones
- Amazon EKS Distro를 사용하면 AWS 기반 Amazon EKS에 사용된 오픈 소스 Kubernetes 소프트웨어 배포를 패키징하여 자체 온프레미스 인프라에서 사용 가능
- Amazon EKS Distro
- https://aws.amazon.com/ko/eks/eks-distro/
- AWS에서 구축 및 유지 관리하는 Kubernetes 배포
- 안정적인 보안 클러스터를 쉽게 생성하도록 EKS에서 사용
- Amazon EKS Distro
- 자체 도구 또는 Amazon EKS Anywhere를 통해 EKS Distro 클러스터 생성 및 운영 가능
- Amazon EKS Anywhere
- https://aws.amazon.com/ko/eks/eks-anywhere/
- 고객이 AWS에서 지원하는 고객 관리형 인프라(VMware vSphere, 베어 메탈, …)에서 Kubernetes 클러스터를 생성 및 운영하도록 지원하는 Amazon EKS의 새 배포 옵션
- Amazon EKS Anywhere
- EKS Anywhere를 사용하면 Kubernetes 클러스터 관리를 위한 자체 도구를 구축하고 지원해야 하는 복잡성 감소
- EKS Anywhere는 클러스터 생성, 인프라 관리 및 운영을 간소화하는 자동화 도구를 제공
- 로깅
- AWS CloudTrail과 통합하면 감사 기록을 포함하여 EKS 관리 작업 출력 가능
- AWS CloudTrail
- https://aws.amazon.com/ko/cloudtrail/
- AWS 인프라 전체의 계정 활동을 모니터링하고 기록하여 스토리지, 분석 및 해결 작업을 제어
- AWS CloudTrail
- Kubernetes 제어 영역 로그를 Amazon CloudWatch로 보내 분석, 디버깅 및 감사에 활용
- Amazon CloudWatch
- Amazon CloudWatch를 통해 컨테이너와 클러스터를 모니터링하는 기능을 제공
- https://aws.amazon.com/ko/cloudwatch/
- DevOps 엔지니어, 개발자, 사이트 안정성 엔지니어(SRE), IT 관리자 및 제품 소유자를 위해 구축된 모니터링 및 관찰 서비스
- 실행 중인 태스크의 평균 및 전체 CPU 사용률과 메모리 사용률을 태스크 정의, 서비스 또는 클러스터별로 그룹화하여 모니터링
- CloudWatch 경보를 설정하여 컨테이너 또는 클러스터를 확장하거나 축소해야 할 때 알림을 수신
- Amazon CloudWatch
- AWS CloudTrail과 통합하면 감사 기록을 포함하여 EKS 관리 작업 출력 가능
- 호환성 인증
- 업스트림 Kubernetes를 실행하고 공인 Kubernetes 인증 서비스이므로 Kubernetes 커뮤니티의 기존 플러그 인과 도구를 모두 사용 가능
- 온프레미스 데이터 센터에서 실행 중인지 퍼블릭 클라우드에서 실행 중인지에 상관없이, Amazon EKS에서 실행 중인 어플리케이션은 표준 Kubernetes 환경에서 실행 중인 어플리케이션과 완벽하게 호환
- 표준 Kubernetes 어플리케이션을 Amazon EKS로 쉽게 마이그레이션 가능
- 관리형 클러스터 업데이트
- 업데이트 프로세스를 관리할 필요 없이, 실행 중인 클러스터를 최신 Kubernetes 버전으로 쉽게 업데이트 가능
- 새 클러스터를 생성하거나 어플리케이션을 새 클러스터로 마이그레이션할 필요 없이 Kubernetes 버전 업데이트
- SDK, CLI 또는 AWS 콘솔을 통해 새 버전 설치를 시작하고 진행 중인 업데이트 상태를 검토
- 고급 워크로드 지원
- GPU 사용 P2 및 P3 Amazon EC2 인스턴스용으로 구성된 NVIDIA 드라이버를 포함하는 최적화된 AMI(Amazon Machine Image)를 제공
- 기계 학습(ML), Kubeflow, 딥 러닝(DL) 컨테이너, 고성능 컴퓨팅(HPC), 금융 분석 및 비디오 트랜스코딩 등 고급 컴퓨팅을 필요로 하는 워크로드를 실행
- 오픈 소스 호환성
- Kubernetes 커뮤니티 도구와 완벽하게 호환성
- Kubernetes 추가 기능을 지원
- CoreDNS, kubectl, …
- EKS 커넥터
- 호환 Kubernetes 클러스터를 AWS에 연결하고 이를 Amazon EKS 콘솔에서 시각화 가능
- Amazon EKS Anywhere 클러스터, Amazon EC2의 자체 관리형 클러스터 기타 AWS 외부에서 실행되는 Kubernetes 클러스터를 포함해 어떤 호환 Kubernetes 클러스터도 연결 가능
- 클러스터가 실행되는 위치와 상관없이, Amazon EKS 콘솔을 사용하여 모든 연결된 클러스터와 해당 클러스터에서 실행되는 Kubernetes 리소스 조회 가능