Giới thiệu
Chào cộng đồng DevOps! 👋 Trong 20 ngày qua, tôi đã chia sẻ hành trình học hỏi DevOps của mình một cách liên tục. Một điều thú vị là mặc dù tương tác trên các nền tảng như Dev.to và Medium khá chậm, nhưng điều đó không quan trọng ✅ vì những bài viết này giúp tôi có trách nhiệm hơn, học hỏi nhiều hơn và ghi lại sự phát triển của bản thân. 🌱
Hôm qua, tôi đã khám phá Docker — công cụ thần kỳ giúp ứng dụng trở nên di động. Hôm nay, tôi sẽ nhảy vọt tiếp theo → Kubernetes (K8s), nền tảng đảm bảo các container hoạt động đáng tin cậy ở quy mô lớn trong môi trường sản xuất.
Tại sao Kubernetes lại quan trọng
Hãy tưởng tượng bạn đang chạy hàng trăm container. Ai sẽ khởi động chúng? Ai sẽ khởi động lại chúng nếu chúng gặp sự cố? Ai sẽ cân bằng lưu lượng? 🤔 Đó chính là lúc Kubernetes xuất hiện:
- ✅ Tự động triển khai, quy mô và phục hồi
- ✅ Phân phối lưu lượng với cân bằng tải tích hợp
- ✅ Quản lý lưu trữ (Volumes & PVCs)
- ✅ Cho phép cập nhật liên tục mà không bị gián đoạn
Các khái niệm cơ bản (Dành cho người mới)
- Pod → Đơn vị triển khai nhỏ nhất (bao gồm một hoặc nhiều container)
- ReplicaSet → Đảm bảo số lượng Pod đúng luôn hoạt động
- Deployment → Quản lý ReplicaSets và cập nhật liên tục
- Service → Phơi bày ứng dụng của bạn bên trong/bên ngoài cụm
- ConfigMap & Secret → Lưu trữ cấu hình và dữ liệu nhạy cảm một cách an toàn
- Persistent Volume (PV) → Lưu trữ tồn tại sau khi Pod khởi động lại
Ví dụ: Tệp YAML Triển Khai Đơn Giản
yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp-deployment
spec:
replicas: 3
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp
image: myapp:v1
ports:
- containerPort: 3000
👉 Triển khai nó với:
bash
kubectl apply -f deployment.yaml
Các trường hợp sử dụng DevOps
- Chạy microservices qua các cụm
- Tự động quy mô khối lượng công việc với HPA (Horizontal Pod Autoscaler)
- Kích hoạt tự phục hồi (Pods tự động khởi động lại)
- Quản lý khối lượng công việc sản xuất với sự tự tin
Mẹo chuyên nghiệp cho người mới
- Bắt đầu với Minikube hoặc Kind để thực hành địa phương
- Luôn sử dụng Namespaces để tổ chức tài nguyên
- Gỡ lỗi với
kubectl describe&kubectl logs - Sử dụng công cụ kiểm tra YAML để tránh sai sót
Thực hành Mini-Lab (Thử ngay!)
1️⃣ Cài đặt Minikube
2️⃣ Tạo Deployment như trên
3️⃣ Phơi bày nó với Service (kubectl expose)
4️⃣ Tăng/giảm số lượng Pod và xem phép thuật diễn ra 🎩
Điểm Nhấn Chính
Docker đã mang đến cho chúng ta container. Kubernetes mang đến cho chúng ta sự quản lý.
👉 Nếu Docker là chiếc xe, Kubernetes là hệ thống giao thông 🚦 giúp mọi thứ hoạt động trơn tru ở quy mô lớn.
Ghi Chú Quan Trọng
- Cấu hình an toàn: Giữ cho dữ liệu nhạy cảm an toàn trong ConfigMap và Secret.
- Giám sát: Theo dõi tình trạng của Pods để phát hiện sự cố kịp thời.
Câu Hỏi Thường Gặp
Q1: Kubernetes có thể chạy trên máy chủ nào?
A1: Kubernetes có thể chạy trên nhiều máy chủ, bao gồm cả máy chủ vật lý và máy ảo.
Q2: Tôi cần kiến thức gì trước khi học Kubernetes?
A2: Kiến thức cơ bản về Docker và command line sẽ rất hữu ích.
Kết luận
Tôi đã đăng bài hàng ngày trong 21 ngày liên tiếp — nhưng tôi rất muốn nghe ý kiến từ bạn 👇
👉 Khoảnh khắc “aha” đầu tiên của bạn với Kubernetes là gì?
👉 Bạn thích các bài lab thực hành hay các bài viết lý thuyết sâu?
Phản hồi của bạn sẽ giúp tôi cải thiện 🙏
🔖 #Kubernetes #Docker #DevOps #SRE #LearningInPublic