KubernetesTẬP 011⏱️ Đọc ~2 phút

K8s Service: Phân Biệt ClusterIP, NodePort và LoadBalancer

Pod trong Kubernetes là tài nguyên phù du (ephemeral) — chúng có thể sinh ra, chết đi và được thay thế liên tục với địa chỉ IP thay đổi không ngừng. Để tạo ra một điểm truy cập ổn...

K8s Service: Phân Biệt ClusterIP, NodePort và LoadBalancer

Pod trong Kubernetes là tài nguyên phù du (ephemeral) — chúng có thể sinh ra, chết đi và được thay thế liên tục với địa chỉ IP thay đổi không ngừng. Để tạo ra một điểm truy cập ổn định duy nhất cho các dịch vụ giao tiếp với nhau, Kubernetes cung cấp đối tượng Service.

Có 3 loại Service cơ bản mà bất kỳ kỹ sư nào cũng phải phân biệt rõ ràng: ClusterIP, NodePort và LoadBalancer.


1. ClusterIP: Giao tiếp nội bộ cụm (Mặc định)

  • Bản chất: K8s cấp một địa chỉ IP ảo (Virtual IP) chỉ có hiệu lực bên trong mạng nội bộ của cụm K8s.
  • Phạm vi truy cập: Chỉ các Pod nằm trong cụm mới gọi được tới IP này. Bên ngoài Internet hoàn toàn không nhìn thấy.
  • Ứng dụng thực tế: Cơ sở dữ liệu nội bộ, Redis cache, các microservices backend tầng trong.
[Pod Frontend] ── gọi tới ClusterIP (10.96.0.15:3306) ──▶ [kube-proxy / iptables] ──▶ [Pod MySQL]

2. NodePort: Mở cổng trên toàn bộ máy chủ vật lý

  • Bản chất: K8s mở một cổng cố định (trong dải mặc định 30000 – 32767) trên tất cả các Node vật lý trong cụm.
  • Phạm vi truy cập: Người dùng từ ngoài mạng có thể gõ <Node-IP>:<NodePort> để truy cập vào dịch vụ.
  • Cơ chế: Kube-proxy trên node nhận request và tự động định tuyến tới Pod thích hợp (kể cả Pod đó đang nằm trên node khác).
  • Nhược điểm: Dải port bị giới hạn, khó quản lý bảo mật, phải quản lý thủ công IP của các Node vật lý.

3. LoadBalancer: Cổng vào chuẩn doanh nghiệp trên Cloud

  • Bản chất: K8s tự động gọi API của nhà cung cấp Cloud (AWS, Google Cloud, DigitalOcean) để tạo ra một bộ cân bằng tải phần cứng bên ngoài (AWS NLB/ALB) với địa chỉ Public IP chuyên dụng.
  • Cơ chế: Lưu lượng từ Internet ➔ Public Load Balancer ➔ NodePort ➔ ClusterIP ➔ Pod.
  • Ứng dụng: Điểm tiếp nhận traffic chính cho các cổng Ingress Controller (như Nginx Ingress hoặc Traefik).

Bảng tóm tắt chọn lựa nhanh

Internet Client
      │
      ▼
[LoadBalancer Service] (Public IP nhà mạng: 203.0.113.10)
      │
      ▼
 [NodePort Service]    (Mở cổng 31245 trên mọi Node máy chủ)
      │
      ▼
 [ClusterIP Service]   (IP nội bộ cluster: 10.96.0.50)
      │
      ▼
   [Target Pods]       (Container đang chạy ứng dụng)
🎬 VIDEO REEL THỰC CHIẾN (TÓM TẮT 60 GIÂY)

Bóc Tách Trực Quan: K8s Service: Phân Biệt ClusterIP, NodePort và LoadBalancer

Xem video mô phỏng động trực quan nguyên lý hoạt động và thao tác lệnh thực tế để nắm trọn vẹn kiến thức chỉ trong 60 giây.