개요
- 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 스팟 인스턴스
- 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 프로세서는 성능과 기능을 대폭 개선하는 동시에 비용을 크게 감소
- 네트워킹과 보안
- IPv6 지원
- 서비스 검색
- AWS Cloud Map
- Cloud Map을 통해 Kubernetes 기반 서비스를 검색할 수 있으므로 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
- 하이브리드 배포
- AWS Outposts에서 EKS를 사용하여 온프레미스 시스템에 대한 매우 짧은 대기 시간을 필요로 하는 컨테이너식 어플리케이션 실행 가능
- AWS Outposts
- AWS Local Zones 또는 AWS Wavelength에서 실행되는 노드를 EKS에 연결하면 엣지에서 더 많은 AWS 관리형 인프라를 선택
- AWS Local Zones
- https://aws.amazon.com/ko/about-aws/global-infrastructure/localzones/
- 컴퓨팅, 스토리지, 데이터베이스 및 기타 엄선된 AWS 서비스를 대규모 모집단, 산업 센터와 더 가까운 위치에 배치하는 유형의 인프라 배포
- AWS Wavelength
- Amazon EKS Distro를 사용하면 AWS 기반 Amazon EKS에 사용된 오픈 소스 Kubernetes 소프트웨어 배포를 패키징하여 자체 온프레미스 인프라에서 사용 가능
- 자체 도구 또는 Amazon EKS Anywhere를 통해 EKS Distro 클러스터 생성 및 운영 가능
- EKS Anywhere를 사용하면 Kubernetes 클러스터 관리를 위한 자체 도구를 구축하고 지원해야 하는 복잡성 감소
- EKS Anywhere는 클러스터 생성, 인프라 관리 및 운영을 간소화하는 자동화 도구를 제공
- 로깅
- AWS CloudTrail과 통합하면 감사 기록을 포함하여 EKS 관리 작업 출력 가능
- Kubernetes 제어 영역 로그를 Amazon CloudWatch로 보내 분석, 디버깅 및 감사에 활용
- Amazon CloudWatch
- Amazon CloudWatch를 통해 컨테이너와 클러스터를 모니터링하는 기능을 제공
- https://aws.amazon.com/ko/cloudwatch/
- DevOps 엔지니어, 개발자, 사이트 안정성 엔지니어(SRE), IT 관리자 및 제품 소유자를 위해 구축된 모니터링 및 관찰 서비스
- 실행 중인 태스크의 평균 및 전체 CPU 사용률과 메모리 사용률을 태스크 정의, 서비스 또는 클러스터별로 그룹화하여 모니터링
- CloudWatch 경보를 설정하여 컨테이너 또는 클러스터를 확장하거나 축소해야 할 때 알림을 수신
- 호환성 인증
- 업스트림 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 리소스 조회 가능