0
0
Lập trình
Thaycacac
Thaycacac thaycacac

Triển Khai ReplicaSets: Đảm Bảo Tính Sẵn Sàng Cao trên GKE

Đăng vào 1 tháng trước

• 4 phút đọc

🚀 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

  1. Giới Thiệu về ReplicaSets
  2. Tạo ReplicaSet
  3. Phơi Bày ReplicaSet như một Dịch Vụ
  4. Kiểm Tra Độ Tin Cậy của ReplicaSet
  5. Kiểm Tra Khả Năng Mở Rộng của ReplicaSet
  6. Dọn Dẹp
  7. Tóm Tắt
  8. 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 Copy
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 Copy
kubectl create -f replicaset-demo.yml

Bước 2: Liệt Kê ReplicaSets

bash Copy
kubectl get replicaset
kubectl get rs

Bước 3: Mô Tả ReplicaSet

bash Copy
kubectl describe rs my-helloworld-rs

Bước 4: Liệt Kê Pods

bash Copy
# 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 Copy
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 Copy
kubectl get svc

Truy cập ứng dụng qua IP bên ngoài:

bash Copy
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 Copy
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 Copy
# 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 Copy
spec:
  replicas: 5

Áp dụng thay đổi:

bash Copy
kubectl apply -f replicaset-demo.yml

Kiểm tra các pod mới:

bash Copy
kubectl get pods -o wide

Tùy Chọn 2: Mở Rộng Bằng Lệnh Imperative

bash Copy
# 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 Copy
kubectl edit replicaset my-helloworld-rs

Thay đổi:

yaml Copy
replicas: 6

Lưu & thoát, sau đó kiểm tra pods:

bash Copy
kubectl get pods

🔹 Dọn Dẹp

Bước 1: Xóa ReplicaSet

bash Copy
kubectl delete rs my-helloworld-rs
kubectl get rs

Bước 2: Xóa Dịch Vụ

bash Copy
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.

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào