🚀 Triển Khai ReplicaSets và Thực Hành Tính Sẵn Sàng Cao & Khả Năng Mở Rộng trong Google Kubernetes Engine (GCP)
Kubernetes ReplicaSets là nền tảng đảm bảo ứng dụng của bạn hoạt động ổn định, luôn sẵn sàng và có thể mở rộng dễ dàng trong môi trường sản xuất. Trong hướng dẫn này, chúng ta sẽ triển khai một ReplicaSet trên Google Kubernetes Engine (GKE) và kiểm tra các tính năng Tính Sẵn Sàng Cao (HA) và Khả Năng Mở Rộng của nó.
🔹 Mục Lục
- Giới Thiệu về ReplicaSets
- Tạo ReplicaSet
- Phơi Bày ReplicaSet như một Dịch Vụ
- Kiểm Tra Độ Tin Cậy của ReplicaSet
- Kiểm Tra Khả Năng Mở Rộng của ReplicaSet
- Dọn Dẹp
- Tóm Tắt
- Câu Hỏi Thường Gặp
🔹 Giới Thiệu về ReplicaSets
ReplicaSet là một đối tượng trong Kubernetes đảm bảo số lượng bản sao (pod) nhất định đang chạy tại bất kỳ thời điểm nào.
- ✅ Nếu một pod bị sập, ReplicaSet sẽ tự động tạo lại nó.
- ✅ Giúp duy trì Tính Sẵn Sàng Cao.
- ✅ Hỗ trợ Cân Bằng Tải khi kết hợp với Dịch Vụ.
- ✅ Cho phép Mở Rộng hoặc Thu Nhỏ dễ dàng khi lưu lượng truy cập thay đổi.
🔹 Tạo ReplicaSet
Bước 1: Tạo ReplicaSet
Tạo một tệp có tên replicaset-demo.yml:
yaml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: my-helloworld-rs
labels:
app: my-helloworld
spec:
replicas: 3
selector:
matchLabels:
app: my-helloworld
template:
metadata:
labels:
app: my-helloworld
spec:
containers:
- name: my-helloworld-app
image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
ports:
- containerPort: 8080
Triển khai ReplicaSet:
bash
kubectl create -f replicaset-demo.yml
Bước 2: Liệt Kê ReplicaSets
bash
kubectl get replicaset
kubectl get rs
Bước 3: Mô Tả ReplicaSet
bash
kubectl describe rs my-helloworld-rs
Bước 4: Liệt Kê Pods
bash
# Liệt kê pods
kubectl get pods
# Lấy thông tin chi tiết pod
kubectl describe pod <pod-name>
# Liệt kê pods với IP và Node
kubectl get pods -o wide
🔹 Phơi Bày ReplicaSet như một Dịch Vụ
Phơi bày ReplicaSet ra internet với dịch vụ LoadBalancer:
bash
kubectl expose rs my-helloworld-rs \
--type=LoadBalancer \
--port=80 \
--target-port=8080 \
--name=my-helloworld-rs-service
Liệt kê dịch vụ:
bash
kubectl get svc
Truy cập ứng dụng qua IP bên ngoài:
bash
http://<External-IP>
curl http://<External-IP>
👉 Mỗi yêu cầu sẽ được chuyển đến các pod khác nhau. Kiểm tra điều này bằng cách chạy:
bash
while true; do curl http://<EXTERNAL-IP>; sleep 1; done
🔹 Kiểm Tra Độ Tin Cậy của ReplicaSet (Tính Sẵn Sàng Cao)
ReplicaSet đảm bảo các pod luôn có sẵn. Hãy thử nghiệm:
bash
# Liệt kê pods
kubectl get pods
# Xóa một pod
kubectl delete pod <pod-name>
# Kiểm tra pod mới được tạo tự động
kubectl get pods
👉 Lưu ý rằng ReplicaSet đã tự động tạo một pod mới để duy trì số lượng bản sao.
🔹 Kiểm Tra Khả Năng Mở Rộng của ReplicaSet
ReplicaSets làm cho việc mở rộng trở nên dễ dàng.
Tùy Chọn 1: Cập Nhật YAML
Thay đổi số lượng replicas từ 3 → 5 trong replicaset-demo.yml:
yaml
spec:
replicas: 5
Áp dụng thay đổi:
bash
kubectl apply -f replicaset-demo.yml
Kiểm tra các pod mới:
bash
kubectl get pods -o wide
Tùy Chọn 2: Mở Rộng Bằng Lệnh Imperative
bash
# Mở rộng ra
kubectl scale --replicas=7 replicaset my-helloworld-rs
# Thu nhỏ lại
kubectl scale --replicas=2 replicaset my-helloworld-rs
Tùy Chọn 3: Chỉnh Sửa ReplicaSet
bash
kubectl edit replicaset my-helloworld-rs
Thay đổi:
yaml
replicas: 6
Lưu & thoát, sau đó kiểm tra pods:
bash
kubectl get pods
🔹 Dọn Dẹp
Bước 1: Xóa ReplicaSet
bash
kubectl delete rs my-helloworld-rs
kubectl get rs
Bước 2: Xóa Dịch Vụ
bash
kubectl delete svc my-helloworld-rs-service
kubectl get svc
🎯 Tóm Tắt
Trong hướng dẫn này, chúng ta đã:
- Triển khai một ReplicaSet với 3 pod.
- Phơi bày nó ra internet bằng dịch vụ LoadBalancer.
- Kiểm tra Tính Sẵn Sàng Cao bằng cách xóa pods.
- Thực hành Khả Năng Mở Rộng bằng cách mở rộng và thu nhỏ pods.
👉 ReplicaSets là nền tảng của các ứng dụng Kubernetes đáng tin cậy và có khả năng mở rộng. Trong môi trường sản xuất, chúng thường được quản lý bởi Deployments, nhưng thực hành ReplicaSets trực tiếp sẽ giúp bạn có nền tảng vững chắc. 🚀
❓ Câu Hỏi Thường Gặp
1. ReplicaSet và Deployment khác nhau như thế nào?
Đáp: Deployment là một cách cao cấp hơn để quản lý ReplicaSets, cho phép bạn dễ dàng cập nhật và quay lại phiên bản trước đó.
2. Có thể sử dụng ReplicaSets mà không cần Services không?
Đáp: Có, nhưng nếu không có Service, các pod sẽ không có cách nào để nhận lưu lượng từ bên ngoài.
3. Làm thế nào để theo dõi hiệu suất của ReplicaSets?
Đáp: Bạn có thể sử dụng công cụ giám sát như Prometheus để theo dõi số lượng pod và tải của chúng.
🌟 Cảm ơn bạn đã đọc! Nếu bài viết này mang lại giá trị cho bạn, hãy thích ❤️, theo dõi hoặc chia sẻ để khuyến khích tôi tiếp tục tạo ra nhiều nội dung hơn nữa.
— Latchu | Kỹ Sư DevOps & Cloud Cao Cấp
☁️ AWS | GCP | ☸️ Kubernetes | 🔐 Bảo Mật | ⚡ Tự Động Hóa
📌 Chia sẻ hướng dẫn thực hành, các phương pháp tốt nhất & giải pháp thực tế trên đám mây.