Cơ Bản về Kubernetes
Khi học về Kubernetes, những khái niệm đầu tiên bạn sẽ gặp là Pods, ReplicaSets, Deployments và Services. Đây là những thành phần cơ bản của mọi ứng dụng Kubernetes. Hãy cùng tìm hiểu chúng một cách đơn giản.
1. Pod là gì?
Pod là đơn vị nhỏ nhất trong Kubernetes.
- Nó giống như một lớp bao quanh các container ứng dụng của bạn.
- Một Pod thường sẽ chạy một phiên bản của ứng dụng.
👉 Ví dụ: Nếu bạn chạy một máy chủ web Nginx, nó sẽ sống bên trong một Pod.
1.1 Các tính năng chính của Pod
- Có thể chứa một hoặc nhiều container.
- Chia sẻ cùng địa chỉ IP và cổng.
- Cho phép giao tiếp giữa các container trong cùng một Pod dễ dàng hơn.
2. ReplicaSet
ReplicaSet đảm bảo số lượng Pods mong muốn luôn hoạt động.
- Nếu một Pod gặp sự cố, ReplicaSet sẽ tạo một Pod mới.
- Giúp đảm bảo tính khả dụng cao.
👉 Ví dụ: Nếu bạn muốn 3 bản sao của Pod Nginx, ReplicaSet sẽ duy trì chúng.
2.1 Cách hoạt động của ReplicaSet
- Theo dõi trạng thái của Pods đang chạy.
- Tự động điều chỉnh số lượng Pods nếu cần thiết.
3. Deployment
Deployment quản lý các ReplicaSets cho bạn.
- Nó giúp việc cập nhật ứng dụng dễ dàng hơn (cập nhật dần dần, hoàn tác).
- Thích hợp cho các ứng dụng không có trạng thái.
👉 Ví dụ: Bạn triển khai một ứng dụng Nginx với 3 bản sao. Nếu bạn nâng cấp phiên bản, Deployment sẽ thay thế các Pod cũ một cách từ từ.
3.1 Các lợi ích của Deployment
- Dễ dàng quay lại phiên bản trước nếu có lỗi xảy ra.
- Quản lý phiên bản của ứng dụng dễ dàng hơn.
4. Service
Service cung cấp khả năng truy cập cho các Pods qua mạng.
- Cung cấp một địa chỉ IP ảo ổn định (VIP) để bạn không phải lo lắng về việc Pods thay đổi.
- Hoạt động như một bộ cân bằng tải phía trước các Pods.
👉 Ví dụ: Ngay cả khi các Pods chết và khởi động lại, bạn vẫn có thể truy cập ứng dụng của mình bằng địa chỉ IP/Tên của Service.
4.1 Cách hoạt động của Service
- Chuyển tiếp lưu lượng mạng đến các Pods hiện tại.
- Giúp bảo đảm rằng người dùng luôn nhận được dịch vụ mà không bị gián đoạn.
🛠️ Kubernetes – Cách Thức Tương Tác
Khi làm việc với Kubernetes, bạn có thể tương tác theo hai cách:
| Cách Tiếp Cận | Cách Thức Hoạt Động | Ví Dụ |
|---|---|---|
| Imperative | Bạn chỉ định cho Kubernetes các bước cần thực hiện sử dụng lệnh kubectl |
kubectl run nginx --image=nginx |
| Declarative | Bạn định nghĩa những gì bạn muốn trong một tệp YAML, và Kubernetes tự động thực hiện | kubectl apply -f deployment.yaml |
Dưới đây là một hình ảnh đơn giản:
- Cách Tiếp Cận Imperative → Sử dụng chỉ các lệnh kubectl.
- Cách Tiếp Cận Declarative → Sử dụng YAML + kubectl.
- Cả hai cách đều hoạt động với Pods, ReplicaSets, Deployments và Services.
✅ Tóm Tắt
- Pod → Đơn vị nhỏ nhất, chạy ứng dụng của bạn.
- ReplicaSet → Đảm bảo số lượng Pods đúng đang chạy.
- Deployment → Quản lý ReplicaSets, hỗ trợ cập nhật.
- Service → Cung cấp khả năng truy cập Pods qua mạng với địa chỉ IP ổn định.
- Imperative vs Declarative → Chọn lệnh (imperative) hoặc YAML (declarative).
🚀 Thực Hành Tốt Nhất
- Luôn xác định số lượng replica cần thiết trong ReplicaSet để đảm bảo tính khả dụng cao.
- Sử dụng Deployment cho các ứng dụng không có trạng thái để dễ dàng quản lý cập nhật.
- Tạo Service để giúp cho việc truy cập ứng dụng của bạn trở nên dễ dàng và ổn định hơn.
⚠️ Cạm Bẫy Thường Gặp
- Không nên triển khai quá nhiều Pods mà không cần thiết, điều này có thể dẫn đến lãng phí tài nguyên.
- Đảm bảo rằng các Pods có thể giao tiếp với nhau qua Service để tránh lỗi khi Pods khởi động lại.
🏎️ Mẹo Tối Ưu Hiệu Suất
- Sử dụng Horizontal Pod Autoscaler để tự động điều chỉnh số lượng Pods dựa trên mức sử dụng tài nguyên.
- Theo dõi hiệu suất của các Pods và Services để phát hiện và khắc phục sự cố kịp thời.
❓ Câu Hỏi Thường Gặp
- Kubernetes có thể chạy trên nền tảng nào? Kubernetes có thể chạy trên bất kỳ nền tảng nào hỗ trợ container, bao gồm cả AWS, GCP và Azure.
- Tại sao cần sử dụng ReplicaSet? ReplicaSet đảm bảo rằng ứng dụng của bạn luôn có sẵn và có thể phục hồi sau sự cố.
🌟 Cảm ơn bạn đã đọc! Nếu bài viết này hữu ích, hãy cho tôi một like ❤️, theo dõi hoặc chia sẻ để tôi có động lực tạo ra nhiều nội dung hơn.
— Latchu | Kỹ Sư DevOps & Cloud Chuyên Nghiệ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 đám mây thực tế.