Amazon Elastic Kubernetes Service
완전 관리형의 Control Plane
운영자 입장에서 여러 고가용성, 버전 업그레이드등의 이슈를 확인할 필요가 없다.
AWS의 여러 서비스 자원을 융합하여 사용 가능
VPC - 내 VPC에서 Control plane쪽 VPC에 액세스를 하면 Control plane은 내 VPC에 ENI로 통신을 한다.
IAM - 쿠버네티스는 자체적으로 인증정보를 갖고있지 않기 때문에 외부 인증 메카니즘을 수행해야 함
k8s의 upstream으로 k8s의 모든 api와 완벽히 호환 됨
Data Plane
가용전에 인스턴스가 생성되고 그 인스턴스 안에 Pod들이 배치 됨
관리형 노드 그룹
인스턴스를 별도로 만들 필요 없고, 한번의 조작으로 클러스터에 대한 노드 생성, 업데이트, 종료가 가능하다.
클러스터당 최대 노드 그룹은 30개, 노드 그룹당 최대 Pod는 450개로, 총 13500개의 Pod 생성이 가능하다.
관리형 노드와 Control Plane은 1개의 마이너 버전 차이만 허용한다.
네트워킹
CNI 플러그인이 없으면 오버레이 네트워킹을 해야함
-> 다른 vpc로 통신하려면 NAT로 뭐 한다는데 이거 하면 어떤 파드가 요청한건지 모른다고 함
차근차근 알아가야지 ㅎㅎ
EC2 인스턴스마다 ENI 개수, ENI 의 IP 개수가 제한이 있음
EKS Ingress Contrller (ALB로 제공)
api 서버와 긴밀하게 통신해야 하기 때문에 생성할 때 인증 메카니즘 설정이 필요함
스토리지
AWS의 EBS, EFS, FSx로 사용
보안
AWS
Control plane 로깅
EKS Control plane은 Private api endpoint를 제공
쿠버네티스는 자체적으로 인증정보를 갖고있지 않기 떄문에 IAM과 같은 외부 인증 메카니즘을 수행해야 함
ECR 스캐닝
Service Account
- Pod가 API를 호출할 수 있는 권한을 위해 IAM 롤을 부여할 수 있음.
- Pod 레벨별로 IAM룰을 부여할 수 있어 특정 Pod만 S3을 호출한다 같은게 가능함
- Pod 단위로 시큐리티 그룹을 지정 가능
Kubernetes
쿠버네티스의 네임스페이스별로 오브젝트를 배치할 수 있음
리소스 제한
네트워크 Policy (특정 아이피나 대역만 접근 가능하도록 설정 가능함)
볼륨 제한
로깅
App Mesh
서비스간 통신을 관리하는 서비스메시
사이드카 프록시로 Pod안에 컨테이너가 1개 있다고 하면 컨테이너 옆에 사이드카 형태로 프록시 컨테이너를 하나 더 붙여 모든 통신은 프록시 컨테이너를 통해서 처리함.
사이드카 컨테이너들을 관리할 수 있는 컨트롤 플레인이 존재함
복잡한 MSA 아키텍처에서 트래픽의 흐름. 계층적인 메트릭 정보. 특정한 곳 장애 발생시 차단 등을 서비스로 제공이 가능하다.
Logging FluentBit
Cloudwatch Container Insights
AWS Fargate for Amazon EKS
Serverless Kubernetes
인스턴스 과금이 아닌 pod 단위 과금
멀티 테넌트 시나리오에서 손쉽게 비용 절감
멀티테넌시란 그 용어에서 유추할 수 있듯 여러 테넌트(tenant, 사용자)를 가진 아키텍처라는 의미입니다. 많은 사람이 같은 기능을 사용하는 웹메일 서비스가 대표적인 멀티테넌시 아키텍처 소프트웨어입니다.
가능한 것
워커노드 관리
사용하지 않는 유휴자원에 대한 비용지불
클러스터 오토 스케일러
불가능한 것
DaemonSet 배포
권한을 부여한 Pod실행
Stateful한 워크로드 사용 (EFS로 해결 가능
'AWS' 카테고리의 다른 글
AWS Container Immersion Day - ECS (0) | 2021.04.07 |
---|