Từ Sự Đột Biến Đến Tiết Kiệm: Tối Ưu Hóa Chi Phí Kubernetes

Hóa đơn AWS của chúng tôi đã tăng 34% trong một quý. Lộ trình sản phẩm không có thay đổi nào. Nguyên nhân rất đơn giản: các cụm Kubernetes của chúng tôi đang gây lãng phí tiền bạc.

Các kỹ sư thường đoán xem một dịch vụ cần bao nhiêu CPU và bộ nhớ. Họ thường làm tròn lên cho an toàn. Điều này tạo ra dung lượng ảo (phantom capacity). Bạn đang trả tiền cho những tài nguyên mà ứng dụng của bạn không bao giờ sử dụng.

Dưới đây là cách chúng tôi đã khắc phục và tiết kiệm được 34% chi phí hàng tháng.

Vấn đề cốt lõi: Requests so với Limits

Requests là những gì bạn cam kết. Kubernetes sử dụng con số này để đặt pod của bạn lên một node. Con số này quyết định hóa đơn của bạn.

Limits là mức trần. Nếu một pod chạm tới giới hạn CPU, nó sẽ chạy chậm lại. Nếu nó chạm tới giới hạn bộ nhớ, nó sẽ bị dừng (die).

Nhiều đội ngũ thiết lập requests bằng với limits. Điều này có nghĩa là bạn đang trả tiền cho mức công suất đỉnh 24/7, ngay cả khi dịch vụ của bạn đang ở trạng thái nhàn rỗi.

Chiến lược tiết kiệm của chúng tôi

  • Đo lường trước khi hành động: Sử dụng Prometheus và Grafana để xem mức sử dụng thực tế.
  • Sử dụng các phân vị (percentiles): Xem xét mức sử dụng p95 trong vòng 4 tuần. Đừng sử dụng số trung bình. Số trung bình sẽ che lấp các đợt tăng đột biến.
  • Điều chỉnh kích thước requests phù hợp (Right-size): Thiết lập requests ở mức p95 cộng thêm 20% dự phòng.
  • Quản lý CPU limits: Tránh đặt CPU limits quá chặt chẽ cho các dịch vụ nhạy cảm để ngăn chặn tình trạng throttling.
  • Tự động hóa việc mở rộng: Sử dụng HPA cho các đợt tăng lưu lượng và VPA để tinh chỉnh từng pod riêng lẻ.

Kết quả

Chúng tôi đã giảm số lượng node từ 40 xuống còn 26. Mức sử dụng CPU trung bình tăng từ 14% lên 52%. Chi phí tính toán hàng tháng giảm từ $48,200 xuống còn $31,900. Độ trễ thực tế đã cải thiện 35%.

Tối ưu hóa không phải là một dự án làm một lần rồi thôi. Đó là một thói quen. Nếu bạn viết một resource request dựa trên sự phỏng đoán, bạn đang lãng phí tiền bạc.

Danh sách kiểm tra cho cụm của bạn:

• Xây dựng một dashboard hiển thị mức sử dụng được yêu cầu (requested) so với thực tế. • Thiết lập requests dựa trên dữ liệu của 4 tuần. • Chạy VPA ở chế độ đề xuất (recommendation mode) trước khi cho phép nó thực hiện các thay đổi. • Xem xét các thông số tài nguyên hàng quý. • Giúp các đội ngũ kỹ sư có thể quan sát được chi phí của chính họ.

Source: https://dev.to/samarth_05/from-spikes-to-savings-practical-k8s-cost-optimization-for-2026-75k

Optional learning community: https://t.me/GyaanSetuAi