EKS (Elastic Kubernetes Service)

Amazon EKS

  • Amazon EKS = Amazon Elastic Kubernetes Service
    → Dịch vụ được quản lý (managed service) để chạy Kubernetes cluster trên AWS
  • Đây là một phương thức để khởi tạo các Kubernetes cluster được quản lý sẵn trên AWS
  • Kubernetes là một hệ thống mã nguồn mở dùng để:
    • Tự động triển khai (deployment)
    • Mở rộng quy mô (scaling)
    • Quản lý các ứng dụng container hóa (thường là Docker)
  • EKS là một giải pháp thay thế cho ECS
    → Cùng mục tiêu là chạy container, nhưng sử dụng API và hệ sinh thái Kubernetes thay vì API riêng của ECS
  • EKS hỗ trợ hai loại compute:
    • EC2: nếu muốn tự quản lý worker node
    • Fargate: nếu muốn chạy container theo mô hình serverless (không quản lý hạ tầng)
  • Use case chính:
    → Khi công ty đã dùng Kubernetes ở môi trường on-premises hoặc cloud khác (Azure, GCP) và muốn migrate workload sang AWS mà vẫn giữ nguyên hệ sinh thái Kubernetes
  • Kubernetes là cloud-agnostic
    → Có thể chạy trên nhiều nền tảng cloud khác nhau như Azure, GCP, on-prem,...

Node Types

Managed Node Groups

  • AWS tự động tạo và quản lý các Node (EC2 instances) cho bạn.
  • Các Node này là một phần của Auto Scaling Group (ASG) do EKS quản lý.
  • Hỗ trợ cả On-Demand Instances và Spot Instances.
    ➡️ Dành cho team muốn giảm overhead quản lý hạ tầng EC2, chỉ cần tập trung vào workload.

Self-Managed Nodes

  • Bạn tự tạo node EC2 và tự đăng ký (register) node vào EKS cluster.
  • Có thể dùng sẵn Amazon EKS Optimized AMI (AMI được cấu hình sẵn cho EKS).
  • Cũng hỗ trợ On-Demand hoặc Spot Instances.
    ➡️ Dành cho team cần tùy chỉnh sâu hơn về cấu hình EC2, hệ thống mạng, hoặc tích hợp đặc thù (agent, monitoring...).

AWS Fargate

  • Không cần quản lý server/node.
  • AWS tự động cung cấp runtime cho container khi được deploy.
    ➡️ Dành cho use case serverless, không cần lo về provisioning node, phù hợp với workload nhỏ, scale linh hoạt.

Data Volumes

  • Cần định nghĩa StorageClass manifest trong EKS cluster của bạn.
    StorageClass là cách Kubernetes chỉ định kiểu lưu trữ cần dùng (loại ổ đĩa, tốc độ, vùng...).
  • Sử dụng driver tương thích Container Storage Interface (CSI).
    CSI là chuẩn hóa cho việc tích hợp storage với Kubernetes từ các bên thứ ba (EBS, EFS, FSx...).
  • Hỗ trợ các loại volume:
    • Amazon EBS (Elastic Block Store)
      Dạng block storage, thường dùng cho Pod chạy trên EC2. Dữ liệu gắn với 1 node.
    • Amazon EFS (Elastic File System) (Hỗ trợ Fargate)
      Dạng file system dùng chung được, mount nhiều Pod. Dùng tốt trong môi trường multi-node, scale ngang.
    • Amazon FSx for Lustre
      High-performance file system, tối ưu cho workloads HPC, AI/ML, big data.
    • Amazon FSx for NetApp ONTAP
      Dành cho các workload yêu cầu NetApp feature như snapshot, replication... phù hợp hệ thống enterprise legacy.
Bạn thấy bài này thế nào?