Node pool design là việc tổ chức các node trong Kubernetes cluster thành các nhóm chuyên biệt, mỗi nhóm có phần cứng và cấu hình phù hợp với loại workload cụ thể. Mục tiêu: chạy đúng pod trên đúng node, tránh dồn dập tài nguyên (free-for-all scheduling) gây lãng phí chi phí và ảnh hưởng hiệu suất.

Cơ chế scheduling

Kubernetes cung cấp hai bộ công cụ bổ trợ nhau:

Taints & Tolerations

  • Taint đặt trên node: “node này chỉ chấp nhận pod có đặc điểm nhất định”
  • Toleration đặt trên pod/workload: “pod này chấp nhận được điều kiện của node kia”
  • Node không có taint có thể nhận bất kỳ pod nào kể cả pod có toleration
  • Node có taint chỉ nhận pod có toleration khớp key-value
# Ví dụ: taint node GPU
kubectl taint nodes gpu-node-1 type=gpu:NoSchedule
 
# Toleration tương ứng trên pod
tolerations:
- key: "type"
  operator: "Equal"
  value: "gpu"
  effect: "NoSchedule"

Affinity & Anti-Affinity

  • Node affinity: pod ưu tiên hoặc yêu cầu chạy trên node có label nhất định
  • Pod affinity: pod muốn chạy gần pod khác (cùng node/zone) — giảm network latency giữa các service hay giao tiếp nhiều
  • Pod anti-affinity: pod muốn chạy xa pod khác — tăng HA, tránh SPOF

Phân loại node pool điển hình

Node PoolHardwareWorkloadChi phí
General purposevCPU + RAM cân bằngStateless microservicesTrung bình
CPU-optimizedHigh vCPU/RAM ratioCompute-heavy workloadsCao
Memory-optimizedHigh RAMIn-memory DB, cachingCao
GPUGPU + vCPUML/AI inference/trainingRất cao
Spot/PreemptibleBất kỳBatch jobs, non-criticalThấp (60-80% cheaper)
StatefulLocal SSD, stableDatabases, Cassandra, etc.Trung bình-cao

Cost optimization với node pools

  • Spot/Preemptible nodes cho batch jobs và non-critical workloads — tiết kiệm 60-80% so với on-demand
  • Resource Quotas + LimitRanges ngăn một workload chiếm dụng quá nhiều tài nguyên
  • HPA (Horizontal Pod Autoscaler) + VPA (Vertical Pod Autoscaler) để right-size
  • Cluster Autoscaler: tự động thêm/xóa node dựa trên demand — cần kết hợp với overprovisioning buffer
  • Affinity rules giảm hidden network cost: related microservices trên cùng host/zone ↓ cross-AZ traffic

Connections

Sources

  • writing/node_pool_design_for_k8s.md
  • writing/optimize_cost_k8s.md