Thứ Sáu, 22 tháng 8, 2025

Bài 9: Học microservices cơ bản với minikube



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.

  1. Cài đặt các công cụ cần thiết:
    sudo apt update
    sudo apt install -y curl
  2. Tải Minikube:
    curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
    sudo install minikube-linux-amd64 /usr/local/bin/minikube
  3. Kiểm tra xem Minikube đã cài thành công chưa:
    minikube version

    Nếu bạn thấy kết quả như minikube version: v1.33.1, Minikube đã sẵn sàng.

  4. Minikube cần một driver để chạy (mình sẽ dùng Docker làm driver, vì bạn đã cài Docker ở bài 7). Khởi động Minikube:
    minikube start --driver=docker

    Nếu thành công, bạn sẽ thấy thông báo:

    Done! kubectl is now configured to use "minikube" cluster

    Điều này có nghĩa cụm Kubernetes của bạn đã chạy.

Bước 2: Cài Đặt kubectl – Công Cụ Để Làm Việc Với Kubernetes

kubectl là công cụ dòng lệnh để tương tác với Kubernetes. Hãy cài nó:

  1. Tải kubectl:
    curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
  2. 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/
  3. 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).

  1. 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 .).

  2. 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.
  3. 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:

  1. 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-....

  2. Kiểm tra service:
    kubectl get services

    Bạn sẽ thấy menu-service trong danh sách.

  3. Để test API, bạn cần truy cập vào pod. Trước tiên, lấy tên pod:
    kubectl get pods

    Giả sử tên pod là menu-deployment-xyz, chạy lệnh:

    kubectl port-forward pod/menu-deployment-xyz 3001:3001
  4. Mở Postman, tạo request GET với URL: http://localhost:3001/menu. Nhấn “Send”, bạn sẽ thấy:
    [
       { "id": 1, "name": "Phở bò", "price": 50000 },
       { "id": 2, "name": "Bún chả", "price": 40000 },
       { "id": 3, "name": "Cơm tấm", "price": 35000 }
    ]

    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é!

Điều hướng chuỗi bài viết<< Bài 8: Quản Lý Nhiều Microservices Với Docker Compose
=============================
Website không chứa bất kỳ quảng cáo nào, mọi đóng góp để duy trì phát triển cho website (donation) xin vui lòng gửi về STK 90.2142.8888 - Ngân hàng Vietcombank Thăng Long - TRAN VAN BINH
=============================
Nếu bạn không muốn bị AI thay thế và tiết kiệm 3-5 NĂM trên con đường trở thành DBA chuyên nghiệp hay làm chủ Database thì hãy đăng ký ngay KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE, được Coaching trực tiếp từ tôi với toàn bộ bí kíp thực chiến, thủ tục, quy trình của gần 20 năm kinh nghiệm (mà bạn sẽ KHÔNG THỂ tìm kiếm trên Internet/Google) từ đó giúp bạn dễ dàng quản trị mọi hệ thống Core tại Việt Nam và trên thế giới, đỗ OCP.
- CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
- Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
2 khóa học online qua video giúp bạn nhanh chóng có những kiến thức nền tảng về Linux, Oracle, học mọi nơi, chỉ cần có Internet/4G:
- Oracle cơ bản: https://bit.ly/admin_1200
- Linux: https://bit.ly/linux_1200
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
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

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master