Elastic Kubernetes Service (EKS) cho phép bạn triển khai, quản lý và mở rộng các ứng dụng containerized trên Kubernetes một cách dễ dàng trên AWS hoặc On-Premises.
Cụ thể, EKS cho phép bạn tạo và quản lý các cluster Kubernetes của riêng bạn trên AWS. Nó cung cấp các tính năng quản lý như cập nhật phiên bản Kubernetes, giám sát và xác thực người dùng. Bằng cách sử dụng EKS, bạn có thể tập trung vào việc phát triển ứng dụng của mình thay vì phải quản lý hạ tầng Kubernetes.
Với EKS, bạn có thể triển khai các ứng dụng containerized trên Kubernetes bao gồm các ứng dụng web, microservices, batch processing, machine learning và AI. EKS cũng tích hợp với các dịch vụ khác của AWS
- Hybird deployment: quản lý kubernetes cluster và application trên AWS + On-Premises
- Batch Processing: scheduled, plan, run các workload parallel hoặc sequential trong EKS cluster (sử dụng Kubernetes Job API)
- Machine learning: sử dụng Kubeflow với EKS để mô hình hóa quy trình máy học của bạn và chạy các công việc huấn luyện phân tán một cách hiệu quả bằng cách sử dụng các instance mới nhất được trang bị GPU của EC2, bao gồm Inferentia.
- Web Application: build web application với HA trong các AZ khác nhau


Cluster Auto Scaling
- Vertical Pod Autoscaler – tự động điều chỉnh các giá trị CPU và bộ nhớ đặt trước cho các pod của bạn để giúp “cân đối kích thước” cho ứng dụng của bạn.
- Horizontal Pod Autoscaler – tự động điều chỉnh số lượng pod trong một deployment, replication controller hoặc replica set dựa trên sử dụng CPU của tài nguyên đó.
Workload Auto Scaling
- Kubernetes Cluster Autoscaler
- Karpenter open source autoscaling project
The cluster autoscaler uses AWS scaling groups, while Karpenter works directly with the Amazon EC2 fleet
ELB
- Support ALB và NLB
- AWS Load Balancer Controller (LBC) sẽ quản lý ELB cho EKS cluster.
- Sử dụng Helm V3 hoặc mới hơn hoặc apply Kubernetes manifest để install AWS LBC
- ALB sẽ khởi tạo khi tạo mới Kubernetes Ingress
- NLB sẽ khởi tạo khi tạo mới Kubernetes service có type = LoadBalancer
- Trong quá khứ, Kubernetes NLB đã được sử dụng cho target = instance, nhưng AWS LBC đã được sử dụng cho các Target = IP.
- Từ ver AWS LBC 2.3.0 có thể sử dụng cả IP hoặc Instance cho Target
EKS Distro (EKS-D)
Khác với EKS, EKS-D không phải là một dịch vụ quản lý Kubernetes được cung cấp bởi AWS, mà là một phần mềm Kubernetes mã nguồn mở miễn phí cho phép khách hàng tạo và quản lý các cụm Kubernetes trên nền tảng của họ. EKS-D cho phép khách hàng kiểm soát hoàn toàn cụm Kubernetes của mình và không cần phải trả phí cho dịch vụ quản lý Kubernetes của AWS.
EKS-D cũng cung cấp tính năng bảo mật, độ tin cậy và khả năng mở rộng vượt trội, tuy nhiên người dùng phải tự quản lý và triển khai nó trên cơ sở hạ tầng của mình. Trong khi đó, EKS là một dịch vụ quản lý Kubernetes được cung cấp bởi AWS, có tính năng quản lý tất cả các khía cạnh của cụm Kubernetes, bao gồm cập nhật, bảo mật, tự động mở rộng và giảm thiểu thời gian hoạt động của cụm Kubernetes.
- Manually run Kubernetes cluster anywhere
- Bao gồm Kubernetes, etcd, networking, storage plugins
- Truy cập qua Github, S3, ECR
- Thường update cùng kubernetes
- Có thể sử dụng trên EC2 hoặc On-Premises
ECS Anywhere và EKS Anywhere
- Run ECS hoặc EKS trên infrastructure mà khách hàng quản lý, hỗ trợ bởi AWS (???)
- Run ECS/EKS trên On-Premises
- Run ECS/EKS bằng VMware vSphere
Logging
- Có thể chỉ định loại log nào sẽ send tới CloudWatch Logs
- API Server (api)
- Audit (audit)
- Authenticator (authenticator)
- Controller Manager (controllerManager)
- Scheduler (scheduler)
- Đối với node, pod và container log, sử dụng Fluent Bit, Fluentd log drivers để gửi log tới CloudWatch Logs
- Sử dụng CloudWatch Agent để gửi metric tới CloudWatch
- Log của container được lưu trong /var/log/containers
