Bài 14. StorageClass - Tự động cấp phát ổ đĩa cho Kubernetes
Ở bài trước, chúng ta đã biết cách sử dụng Persistent Volume (PV) và Persistent Volume Claim (PVC) để lưu trữ dữ liệu lâu dài. Tuy nhiên, vẫn còn một vấn đề...
Nếu mỗi lần cần ổ đĩa đều phải tạo PV thì sao?
Hãy tưởng tượng bạn là quản trị viên của một Kubernetes Cluster.
Một lập trình viên cần chạy PostgreSQL và gửi cho bạn yêu cầu:
"Anh ơi, em cần một ổ SSD dung lượng 20GB."
Bạn sẽ phải:
- Tạo một Persistent Volume (PV).
- Chọn đúng loại ổ đĩa.
- Cấu hình dung lượng.
- Kết nối với hệ thống lưu trữ.
- Sau đó lập trình viên mới có thể tạo PVC để sử dụng.
Nếu chỉ có vài ứng dụng thì không sao.
Nhưng nếu mỗi ngày có hàng chục, thậm chí hàng trăm yêu cầu như vậy thì sao?
Rõ ràng, cách làm này rất tốn thời gian.
Đó là lý do StorageClass ra đời.
1. StorageClass là gì?
Có thể hiểu đơn giản:
StorageClass là "mẫu cấu hình" giúp Kubernetes tự động tạo ổ đĩa khi có ứng dụng yêu cầu.
Thay vì quản trị viên phải tạo PV trước, Kubernetes sẽ tự tạo một PV phù hợp dựa trên StorageClass.
2. Hãy hình dung như đặt phòng khách sạn
Không có StorageClass:
Khách
│
▼
Lễ tân chuẩn bị phòng
│
▼
Khách mới được nhận phòng
Có StorageClass:
Khách
│
▼
Đặt phòng online
│
▼
Hệ thống tự cấp phòng
StorageClass cũng hoạt động theo cách tương tự.
3. StorageClass hoạt động như thế nào?
Giả sử bạn tạo một PVC:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: postgres-pvc
spec:
storageClassName: standard
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi
Kubernetes sẽ kiểm tra:
"Đã có PV phù hợp chưa?"
Nếu chưa có, nó sẽ tiếp tục:
"PVC này yêu cầu StorageClass
standard."
Sau đó StorageClass sẽ tự động tạo một Persistent Volume mới, rồi gắn PV đó cho PVC.
Toàn bộ quá trình diễn ra tự động.
4. Luồng hoạt động
Pod
│
▼
PVC
│
▼
StorageClass
│
▼
Tự tạo PV
│
▼
Cloud Disk / NFS / Storage
Điều này được gọi là Dynamic Provisioning (cấp phát động).
5. Lợi ích của StorageClass
✅ Không cần tạo PV thủ công.
✅ Nhà phát triển chỉ cần tạo PVC.
✅ Tự động cấp phát ổ đĩa.
✅ Dễ quản lý nhiều loại lưu trữ khác nhau.
Ví dụ:
standard→ HDD giá rẻssd→ SSD tốc độ caopremium→ Ổ đĩa hiệu năng cao cho Database
Chỉ cần đổi tên StorageClass trong PVC, Kubernetes sẽ chọn đúng loại lưu trữ.
6. Khi nào nên dùng StorageClass?
Trong các Kubernetes Cluster hiện đại, StorageClass gần như luôn được sử dụng.
Nó đặc biệt hữu ích khi:
- Chạy Database như PostgreSQL hoặc MySQL.
- Triển khai nhiều ứng dụng cần lưu trữ dữ liệu.
- Sử dụng Kubernetes trên các nền tảng đám mây như AWS, Azure hoặc Google Cloud.
Tổng kết
Trong bài trước, chúng ta đã biết:
PVC dùng để yêu cầu một ổ đĩa.
Trong bài này, chúng ta học thêm rằng:
StorageClass giúp Kubernetes tự động tạo ổ đĩa phù hợp để đáp ứng yêu cầu đó.
Nhờ StorageClass, bạn không còn phải tạo từng Persistent Volume bằng tay, giúp việc triển khai ứng dụng nhanh hơn và thuận tiện hơn rất nhiều.
Bài tiếp theo
Đến đây, chúng ta đã biết cách triển khai ứng dụng, kết nối mạng và lưu trữ dữ liệu.
Nhưng còn một câu hỏi quan trọng:
Kubernetes quyết định Pod sẽ chạy trên Node nào trong Cluster?
Đó sẽ là chủ đề của bài tiếp theo: "Kubernetes Scheduler - Ai quyết định Pod chạy ở Node nào?"
All rights reserved