Trong bài này mình sẽ giới thiệu về dịch vụ Amazon EKS (Elastic Kubernetes Service) và hướng dẫn triển khai một App đơn giản.
Xem thêm:
Amazon Simple Notification Service (AWS SNS) – Bài 20
1. Kubernetes là gì?
Trước khi nói về EKS thì ta phải hiểu Kubernetes là gì đã ha. Hiểu nôm na thì Kubernetes (K8s) là một nền tảng mã nguồn mở dùng để triển khai, mở rộng (scale) và quản lý ứng dụng container. Nó kiểu như “ban tổ chức” đứng giữa, đảm bảo ứng dụng của bạn luôn chạy đúng, có đủ tài nguyên và dễ dàng mở rộng. Thay vì bạn phải tự bật container, theo dõi trạng thái, check log… thì Kubernetes lo hết cho bạn.
2. Amazon EKS là gì?
Amazon EKS là viết tắt của Elastic Kubernetes Service – một dịch vụ được quản lý bởi AWS cho phép bạn dễ dàng triển khai và vận hành các cụm Kubernetes trên nền tảng đám mây. Tức là bạn không cần setup master node, vọc control plane, cứ tập trung lo cho ứng dụng thôi. Nó giúp bạn:
- Dễ dàng tạo cluster chỉ vài click hoặc vài dòng code.
- Tận dụng được hạ tầng AWS (EC2, IAM, VPC, ELB…).
- Vẫn giữ nguyên tính di động của Kubernetes (chuyển cloud vẫn được).
3. EKS có mấy chế độ chạy
Amazon EKS hỗ trợ 2 kiểu chạy chính:
- EC2 mode: bạn dùng EC2 làm Worker Nodes. Tức là bạn vẫn phải quản lý hạ tầng phần nào đó.
- Fargate mode: hạy container ở chế độ serverless, không cần quản lý hạ tầng máy chủ.
4. Cấu trúc cơ bản của một cụm EKS
Một cluster EKS thường nằm trong một VPC với nhiều AZ (Availability Zone). Các thành phần chính:
- VPC/Subnet: mạng cho cluster chạy.
- Worker Nodes: EC2 instance chạy ứng dụng.
- Pods: đơn vị triển khai nhỏ nhất của Kubernetes (chạy trong node).
- Auto Scaling Group: tăng/giảm node tự động.
- Load Balancer: để expose ứng dụng ra ngoài.
5. Các loại node trong Amazon EKS
Có ba loại node chính trong EKS:
a. Managed Node Groups
- Được AWS quản lý.
- Tự động gắn vào Auto Scaling Group.
- Hỗ trợ cả On-Demand và Spot Instances.
b. Self-managed Nodes
- Bạn tự launch EC2, tự gắn vào cluster.
- Linh hoạt tuỳ biến nhưng phải tự lo hết.
- Hỗ trợ On-Demand và Spot Instances.
c. Fargate Mode
- Không cần EC2.
- Không quản lý hạ tầng, chỉ khai báo là chạy.
- Dễ, nhưng chưa hỗ trợ hết tất cả tính năng như EC2.
6. Lưu trữ trong Amazon EKS
Amazon EKS hỗ trợ nhiều loại bộ nhớ thông qua Container Storage Interface (CSI). Để sử dụng, bạn cần khai báo StorageClass manifest phù hợp.
Các dịch vụ lưu trữ được hỗ trợ:
- Amazon EBS (Elastic Block Store): dạng block storage, dùng cho EC2
- Amazon EFS (Elastic File System): đây là loại duy nhất được hỗ trợ với Fargate
- Amazon FSx for Lustre/Amazon FSx for NetApp ONTAP: chuyên cho workload năng về file I/O
7. Hands-on: Tạo cụm EKS với EC2 Node Group
7.1. Cài đặt AWS CLI
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" sudo apt install unzip unzip awscliv2.zip sudo ./aws/install
Kiểm tra:
aws --version
7.2. Cấu hình AWS CLI
aws configure
Nhập thông tin cấu hình:;
- AWS Access Key ID:
AKIAYYPI4XJEPOYLK2HK - AWS Secret Access Key:
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 - Region:
ap-southeast-1 - Output format:
json
7.3. Cài đặt kubectl
curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl" chmod +x ./kubectl sudo mv ./kubectl /usr/local/bin kubectl version --client
7.4. Cài đặt eksctl
curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp sudo mv /tmp/eksctl /usr/local/bin eksctl version
7.5. Tạo EKS Cluster với eksctl
eksctl create cluster \ --name eks \ --version 1.33 \ --region ap-southeast-1 \ --nodegroup-name worker-nodes \ --node-type t2.large \ --nodes 2 \ --nodes-min 2 \ --nodes-max 3
aws eks update-kubeconfig --name eks-fis-lab --region ap-southeast-1 kubectl get nodes