Ulasan Kubecost untuk menghemat uang di Kubernetes di awan

Ulasan Kubecost untuk menghemat uang di Kubernetes di awan

Saat ini, semakin banyak perusahaan yang mentransfer infrastruktur mereka dari server perangkat keras dan mesin virtual mereka sendiri ke cloud. Solusi ini mudah untuk dijelaskan: tidak perlu khawatir tentang perangkat keras, cluster mudah dikonfigurasi dengan berbagai cara... dan yang paling penting, teknologi yang ada (seperti Kubernetes) memungkinkan untuk menskalakan daya komputasi tergantung pada beban .

Aspek keuangan selalu penting. Alat yang dibahas dalam artikel ini dirancang untuk membantu mengurangi anggaran saat menggunakan infrastruktur cloud dengan Kubernetes.

pengenalan

Kubecost adalah startup California dari Google, yang menciptakan solusi untuk menghitung biaya infrastruktur di layanan cloud (dalam cluster Kubernetes + sumber daya bersama), mencari hambatan dalam pengaturan cluster dan mengirimkan pemberitahuan yang sesuai ke Slack.

Kami memiliki klien dengan Kubernetes di cloud AWS dan GCP yang sudah dikenal, dan, lebih jarang lagi di komunitas Linux, Azure - secara umum, di semua platform yang didukung oleh Kubecost. Untuk beberapa di antaranya, kami menghitung sendiri biaya layanan intra-cluster (menggunakan metode yang mirip dengan yang digunakan oleh Kubecost), dan juga memantau biaya infrastruktur dan mencoba mengoptimalkannya. Oleh karena itu, masuk akal jika kami tertarik pada kemungkinan mengotomatiskan tugas-tugas tersebut.

Kode sumber modul utama Kubecost terbuka di bawah ketentuan lisensi Open Source (Apache License 2.0). Ini dapat digunakan secara bebas dan fitur yang tersedia harus memadai untuk proyek kecil. Namun, bisnis adalah bisnis: sisa produk ditutup, dapat digunakan oleh langganan berbayar, yang juga menyiratkan dukungan komersial. Selain itu, penulis menawarkan lisensi gratis untuk cluster kecil (1 cluster dengan 10 node - selama penulisan artikel ini, batas ini telah diperluas menjadi 20 node) atau masa percobaan dengan kemampuan penuh selama 1 bulan.

Bagaimana semuanya bekerja

Jadi, bagian utama dari Kubecost adalah aplikasinya model biaya, ditulis dalam Go. Bagan Helm yang menggambarkan keseluruhan sistem disebut penganalisis biaya dan intinya adalah perakitan model biaya dengan Prometheus, Grafana dan beberapa dasbor.

Secara umum, model biaya memiliki antarmuka webnya sendiri, yang menampilkan grafik dan statistik terperinci mengenai biaya dalam bentuk tabel, serta, tentu saja, tip untuk mengoptimalkan biaya. Dasbor yang disajikan di Grafana merupakan tahap awal dalam pengembangan Kubecost dan berisi data yang hampir sama dengan model biaya, dilengkapi dengan statistik umum mengenai konsumsi CPU/memori/jaringan/ruang disk di cluster dan komponen-komponennya. .

Bagaimana cara kerja Kubecost?

  • Model biaya menerima harga layanan melalui API penyedia cloud.
  • Selanjutnya, tergantung pada jenis besi dari node dan wilayahnya, biaya per node dihitung.
  • Berdasarkan biaya pengoperasian node, setiap leaf pod mendapat biaya per jam penggunaan CPU, per gigabyte memori yang digunakan, dan per jam per gigabyte data yang disimpan - bergantung pada node yang menjalankannya atau kelas penyimpanannya.
  • Berdasarkan biaya pengoperasian masing-masing pod, pembayaran dihitung untuk namespace, layanan, Deployment, StatefulSets.
  • Statistik dihitung menggunakan metrik yang disediakan oleh kube-state-metrics dan node-exporter.

Penting untuk mempertimbangkan Kubecost itu secara default hanya menghitung sumber daya yang tersedia di Kubernetes. Basis data eksternal, server GitLab, penyimpanan S3, dan layanan lain yang tidak ada dalam cluster (meskipun terletak di cloud yang sama) tidak terlihat olehnya. Meskipun untuk GCP dan AWS Anda dapat menambahkan kunci akun layanan Anda dan menghitung semuanya bersama-sama.

Instalasi

Kubecost membutuhkan:

  • Kubernetes versi 1.8 dan lebih tinggi;
  • kube-state-metrik;
  • Prometheus;
  • node-eksportir.

Kebetulan di cluster kami semua kondisi ini telah dipenuhi sebelumnya, jadi ternyata cukup menentukan titik akhir yang benar untuk akses ke Prometheus. Namun, bagan Helm kubecost resmi berisi semua yang Anda perlukan untuk dijalankan pada cluster kosong.

Ada beberapa cara untuk menginstal Kubecost:

  1. Metode instalasi standar dijelaskan dalam Instruksi di situs web pengembang. Diperlukan tambahkan repositori penganalisis biaya ke Helm, lalu instal bagan. Yang tersisa hanyalah meneruskan port Anda dan menyesuaikan pengaturan ke keadaan yang diinginkan secara manual (melalui kubectl) dan/atau menggunakan antarmuka web model biaya.

    Kami bahkan belum mencoba metode ini, karena kami tidak menggunakan konfigurasi siap pakai pihak ketiga, tetapi sepertinya opsi β€œcoba saja sendiri” yang bagus. Jika Anda sudah menginstal beberapa komponen sistem atau ingin penyesuaian lebih lanjut, lebih baik pertimbangkan jalur kedua.

  2. Gunakan pada dasarnya grafik yang sama, tetapi konfigurasikan dan instal sendiri dengan cara apa pun yang nyaman.

    Seperti yang sudah disebutkan, selain kubecost itu sendiri, chart ini berisi chart Grafana dan Prometheus, yang juga bisa dikustomisasi sesuai keinginan.

    Tersedia di grafik values.yaml untuk penganalisis biaya memungkinkan Anda mengonfigurasi:

    • daftar komponen penganalisis biaya yang perlu diterapkan;
    • titik akhir Anda untuk Prometheus (jika Anda sudah memilikinya);
    • domain dan pengaturan masuk lainnya untuk model biaya dan Grafana;
    • anotasi untuk pod;
    • kebutuhan untuk menggunakan penyimpanan permanen dan ukurannya.

    Daftar lengkap opsi konfigurasi yang tersedia dengan deskripsi tersedia di dokumentasi.

    Karena kubecost dalam versi dasarnya tidak dapat membatasi akses, Anda harus segera mengonfigurasi autentikasi dasar untuk panel web.

  3. Untuk menginstal hanya inti sistem - model biaya. Untuk melakukan ini, Anda harus menginstal Prometheus di cluster dan menentukan nilai alamatnya yang sesuai dalam variabel prometheusEndpoint untuk Helm. Setelah itu - terapkan kumpulan konfigurasi YAML di cluster.

    Sekali lagi, Anda harus menambahkan Ingress secara manual dengan basic-auth. Terakhir, Anda perlu menambahkan bagian untuk mengumpulkan metrik model biaya extraScrapeConfigs dalam konfigurasi 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

Apa yang kita dapatkan?

Dengan instalasi penuh, kami memiliki panel web kubecost dan Grafana dengan satu set dasbor.

Total biaya, yang ditampilkan di layar utama, sebenarnya menunjukkan perkiraan biaya sumber daya untuk bulan tersebut. Ini dapat diprediksi harga yang mencerminkan biaya penggunaan cluster (per bulan) pada tingkat konsumsi sumber daya saat ini.

Metrik ini lebih untuk menganalisis pengeluaran dan mengoptimalkannya. Sangat tidak mudah untuk melihat total biaya untuk abstrak bulan Juli di kubecost: Anda harus melakukan ini pergi ke penagihan. Namun Anda dapat melihat biaya yang dikelompokkan berdasarkan namespace, label, pod selama 1/2/7/30/90 hari, yang tidak akan pernah ditunjukkan oleh penagihan kepada Anda.

Ulasan Kubecost untuk menghemat uang di Kubernetes di awan

Berbicara tentang label. Anda harus segera masuk ke pengaturan dan mengatur nama label yang akan digunakan sebagai kategori tambahan untuk pengelompokan biaya:

Ulasan Kubecost untuk menghemat uang di Kubernetes di awan

Anda dapat menggantungkan label apa pun pada label tersebut - nyaman jika Anda sudah memiliki sistem pelabelan sendiri.

Di sana Anda juga dapat mengubah alamat titik akhir API yang terhubung dengan model biaya, menyesuaikan ukuran diskon di GCP, dan menetapkan harga Anda sendiri untuk sumber daya dan mata uang untuk pengukurannya (karena alasan tertentu, fitur ini tidak memengaruhi Total biaya).

Kubecost dapat menampilkan berbagai macam permasalahan yang ada di cluster tersebut (dan bahkan waspada jika ada bahaya). Sayangnya, opsi ini tidak dapat dikonfigurasi, dan oleh karena itu, jika Anda memiliki lingkungan untuk pengembang dan menggunakannya, Anda akan selalu melihat sesuatu seperti ini:

Ulasan Kubecost untuk menghemat uang di Kubernetes di awan

Alat penting - Penghematan Klaster. Ini mengukur aktivitas pod (konsumsi sumber daya, termasuk sumber daya jaringan), dan juga menghitung berapa banyak uang dan apa yang dapat Anda hemat.

Tampaknya tip pengoptimalan sudah cukup jelas, namun pengalaman menunjukkan bahwa masih ada sesuatu yang perlu diperhatikan. Secara khusus, aktivitas jaringan dari pod dipantau (Kubecost menyarankan untuk memperhatikan pod yang tidak aktif), memori yang diminta dan aktual serta konsumsi CPU dibandingkan, serta CPU yang digunakan oleh node cluster (menyarankan untuk menggabungkan beberapa node menjadi satu), disk memuat dan beberapa lusin parameter lainnya.

Seperti halnya masalah pengoptimalan lainnya, pengoptimalan sumber daya berdasarkan data Kubecost memerlukan: perlakukan dengan hati-hati. Sebagai contoh, Cluster Savings menyarankan penghapusan node, mengklaim bahwa node tersebut aman, namun tidak memperhitungkan keberadaan pemilih node dan taint dalam pod yang di-deploy pada node tersebut yang tidak tersedia pada node lain. Dan secara umum, bahkan penulis produk di dalamnya artikel terbaru (Omong-omong, ini bisa sangat berguna bagi mereka yang tertarik dengan topik proyek) disarankan untuk tidak terburu-buru dalam mengoptimalkan biaya, tetapi untuk mendekati masalah ini dengan bijaksana.

Hasil

Setelah menggunakan kubecost selama sebulan pada beberapa proyek, kami dapat menyimpulkan bahwa ini adalah alat yang menarik (dan juga mudah dipelajari dan dipasang) untuk menganalisis dan mengoptimalkan biaya layanan penyedia cloud yang digunakan untuk cluster Kubernetes. Perhitungannya ternyata sangat akurat: dalam percobaan kami, perhitungan tersebut sesuai dengan apa yang sebenarnya dibutuhkan oleh penyedia.

Ada juga beberapa kelemahannya: terdapat bug yang tidak kritis, dan di beberapa tempat fungsinya tidak mencakup kebutuhan khusus untuk beberapa proyek. Namun, jika Anda perlu memahami dengan cepat ke mana uang tersebut mengalir dan apa yang dapat β€œdipotong” agar dapat secara konsisten mengurangi tagihan layanan cloud sebesar 5-30% (inilah yang terjadi dalam kasus kami), ini adalah pilihan yang bagus. .

PS

Baca juga di blog kami:

Sumber: www.habr.com

Tambah komentar