Đánh giá Kubecost để tiết kiệm tiền trên Kubernetes trên đám mây

Đánh giá Kubecost để tiết kiệm tiền trên Kubernetes trên đám mây

Hiện nay, ngày càng có nhiều công ty chuyển cơ sở hạ tầng từ máy chủ phần cứng và máy ảo của riêng họ sang đám mây. Giải pháp này rất dễ giải thích: không cần phải lo lắng về phần cứng, cụm được cấu hình dễ dàng theo nhiều cách khác nhau... và quan trọng nhất là các công nghệ hiện có (như Kubernetes) có thể mở rộng quy mô sức mạnh tính toán tùy theo tải .

Khía cạnh tài chính luôn quan trọng. Công cụ được thảo luận trong bài viết này được thiết kế để giúp giảm ngân sách khi sử dụng cơ sở hạ tầng đám mây với Kubernetes.

Giới thiệu

Kubecost là một công ty khởi nghiệp ở California của Google, tạo ra giải pháp tính toán chi phí cơ sở hạ tầng trong các dịch vụ đám mây (trong cụm Kubernetes + tài nguyên dùng chung), tìm kiếm các điểm nghẽn trong cài đặt cụm và gửi thông báo thích hợp tới Slack.

Chúng tôi có khách hàng với Kubernetes cả trên đám mây AWS và GCP quen thuộc, và hiếm hơn đối với cộng đồng Linux là Azure - nói chung, trên tất cả các nền tảng được Kubecost hỗ trợ. Đối với một số người trong số họ, chúng tôi tự tính toán chi phí của các dịch vụ nội bộ cụm (sử dụng phương pháp tương tự như phương pháp được Kubecost sử dụng), đồng thời giám sát chi phí cơ sở hạ tầng và cố gắng tối ưu hóa chúng. Vì vậy, thật hợp lý khi chúng tôi quan tâm đến khả năng tự động hóa những nhiệm vụ như vậy.

Mã nguồn của mô-đun Kubecost chính được mở theo các điều khoản của Giấy phép Nguồn mở (Giấy phép Apache 2.0). Nó có thể được sử dụng tự do và các tính năng có sẵn sẽ đủ cho các dự án nhỏ. Tuy nhiên, kinh doanh là kinh doanh: phần còn lại của sản phẩm được đóng lại, nó có thể được sử dụng bởi đăng ký trả phí, điều này cũng ngụ ý hỗ trợ thương mại. Ngoài ra, các tác giả còn cung cấp giấy phép miễn phí cho các cụm nhỏ (1 cụm có 10 nút - trong quá trình viết bài này, giới hạn này đã mở rộng lên 20 nút) hoặc thời gian dùng thử với đầy đủ khả năng trong 1 tháng.

Mọi thứ hoạt động như thế nào

Vì vậy, phần chính của Kubecost là ứng dụng mô hình chi phí, được viết bằng Go. Biểu đồ Helm mô tả toàn bộ hệ thống được gọi là máy phân tích chi phí và cốt lõi của nó là sự kết hợp từ mô hình chi phí với Prometheus, Grafana và một số trang tổng quan.

Nói chung, mô hình chi phí có giao diện web riêng, hiển thị biểu đồ và số liệu thống kê chi tiết về chi phí ở dạng bảng, tất nhiên cũng như các mẹo để tối ưu hóa chi phí. Các bảng thông tin được trình bày trong Grafana là giai đoạn đầu trong quá trình phát triển Kubecost và chứa nhiều dữ liệu giống như mô hình chi phí, bổ sung cho chúng các số liệu thống kê thông thường về mức tiêu thụ dung lượng CPU/bộ nhớ/mạng/ổ đĩa trong cụm và các thành phần của nó .

Kubecost hoạt động như thế nào?

  • Mô hình chi phí nhận giá dịch vụ thông qua API của nhà cung cấp đám mây.
  • Hơn nữa, tùy thuộc vào loại sắt của nút và khu vực, chi phí cho mỗi nút sẽ được tính toán.
  • Dựa trên chi phí chạy các nút, mỗi nhóm lá sẽ nhận được chi phí mỗi giờ sử dụng CPU, mỗi gigabyte bộ nhớ tiêu thụ và mỗi giờ mỗi gigabyte dữ liệu được lưu trữ - tùy thuộc vào nút mà nó đang chạy hoặc loại lưu trữ.
  • Dựa trên chi phí vận hành các nhóm riêng lẻ, khoản thanh toán được tính cho các không gian tên, dịch vụ, Triển khai, StatefulSets.
  • Số liệu thống kê được tính toán bằng cách sử dụng số liệu do kube-state-metrics và node-exporter cung cấp.

Điều quan trọng cần lưu ý là Kubecost theo mặc định chỉ tính tài nguyên có sẵn trong Kubernetes. Cơ sở dữ liệu bên ngoài, máy chủ GitLab, kho lưu trữ S3 và các dịch vụ khác không nằm trong cụm (ngay cả khi nằm trong cùng một đám mây) sẽ không hiển thị với nó. Mặc dù đối với GCP và AWS, bạn có thể thêm khóa của tài khoản dịch vụ của mình và tính toán mọi thứ cùng nhau.

Cài đặt

Kubecost yêu cầu:

  • Kubernetes phiên bản 1.8 trở lên;
  • kube-state-số liệu;
  • Prometheus;
  • nhà xuất khẩu nút.

Điều đó đã xảy ra là trong các cụm của chúng tôi, tất cả các điều kiện này đều được đáp ứng trước, vì vậy hóa ra chỉ cần chỉ định điểm cuối chính xác để truy cập vào Prometheus là đủ. Tuy nhiên, biểu đồ Helm kubecost chính thức chứa mọi thứ bạn cần để chạy trên một cụm trống.

Có một số cách để cài đặt Kubecost:

  1. Phương pháp cài đặt tiêu chuẩn được mô tả trong hướng dẫn trên trang web của nhà phát triển Bắt buộc. thêm kho lưu trữ công cụ phân tích chi phí vào Helm, sau đó cài đặt biểu đồ. Tất cả những gì còn lại là chuyển tiếp cổng của bạn và điều chỉnh cài đặt về trạng thái mong muốn theo cách thủ công (thông qua kubectl) và/hoặc sử dụng giao diện web mô hình chi phí.

    Chúng tôi thậm chí chưa thử phương pháp này vì chúng tôi không sử dụng cấu hình được tạo sẵn của bên thứ ba, nhưng có vẻ như đây là một tùy chọn tốt "chỉ cần tự mình thử". Nếu bạn đã cài đặt sẵn một số thành phần hệ thống hoặc muốn tinh chỉnh nhiều hơn, tốt hơn nên xem xét đường dẫn thứ hai.

  2. Sử dụng cơ bản cùng một biểu đồ, nhưng hãy tự cấu hình và cài đặt nó trong bất kỳ cách thuận tiện.

    Như đã đề cập, ngoài kubecost, biểu đồ này còn chứa các biểu đồ Grafana và Prometheus, cũng có thể được tùy chỉnh theo ý muốn.

    Có sẵn trên biểu đồ values.yaml cho công cụ phân tích chi phí cho phép bạn định cấu hình:

    • danh sách các thành phần phân tích chi phí cần được triển khai;
    • điểm cuối của bạn cho Prometheus (nếu bạn đã có);
    • miền và các cài đặt xâm nhập khác cho mô hình chi phí và Grafana;
    • chú thích cho nhóm;
    • nhu cầu sử dụng bộ nhớ vĩnh viễn và kích thước của nó.

    Danh sách đầy đủ các tùy chọn cấu hình có sẵn kèm theo mô tả có sẵn trong tài liệu.

    Vì kubecost trong phiên bản cơ bản không thể hạn chế quyền truy cập nên bạn sẽ cần định cấu hình ngay lập tức xác thực cơ bản cho bảng điều khiển web.

  3. Tải về chỉ lõi hệ thống - mô hình chi phí. Để thực hiện việc này, bạn phải cài đặt Prometheus trong cụm và chỉ định giá trị tương ứng của địa chỉ của nó trong biến prometheusEndpoint cho Helm. Sau đó - áp dụng bộ cấu hình YAML trong cụm.

    Một lần nữa, bạn sẽ phải thêm Ingress theo cách thủ công bằng basic-auth. Cuối cùng, bạn sẽ cần thêm một phần để thu thập số liệu mô hình chi phí trong extraScrapeConfigs trong cấu hình Prometheus:

    - job_name: kubecost
      honor_labels: true
      scrape_interval: 1m
      scrape_timeout: 10s
      metrics_path: /metrics
      scheme: http
      dns_sd_configs:
      - names:
        - <адрес вашего сервиса kubecost>
        type: 'A'
        port: 9003

Chúng ta nhận được gì?

Với quá trình cài đặt đầy đủ, chúng tôi có sẵn bảng điều khiển web kubecost và Grafana với một bộ trang tổng quan.

Tổng chi phí, được hiển thị trên màn hình chính, thực sự hiển thị chi phí tài nguyên ước tính trong tháng. Cái này có thể đoán trước giá phản ánh chi phí sử dụng cụm (mỗi tháng) ở mức tiêu thụ tài nguyên hiện tại.

Số liệu này thiên về phân tích chi phí và tối ưu hóa chúng. Sẽ không thuận tiện lắm khi xem tổng chi phí cho tháng 7 trừu tượng trong kubecost: bạn sẽ phải làm điều này đi đến thanh toán. Nhưng bạn có thể thấy chi phí được chia nhỏ theo không gian tên, nhãn, nhóm trong 1/2/7/30/90 ngày mà hóa đơn này sẽ không bao giờ hiển thị cho bạn.

Đánh giá Kubecost để tiết kiệm tiền trên Kubernetes trên đám mây

Nói về nhãn. Bạn nên chuyển ngay đến phần cài đặt và đặt tên của các nhãn sẽ được sử dụng làm danh mục bổ sung để nhóm chi phí:

Đánh giá Kubecost để tiết kiệm tiền trên Kubernetes trên đám mây

Bạn có thể treo bất kỳ nhãn nào lên chúng - thuận tiện nếu bạn đã có hệ thống ghi nhãn của riêng mình.

Ngoài ra, tại đó, bạn có thể thay đổi địa chỉ của điểm cuối API mà mô hình chi phí kết nối, điều chỉnh quy mô chiết khấu trong GCP và đặt giá của riêng bạn cho các tài nguyên và đơn vị tiền tệ để đo lường chúng (vì một số lý do, tính năng này không ảnh hưởng đến Tổng chi phí).

Kubecost có thể hiển thị đa dạng vấn đề trong cụm (và thậm chí cảnh báo trong trường hợp nguy hiểm). Thật không may, tùy chọn này không thể định cấu hình được và do đó, nếu bạn có môi trường dành cho nhà phát triển và sử dụng chúng, bạn sẽ liên tục thấy một cái gì đó như thế này:

Đánh giá Kubecost để tiết kiệm tiền trên Kubernetes trên đám mây

Một công cụ quan trọng - Tiết kiệm cụm. Nó đo lường hoạt động của các nhóm (mức tiêu thụ tài nguyên, bao gồm cả tài nguyên mạng), đồng thời tính toán số tiền và những gì bạn có thể tiết kiệm.

Có vẻ như các mẹo tối ưu hóa khá rõ ràng nhưng kinh nghiệm cho thấy vẫn còn điều gì đó cần xem xét. Đặc biệt, hoạt động mạng của các nhóm được giám sát (Kubecost khuyên bạn nên chú ý đến những nhóm không hoạt động), so sánh mức tiêu thụ CPU và bộ nhớ thực tế và được yêu cầu, cũng như CPU ​​được sử dụng bởi các nút cụm (đề xuất thu gọn nhiều nút thành một), đĩa tải và vài chục tham số khác.

Giống như bất kỳ vấn đề tối ưu hóa nào, việc tối ưu hóa tài nguyên dựa trên dữ liệu Kubecost yêu cầu: đối xử thận trọng. Ví dụ: Cluster Savings đề xuất xóa các nút, tuyên bố rằng nó an toàn, nhưng không tính đến sự hiện diện của bộ chọn nút và các vết bẩn được triển khai trên chúng mà không có sẵn trên các nút khác. Và nói chung, ngay cả các tác giả của sản phẩm trong bài báo gần đây (nhân tiện, nó có thể rất hữu ích cho những ai quan tâm đến chủ đề của dự án) không nên vội vàng tối ưu hóa chi phí mà hãy tiếp cận vấn đề một cách chu đáo.

Kết quả

Sau khi sử dụng kubecost trong một tháng cho một vài dự án, chúng tôi có thể kết luận rằng đây là một công cụ thú vị (và cũng dễ học và cài đặt) để phân tích và tối ưu hóa chi phí cho dịch vụ của các nhà cung cấp đám mây được sử dụng cho cụm Kubernetes. Các tính toán hóa ra rất chính xác: trong các thử nghiệm của chúng tôi, chúng trùng khớp với những gì nhà cung cấp thực sự yêu cầu.

Ngoài ra còn có một số nhược điểm: có những lỗi không nghiêm trọng và ở một số chỗ, chức năng không đáp ứng được các nhu cầu cụ thể của một số dự án. Tuy nhiên, nếu bạn cần nhanh chóng hiểu số tiền sẽ đi đâu và có thể "cắt giảm" những gì để liên tục giảm 5-30% hóa đơn cho các dịch vụ đám mây (đây là điều đã xảy ra trong trường hợp của chúng tôi), thì đây là một lựa chọn tuyệt vời .

PS

Đọc thêm trên blog của chúng tôi:

Nguồn: www.habr.com

Thêm một lời nhận xét