Kubernetes cơ bản: Hướng dẫn cho người mới bắt đầu với container orchestration
Mục lục bài viết
1. Kubernetes là gì và tại sao cần nó?
Kubernetes (viết tắt là K8s) là nền tảng mã nguồn mở do Google phát triển, dùng để tự động hóa việc triển khai, mở rộng và quản lý các ứng dụng container. Trong thực tế, một ứng dụng có thể gồm hàng chục container chạy trên nhiều máy chủ khác nhau. Kubernetes giúp bạn quản lý tất cả chúng như một hệ thống duy nhất: tự động khởi động lại container khi gặp lỗi, mở rộng số lượng container khi lượng truy cập tăng, cân bằng tải và cập nhật ứng dụng mà không gây gián đoạn.
2. Kiến trúc Kubernetes: Cluster, Node và Pod
Một cluster Kubernetes gồm hai loại thành phần: Control Plane (bộ não) và Worker Nodes (cánh tay). Control Plane chạy các thành phần như API Server (giao tiếp với người dùng), Scheduler (xếp lịch chạy container), Controller Manager (giám sát trạng thái) và etcd (kho lưu trữ cấu hình). Worker Nodes chạy các Pod - đơn vị nhỏ nhất trong K8s, chứa một hoặc nhiều container. Mỗi Node có Kubelet (agent giao tiếp với Control Plane) và kube-proxy (quản lý mạng).
3. Các đối tượng cơ bản: Deployment, Service, ConfigMap
Deployment là đối tượng khai báo trạng thái mong muốn của ứng dụng: bạn nói 'tôi muốn chạy 3 bản sao của container A', Kubernetes sẽ duy trì đúng 3 bản. Service là địa chỉ IP ổn định để các Pod khác hoặc người dùng bên ngoài truy cập vào ứng dụng. ConfigMap và Secret lưu cấu hình và thông tin nhạy cảm (mật khẩu, API key) riêng biệt, giúp bạn thay đổi cấu hình mà không cần build lại image.
4. Triển khai ứng dụng đầu tiên trên Kubernetes
Bước 1: Cài đặt minikube (môi trường K8s cục bộ) hoặc dùng dịch vụ cloud (Google Kubernetes Engine, Amazon EKS).
Bước 2: Tạo file deployment.yaml khai báo image, cổng và số replica.
Bước 3: Chạy 'kubectl apply -f deployment.yaml'.
Bước 4: Tạo service.yaml expose ứng dụng ra ngoài, chạy 'kubectl apply -f service.yaml'.
Bước 5: Kiểm tra với 'kubectl get pods' và 'kubectl get services'. Toàn bộ quy trình chỉ mất 10-15 phút cho ứng dụng đơn giản.
🙋 Câu hỏi thường gặp
Kubernetes khác gì với Docker Compose?
Docker Compose phù hợp để chạy nhiều container trên một máy duy nhất, thường dùng trong môi trường phát triển. Kubernetes chạy được trên nhiều máy (cluster), có khả năng tự động mở rộng, tự phục hồi, và quản lý ở quy mô lớn - phù hợp cho môi trường production.
Học Kubernetes có khó không?
Kubernetes có đường cong học tập khá dốc do có nhiều khái niệm mới. Nên bắt đầu với Docker và container trước, sau đó dùng minikube hoặc kind để thực hành K8s trên máy tính cá nhân. Dành 2-4 tuần để nắm vững các khái niệm cốt lõi.
Có cần học Kubernetes nếu không làm DevOps?
Nếu bạn là lập trình viên backend, kiến thức cơ bản về K8s giúp bạn hiểu cách ứng dụng được triển khai và debug hiệu quả hơn. Nhiều công ty hiện nay yêu cầu lập trình viên có hiểu biết về container và orchestration.