0

Bài 4. ReplicaSet - Điều gì xảy ra khi Pod bị chết?

Ở bài trước, chúng ta đã biết Pod là đơn vị nhỏ nhất mà Kubernetes dùng để chạy ứng dụng.

Nhưng hãy thử tưởng tượng tình huống sau.

Bạn vừa deploy một website lên Kubernetes.

Mọi thứ hoạt động rất ổn...

Cho đến khi một Node gặp sự cố hoặc ai đó vô tình xóa Pod.

Pod (Running)
      │
      ▼
💥 Pod bị xóa

Kết quả?

Website của bạn cũng biến mất.

Đây là vấn đề lớn nhất nếu chỉ sử dụng Pod.


1. ReplicaSet ra đời để giải quyết điều gì?

ReplicaSet có một nhiệm vụ rất đơn giản:

Luôn đảm bảo có đúng số lượng Pod mà bạn mong muốn đang chạy.

Ví dụ bạn yêu cầu:

replicas: 3

ReplicaSet sẽ liên tục kiểm tra trạng thái của cluster.

Nếu mọi thứ bình thường:

Pod A ✅
Pod B ✅
Pod C ✅

Nếu một Pod bị chết:

Pod A ✅
Pod B ❌
Pod C ✅

ReplicaSet sẽ ngay lập tức tạo một Pod mới.

Pod A ✅
Pod C ✅
Pod D ✅ (được tạo mới)

Người dùng gần như không cần can thiệp.


2. ReplicaSet hoạt động như thế nào?

ReplicaSet không "chạy" Pod.

Nó chỉ liên tục so sánh hai trạng thái:

  • Trạng thái mong muốn (Desired State): Có 3 Pod.
  • Trạng thái thực tế (Current State): Chỉ còn 2 Pod.

Nếu hai trạng thái khác nhau, ReplicaSet sẽ hành động để đưa hệ thống trở về đúng như mong muốn.

Đây chính là một trong những nguyên lý quan trọng nhất của Kubernetes:

Kubernetes không chỉ tạo tài nguyên một lần, mà liên tục đảm bảo hệ thống luôn ở trạng thái mong muốn.


Một ví dụ đơn giản

Giả sử bạn có ReplicaSet:

replicas: 3

Ban đầu:

Desired: 3
Current: 3

Sau đó bạn xóa một Pod:

kubectl delete pod my-app-abc123

Ngay sau vài giây:

Desired: 3
Current: 2

ReplicaSet sẽ tự động tạo:

my-app-xyz789

Và hệ thống quay trở lại:

Desired: 3
Current: 3

3. Có nên tự tạo ReplicaSet?

Trong thực tế, hầu như không.

Phần lớn các dự án sẽ sử dụng Deployment. Deployment sẽ tự động tạo và quản lý ReplicaSet cho bạn, đồng thời hỗ trợ cập nhật phiên bản và quay lui khi có lỗi.

Vì vậy, bạn vẫn cần hiểu ReplicaSet, nhưng rất hiếm khi phải viết YAML cho nó.


Tổng kết

ReplicaSet giúp Kubernetes trở nên "tự chữa lành" (Self-healing).

  • ✅ Theo dõi số lượng Pod đang chạy.
  • ✅ Tự tạo Pod mới khi Pod bị xóa hoặc gặp sự cố.
  • ✅ Đảm bảo hệ thống luôn đạt trạng thái mong muốn.

ReplicaSet giải quyết bài toán duy trì số lượng Pod, nhưng lại xuất hiện một câu hỏi mới.

Nếu muốn cập nhật ứng dụng từ phiên bản v1 lên v2 mà không làm gián đoạn người dùng thì sao?

Đó chính là lý do Deployment ra đời, và cũng sẽ là chủ đề của bài viết tiếp theo.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí