Nội dung bài viết
Hi các bạn 👋. Mình là Hùng Anh.
Đây là bài thứ hai trong series Kubernetes Fundamentals. Ở bài trước, mình đã tìm hiểu các thuật ngữ liên quan đến kernel, driver, và sandbox trong Linux. Lần này cùng mình phân tích xem 1 server vật lý thực sự trông như thế nào, và vì sao không thể cứ deploy mãi lên cùng 1 server nhé.
Bắt đầu thôi.
1. Server vật lý là gì

1 server vật lý đơn giản là 1 máy tính thật — 1 chiếc máy đang nằm trong datacenter hoặc thậm chí nó có thể chỉ là 1 chiếc laptop. Các thành phần của nó bao gồm:
- Hardware: CPU, RAM, ổ đĩa, card mạng.
- Kernel: Thành phần duy nhất được phép giao tiếp trực tiếp với phần cứng.
- Driver: Module dịch các lệnh chung của kernel thành lệnh mà phần cứng cụ thể hiểu được.
- OS (hệ điều hành): Bao gồm kernel cộng với mọi thứ đi kèm nó như shell, package manager, các service hệ thống.
- Application: Các ứng dụng đang chạy trên server.
Mọi thành phần trên server đều sử dụng 1 kernel duy nhất, chạy trên đúng 1 bộ phần cứng duy nhất.
2. Các giới hạn của server vật lý
Giả sử bạn cần deploy 1 web application. Cách đơn giản nhất là thuê hoặc mua 1 máy vật lý, cài OS, deploy app lên đó. Thời gian đầu, cách này chạy tốt nhưng nó cũng có một vài nhược điểm:
- Chưa tận dụng hết tài nguyên: Các khảo sát về server x86 thông thường cho thấy mức sử dụng CPU trung bình chỉ khoảng 10-15%. 85-90% còn lại là tài nguyên bạn đã trả tiền nhưng gần như không dùng tới.
- 1 máy, 1 môi trường: Giả sử app thứ hai cần 1 môi trường khác — 1 phiên bản OS khác. Lựa chọn duy nhất là thêm 1 máy vật lý khác.
- Scale rất chậm: Traffic tăng đột biến, cần thêm tài nguyên? Mua, lắp, đấu dây thêm 1 máy vật lý mất từ vài ngày đến vài tuần — trong khi 1 đợt traffic tăng thực tế chỉ có vài phút.
- Tất cả các app có thể cùng go down: 1 máy, 1 điểm lỗi duy nhất. Nếu phần cứng hỏng, mọi app đang chạy trên đó đều sập cùng lúc.

3. Tổng kết
1 server vật lý bao gồm 1 kernel, 1 bộ phần cứng và 1 OS đã cài lên nó. Đơn giản, nhưng có giới hạn: phần lớn tài nguyên rảnh rỗi mà không chia sẻ được, chỉ chạy được 1 OS/1 môi trường tại 1 thời điểm, và scale hệ thống đồng nghĩa với việc phải mua, lắp thêm phần cứng.
Liệu có cách nào để 1 phần cứng vật lý duy nhất chạy được nhiều OS khác nhau cùng lúc và tận dụng được phần tài nguyên đang rảnh không? Đó chính là ý tưởng đứng đằng sau Virtual Machine (VM) - chủ đề mà mình và bạn sẽ cùng tìm hiểu ở bài tiếp theo.
Giờ thì tạm biệt và hẹn gặp lại.
Happy reading! 🍵
Tài liệu tham khảo
- The history of virtualization and its mark on data center management - TechTarget
- What is Server Utilization Rate? A Guide to Data Center Efficiency - Hyperview
Bài viết liên quan
Kubernetes Cluster Architecture
1 cluster Kubernetes thực sự gồm những gì? Control Plane ra quyết định cái gì chạy ở đâu, các node thực sự chạy chúng, còn các addon lo phần còn lại.
Container
Container giải quyết vấn đề nặng nề và khởi động chậm của Virtual Machine bằng cách bỏ hẳn kernel riêng — thứ mà mỗi VM luôn phải cõng theo.
Virtual Machine
Virtual Machine giải quyết bài toán '1 máy, 1 môi trường' của server vật lý bằng cách nào, và cách triển khai này có những nhược điểm gì?
