Danh sách bài viết trong series Học microservice cơ bản
Bài 1: Microservices Là Gì?
Bài 2: Chuẩn Bị Môi Trường Để Học Microservices
Bài 3: Viết Microservice Đầu Tiên
Bài 4: Microservices Và Monolith
Bài 5: Giao Tiếp Giữa Microservices
Bài 6: Giao Tiếp Nâng Cao Trong Microserivce với RabbitMQ
Bài 7: Container Hóa Microservices Với Docker
Bài 8: Quản Lý Nhiều Microservices Với Docker Compose
Bài 9: Học microservices cơ bản với minikube
Bài 9: Kubernetes 101: Hiểu Và Cài Đặt Cụm Đầu Tiên
Ở bài trước, bạn đã học cách dùng Docker Compose để chạy nhiều microservices cùng lúc – một bước tiến lớn trong việc quản lý hệ thống. Hôm nay, chúng ta sẽ đi xa hơn một chút, làm quen với Kubernetes – một công cụ mạnh mẽ để triển khai và quản lý microservices ở quy mô lớn. Mình nhớ lúc mới học Kubernetes, mình cảm thấy hơi choáng vì có nhiều khái niệm mới. Nhưng sau khi làm thử, mình thấy nó không quá khó, và mình sẽ hướng dẫn bạn từng bước để cài đặt cụm Kubernetes đầu tiên trên máy của bạn. Mọi thứ sẽ được giải thích thật rõ ràng để bạn dễ theo dõi. Sẵn sàng chưa nào?
Kubernetes Là Gì? Hãy Nghĩ Về Việc Quản Lý Nhiều Quán Ăn
Trước tiên, mình muốn bạn hiểu Kubernetes là gì một cách đơn giản. Hãy quay lại ví dụ quán ăn mà chúng ta đã dùng trước đây. Giả sử bạn không chỉ có một quán ăn, mà có hàng chục quán ở nhiều nơi. Mỗi quán có nhiều nhân viên (microservices), và bạn cần đảm bảo tất cả quán hoạt động trơn tru: nếu một quán quá đông, bạn chuyển nhân viên từ quán khác sang; nếu một nhân viên nghỉ, bạn tìm người thay ngay. Kubernetes cũng giống như một “quản lý tổng” của các quán ăn: nó giúp bạn chạy, quản lý, và mở rộng nhiều microservices (container) trên nhiều máy (server) một cách tự động.
Nói kỹ thuật hơn, Kubernetes (thường gọi là K8s) là một hệ thống mã nguồn mở để tự động hóa việc triển khai, mở rộng, và quản lý các ứng dụng container (như Docker container). Kubernetes giúp bạn:
Chạy nhiều container trên nhiều máy.
Tự động mở rộng khi tải tăng (VD: thêm container khi người dùng tăng).
Tự động khôi phục khi container lỗi (VD: khởi động lại container).
Bước 1: Cài Đặt Minikube – Cách Dễ Nhất Để Thử Kubernetes
Để làm quen với Kubernetes, chúng ta sẽ dùng Minikube – một công cụ giúp chạy Kubernetes trên máy local (một cụm Kubernetes nhỏ). Hãy cài Minikube trên Ubuntu.
Cấp quyền thực thi và di chuyển vào thư mục hệ thống:
chmod +x kubectl
sudo mv kubectl /usr/local/bin/
Kiểm tra xem kubectl đã cài thành công chưa:
kubectl version --client
Nếu bạn thấy kết quả như Client Version: v1.29.2, kubectl đã sẵn sàng.
Bước 3: Triển Khai Menu Service Lên Kubernetes
Bây giờ, chúng ta sẽ triển khai Menu Service (từ bài 5 và 7) lên Kubernetes. Đầu tiên, bạn cần đảm bảo image Docker của Menu Service đã có sẵn (từ bài 7).
Kiểm tra image menu-service:
docker images
Nếu không thấy, quay lại bài 7 để build (docker build -t menu-service .).
Tạo file menu-deployment.yaml để định nghĩa cách triển khai Menu Service:
touch menu-deployment.yaml
Mở file menu-deployment.yaml trong VS Code (code menu-deployment.yaml) và dán nội dung sau:
apiVersion: apps/v1
kind: Deployment
metadata:
name: menu-deployment
spec:
replicas: 1
selector:
matchLabels:
app: menu
template:
metadata:
labels:
app: menu
spec:
containers:
- name: menu
image: menu-service
ports:
- containerPort: 3001
---
apiVersion: v1
kind: Service
metadata:
name: menu-service
spec:
selector:
app: menu
ports:
- port: 3001
targetPort: 3001
type: ClusterIP
Giải thích file:
Deployment: Định nghĩa cách chạy Menu Service (1 bản sao – replicas: 1).
Service: Tạo một điểm truy cập để gọi API của Menu Service từ bên trong Kubernetes.
Triển khai Menu Service lên Kubernetes:
kubectl apply -f menu-deployment.yaml
Nếu thành công, bạn sẽ thấy:
deployment.apps/menu-deployment created
service/menu-service created
Bước 4: Kiểm Tra Menu Service Trên Kubernetes
Hãy kiểm tra xem Menu Service có chạy đúng không:
Kiểm tra các pod (container) đang chạy:
kubectl get pods
Bạn sẽ thấy một pod với tên bắt đầu bằng menu-deployment-....
Kiểm tra service:
kubectl get services
Bạn sẽ thấy menu-service trong danh sách.
Để test API, bạn cần truy cập vào pod. Trước tiên, lấy tên pod:
Nếu bạn thấy kết quả này, xin chúc mừng! Bạn đã triển khai Menu Service lên Kubernetes.
Nhật Ký Lần Đầu Với Kubernetes: Trải Nghiệm Của Mình
Lần đầu làm với Kubernetes, mình gặp vài khó khăn, và mình nghĩ bạn cũng có thể gặp. Dưới đây là một số vấn đề và cách xử lý:
Minikube không khởi động: Kiểm tra xem Docker có chạy không (docker ps). Nếu không, khởi động lại: sudo systemctl start docker.
Pod không chạy (CrashLoopBackOff): Xem log của pod: kubectl logs pod/menu-deployment-xyz. Có thể image menu-service chưa đúng – build lại image và thử lại.
Không truy cập được API: Đảm bảo bạn đã chạy kubectl port-forward và dùng đúng cổng (3001).
Mình từng quên build image menu-service, nên pod không chạy được. Sau khi kiểm tra log, mình mới nhận ra vấn đề.
Kết Thúc: Bạn Đã Triển Khai Được Microservice Lên Kubernetes
Hôm nay, bạn đã làm quen với Kubernetes và triển khai Menu Service lên cụm Minikube – một bước quan trọng trong hành trình học microservices. Ở bài tiếp theo, chúng ta sẽ học cách triển khai toàn bộ hệ thống (bao gồm Order Service và RabbitMQ) lên Kubernetes, và làm sao để truy cập chúng từ bên ngoài. Hẹn gặp bạn ở bài sau nhé!
=============================
cở sở dữ liệu, cơ sở dữ liệu quốc gia, database, AI, trí tuệ nhân tạo, artificial intelligence, machine learning, deep learning, LLM, ChatGPT, DeepSeek, Grok, oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty