Κριτική Kubecost για εξοικονόμηση χρημάτων στο Kubernetes στα σύννεφα

Κριτική Kubecost για εξοικονόμηση χρημάτων στο Kubernetes στα σύννεφα

Επί του παρόντος, όλο και περισσότερες εταιρείες μεταφέρουν την υποδομή τους από διακομιστές υλικού και τις δικές τους εικονικές μηχανές στο cloud. Αυτή η λύση εξηγείται εύκολα: δεν χρειάζεται να ανησυχείτε για το υλικό, το σύμπλεγμα διαμορφώνεται εύκολα με πολλούς διαφορετικούς τρόπους... και το πιο σημαντικό, οι υπάρχουσες τεχνολογίες (όπως το Kubernetes) καθιστούν δυνατή την απλή κλιμάκωση της υπολογιστικής ισχύος ανάλογα με το φορτίο .

Η οικονομική πτυχή είναι πάντα σημαντική. Το εργαλείο που συζητείται σε αυτό το άρθρο έχει σχεδιαστεί για να βοηθήσει στη μείωση των προϋπολογισμών κατά τη χρήση υποδομής cloud με το Kubernetes.

Εισαγωγή

Kubecost είναι μια καλιφορνέζικη startup από την Google, η οποία δημιουργεί μια λύση για τον υπολογισμό του κόστους υποδομής σε υπηρεσίες cloud (μέσα σε ένα σύμπλεγμα Kubernetes + κοινόχρηστους πόρους), την εύρεση σημείων συμφόρησης στις ρυθμίσεις του συμπλέγματος και την αποστολή κατάλληλων ειδοποιήσεων στο Slack.

Έχουμε πελάτες με το Kubernetes τόσο στα γνωστά σύννεφα AWS και GCP, όσο και στο Azure, που είναι πιο σπάνιο για την κοινότητα του Linux - γενικά, σε όλες τις πλατφόρμες που υποστηρίζονται από την Kubecost. Για ορισμένα από αυτά, υπολογίζουμε μόνοι μας το κόστος των υπηρεσιών εντός του συμπλέγματος (χρησιμοποιώντας μια μέθοδο παρόμοια με αυτή που χρησιμοποιεί η Kubecost), και επίσης παρακολουθούμε το κόστος υποδομής και προσπαθούμε να τα βελτιστοποιήσουμε. Επομένως, είναι λογικό να μας ενδιέφερε η δυνατότητα αυτοματοποίησης τέτοιων εργασιών.

Ο πηγαίος κώδικας της κύριας ενότητας Kubecost είναι ανοιχτός σύμφωνα με τους όρους της άδειας χρήσης ανοιχτού κώδικα (Apache License 2.0). Μπορεί να χρησιμοποιηθεί ελεύθερα και τα διαθέσιμα χαρακτηριστικά θα πρέπει να είναι επαρκή για μικρά έργα. Ωστόσο, η επιχείρηση είναι επιχείρηση: το υπόλοιπο προϊόν είναι κλειστό, μπορεί να χρησιμοποιηθεί από πληρωμένες συνδρομές, που συνεπάγονται και εμπορική υποστήριξη. Επιπλέον, οι συγγραφείς προσφέρουν δωρεάν άδεια για μικρά συμπλέγματα (1 σύμπλεγμα με 10 κόμβους - κατά τη σύνταξη αυτού του άρθρου, αυτό το όριο επεκτάθηκε στους 20 κόμβους) ή μια δοκιμαστική περίοδο με πλήρεις δυνατότητες για 1 μήνα.

Πώς λειτουργούν όλα

Έτσι, το κύριο μέρος του Kubecost είναι η εφαρμογή μοντέλο κόστους, γραμμένο στο Go. Ένα διάγραμμα τιμόνι που περιγράφει ολόκληρο το σύστημα ονομάζεται αναλυτής κόστους και στον πυρήνα του είναι μια συναρμολόγηση από ένα μοντέλο κόστους με Prometheus, Grafana και αρκετά ταμπλό.

Σε γενικές γραμμές, το μοντέλο κόστους έχει τη δική του διεπαφή ιστού, η οποία εμφανίζει γραφήματα και λεπτομερή στατιστικά στοιχεία για το κόστος σε μορφή πίνακα, καθώς και, φυσικά, συμβουλές για τη βελτιστοποίηση του κόστους. Οι πίνακες εργαλείων που παρουσιάζονται στο Grafana είναι ένα προγενέστερο στάδιο στην ανάπτυξη του Kubecost και περιέχουν πολλά από τα ίδια δεδομένα με το μοντέλο κόστους, συμπληρώνοντάς τα με τα συνήθη στατιστικά στοιχεία για την κατανάλωση CPU/μνήμης/δικτύου/χώρου δίσκου στο σύμπλεγμα και συστατικά.

Πώς λειτουργεί το Kubecost;

  • Το μοντέλο κόστους λαμβάνει τιμές για υπηρεσίες μέσω του API των παρόχων cloud.
  • Περαιτέρω, ανάλογα με τον τύπο σιδήρου του κόμβου και την περιοχή, υπολογίζεται το κόστος ανά κόμβο.
  • Με βάση το κόστος εκτέλεσης των κόμβων, κάθε ομάδα φύλλου λαμβάνει ένα κόστος ανά ώρα χρήσης της CPU, ανά gigabyte μνήμης που καταναλώνεται και ανά ώρα ανά gigabyte αποθηκευμένων δεδομένων - ανάλογα με τον κόμβο στον οποίο εκτελούσε ή την κατηγορία αποθήκευσης.
  • Με βάση το κόστος λειτουργίας μεμονωμένων pod, η πληρωμή υπολογίζεται για χώρους ονομάτων, υπηρεσίες, Deployments, StatefulSets.
  • Τα στατιστικά στοιχεία υπολογίζονται χρησιμοποιώντας μετρήσεις που παρέχονται από το kube-state-metrics και το node-exporter.

Είναι σημαντικό να λάβουμε υπόψη ότι το Kubecost από προεπιλογή μετράει μόνο πόρους που είναι διαθέσιμοι στο Kubernetes. Οι εξωτερικές βάσεις δεδομένων, οι διακομιστές GitLab, οι χώροι αποθήκευσης S3 και άλλες υπηρεσίες που δεν βρίσκονται στο σύμπλεγμα (ακόμα και αν βρίσκονται στο ίδιο σύννεφο) δεν είναι ορατές σε αυτό. Αν και για το GCP και το AWS μπορείτε να προσθέσετε τα κλειδιά των λογαριασμών υπηρεσιών σας και να υπολογίσετε τα πάντα μαζί.

Εγκατάσταση

Το Kubecost απαιτεί:

  • Kubernetes έκδοση 1.8 και νεότερη.
  • kube-state-metrics;
  • Προμηθέας;
  • κόμβος-εξαγωγέας.

Έτυχε ότι στις συστάδες μας πληρούνταν εκ των προτέρων όλες αυτές οι προϋποθέσεις, οπότε αποδείχθηκε ότι αρκούσε απλώς να καθορίσετε το σωστό τελικό σημείο για πρόσβαση στον Προμηθέα. Ωστόσο, το επίσημο διάγραμμα kubecost Helm περιέχει όλα όσα χρειάζεστε για να τρέξετε σε ένα γυμνό σύμπλεγμα.

Υπάρχουν διάφοροι τρόποι εγκατάστασης του Kubecost:

  1. Τυπική μέθοδος εγκατάστασης που περιγράφεται στο οδηγίες στον ιστότοπο του προγραμματιστή. Απαιτείται προσθέστε το χώρο αποθήκευσης του αναλυτή κόστους στο Helm και, στη συνέχεια, εγκαταστήστε το γράφημα. Το μόνο που απομένει είναι να προωθήσετε τη θύρα σας και να προσαρμόσετε τις ρυθμίσεις στην επιθυμητή κατάσταση χειροκίνητα (μέσω kubectl) ή/και χρησιμοποιώντας τη διεπαφή ιστού μοντέλου κόστους.

    Δεν έχουμε καν δοκιμάσει αυτήν τη μέθοδο, καθώς δεν χρησιμοποιούμε έτοιμες διαμορφώσεις τρίτων, αλλά φαίνεται σαν μια καλή επιλογή "απλά δοκιμάστε το μόνοι σας". Εάν έχετε ήδη εγκατεστημένα ορισμένα από τα στοιχεία του συστήματος ή θέλετε περισσότερη λεπτομέρεια, είναι προτιμότερο να εξετάσετε τη δεύτερη διαδρομή.

  2. Χρησιμοποιήστε ουσιαστικά το ίδιο διάγραμμα, αλλά διαμορφώστε το και εγκαταστήστε το μόνοι σας με κάθε βολικό τρόπο.

    Όπως ήδη αναφέρθηκε, εκτός από το ίδιο το kubecost, αυτό το γράφημα περιέχει γραφήματα Grafana και Prometheus, τα οποία μπορούν επίσης να προσαρμοστούν όπως επιθυμείτε.

    Διαθέσιμο στο γράφημα values.yaml για το κόστος-αναλυτής σάς επιτρέπει να διαμορφώσετε:

    • μια λίστα με στοιχεία του αναλυτή κόστους που πρέπει να αναπτυχθούν·
    • το τελικό σημείο σας για τον Προμηθέα (αν έχετε ήδη ένα).
    • τομείς και άλλες ρυθμίσεις εισόδου για το μοντέλο κόστους και το Grafana.
    • σχολιασμοί για λοβούς.
    • την ανάγκη χρήσης μόνιμης αποθήκευσης και το μέγεθός της.

    Μια πλήρης λίστα με τις διαθέσιμες επιλογές διαμόρφωσης με περιγραφές είναι διαθέσιμη στο τεκμηρίωση.

    Δεδομένου ότι το kubecost στη βασική του έκδοση δεν μπορεί να περιορίσει την πρόσβαση, θα χρειαστεί να ρυθμίσετε αμέσως τις παραμέτρους του basic-auth για τον πίνακα web.

  3. Εγκαθιστώ μόνο τον πυρήνα του συστήματος - μοντέλο κόστους. Για να γίνει αυτό, πρέπει να έχετε εγκατεστημένο το Prometheus στο σύμπλεγμα και να καθορίσετε την αντίστοιχη τιμή της διεύθυνσής του στη μεταβλητή prometheusEndpoint για τον Helm. Μετά από αυτό - εφαρμόστε σύνολο διαμορφώσεων YAML στο σύμπλεγμα.

    Και πάλι, θα πρέπει να προσθέσετε χειροκίνητα το Ingress με βασικό-auth. Τέλος, θα χρειαστεί να προσθέσετε μια ενότητα για τη συλλογή μετρήσεων κόστους-μοντέλου extraScrapeConfigs στη διαμόρφωση Προμηθέας:

    - 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

Τι παίρνουμε;

Με πλήρη εγκατάσταση, έχουμε στη διάθεσή μας το web panel kubecost και Grafana με σετ ταμπλό.

Συνολικό κόστος, που εμφανίζεται στην κύρια οθόνη, δείχνει στην πραγματικότητα το εκτιμώμενο κόστος των πόρων για το μήνα. Αυτό αναμενόμενος τιμή που αντανακλά το κόστος χρήσης του συμπλέγματος (ανά μήνα) στο τρέχον επίπεδο κατανάλωσης πόρων.

Αυτή η μέτρηση είναι περισσότερο για την ανάλυση των δαπανών και τη βελτιστοποίησή τους. Δεν είναι πολύ βολικό να δούμε το συνολικό κόστος για τον αφηρημένο Ιούλιο στο kubecost: θα πρέπει να το κάνετε αυτό πηγαίνετε στη χρέωση. Ωστόσο, μπορείτε να δείτε το κόστος κατανεμημένο κατά χώρους ονομάτων, ετικέτες, ομάδες ομάδων για 1/2/7/30/90 ημέρες, τις οποίες η χρέωση δεν θα σας εμφανίσει ποτέ.

Κριτική Kubecost για εξοικονόμηση χρημάτων στο Kubernetes στα σύννεφα

Μιλώντας για ετικέτες. Θα πρέπει να μεταβείτε αμέσως στις ρυθμίσεις και να ορίσετε τα ονόματα των ετικετών που θα χρησιμοποιηθούν ως πρόσθετες κατηγορίες για την ομαδοποίηση του κόστους:

Κριτική Kubecost για εξοικονόμηση χρημάτων στο Kubernetes στα σύννεφα

Μπορείτε να κρεμάσετε οποιεσδήποτε ετικέτες πάνω τους - βολικό εάν έχετε ήδη το δικό σας σύστημα ετικετών.

Επίσης, εκεί μπορείτε να αλλάξετε τη διεύθυνση του τερματικού API με το οποίο συνδέεται το μοντέλο κόστους, να προσαρμόσετε το μέγεθος έκπτωσης σε GCP και να ορίσετε τις δικές σας τιμές για πόρους και νόμισμα για τη μέτρησή τους (για κάποιο λόγο η δυνατότητα δεν επηρεάζει το Συνολικό κόστος).

Το Kubecost μπορεί να δείξει διάφορα προβλήματα στο σύμπλεγμα (και μάλιστα σε εγρήγορση σε περίπτωση κινδύνου). Δυστυχώς, η επιλογή δεν είναι διαμορφώσιμη και επομένως, εάν έχετε περιβάλλοντα για προγραμματιστές και τα χρησιμοποιείτε, θα βλέπετε συνεχώς κάτι σαν αυτό:

Κριτική Kubecost για εξοικονόμηση χρημάτων στο Kubernetes στα σύννεφα

Ένα σημαντικό εργαλείο - Cluster Savings. Μετρά τη δραστηριότητα των pods (κατανάλωση πόρων, συμπεριλαμβανομένων των πόρων δικτύου), και υπολογίζει επίσης πόσα χρήματα μπορείτε να εξοικονομήσετε και σε τι.

Μπορεί να φαίνεται ότι οι συμβουλές βελτιστοποίησης είναι αρκετά προφανείς, αλλά η εμπειρία δείχνει ότι υπάρχει ακόμα κάτι που πρέπει να δούμε. Συγκεκριμένα, παρακολουθείται η δικτυακή δραστηριότητα των pods (η Kubecost προτείνει να δοθεί προσοχή σε ανενεργά), συγκρίνεται η ζητούμενη και η πραγματική κατανάλωση μνήμης και CPU, καθώς και η CPU που χρησιμοποιείται από τους κόμβους συμπλέγματος (προτείνει τη σύμπτυξη πολλών κόμβων σε έναν), δίσκος φορτίο και μερικές ντουζίνες ακόμα παραμέτρους.

Όπως συμβαίνει με οποιοδήποτε ζήτημα βελτιστοποίησης, η βελτιστοποίηση πόρων με βάση τα δεδομένα Kubecost απαιτεί: αντιμετωπίζετε με προσοχή. Για παράδειγμα, το Cluster Savings προτείνει τη διαγραφή κόμβων, ισχυριζόμενος ότι είναι ασφαλής, αλλά δεν λαμβάνει υπόψη την παρουσία επιλογέων κόμβων και κηλίδων στα pods που έχουν αναπτυχθεί σε αυτά, τα οποία δεν είναι διαθέσιμα σε άλλους κόμβους. Και γενικά, ακόμη και οι συντάκτες του προϊόντος στο δικό τους πρόσφατο άρθρο (παρεμπιπτόντως, μπορεί να είναι πολύ χρήσιμο για όσους ενδιαφέρονται για το θέμα του έργου) συνιστάται να μην βιαστείτε αδιάκοπα στη βελτιστοποίηση κόστους, αλλά να προσεγγίσετε το θέμα προσεκτικά.

Αποτελέσματα της

Αφού χρησιμοποιήσαμε το kubecost για ένα μήνα σε μερικά έργα, μπορούμε να συμπεράνουμε ότι είναι ένα ενδιαφέρον (και επίσης εύκολο στην εκμάθηση και εγκατάσταση) εργαλείο για την ανάλυση και τη βελτιστοποίηση του κόστους για τις υπηρεσίες παρόχων cloud που χρησιμοποιούνται για τα συμπλέγματα Kubernetes. Οι υπολογισμοί αποδεικνύονται πολύ ακριβείς: στα πειράματά μας συνέπεσαν με αυτό που πραγματικά απαιτούσαν οι πάροχοι.

Υπάρχουν επίσης ορισμένα μειονεκτήματα: υπάρχουν μη κρίσιμα σφάλματα και σε ορισμένα σημεία η λειτουργικότητα δεν καλύπτει τις ανάγκες συγκεκριμένων για ορισμένα έργα. Ωστόσο, εάν πρέπει να καταλάβετε γρήγορα πού πάνε τα χρήματα και τι μπορεί να «κοπεί» προκειμένου να μειώσετε σταθερά τον λογαριασμό για τις υπηρεσίες cloud κατά 5-30% (αυτό συνέβη στην περίπτωσή μας), αυτή είναι μια εξαιρετική επιλογή .

PS

Διαβάστε επίσης στο blog μας:

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο