Μπορεί να μην χρειάζεστε Kubernetes

Μπορεί να μην χρειάζεστε Kubernetes
Κορίτσι σε ένα σκούτερ. Απεικόνιση freepik, λογότυπο Nomad από Hashi Corp

Ο Kubernetes είναι ο γορίλας των 300 λιβρών της ενορχήστρωσης κοντέινερ. Λειτουργεί σε μερικά από τα μεγαλύτερα συστήματα εμπορευματοκιβωτίων στον κόσμο, αλλά είναι ακριβό.

Ιδιαίτερα ακριβό για μικρότερες ομάδες, οι οποίες θα απαιτήσουν πολύ χρόνο υποστήριξης και μια απότομη καμπύλη εκμάθησης. Αυτό είναι υπερβολικό κόστος για την ομάδα των τεσσάρων μας. Έτσι αρχίσαμε να ψάχνουμε εναλλακτικές - και ερωτευτήκαμε Νομάς.

Εσυ τι θελεις

Η ομάδα μας υποστηρίζει μια σειρά κοινών υπηρεσιών παρακολούθησης και ανάλυσης απόδοσης: τερματικά σημεία API για μετρήσεις γραμμένες στο Go, εξαγωγές Prometheus, αναλυτές αρχείων καταγραφής όπως το Logstash και Gollum, καθώς και βάσεις δεδομένων όπως το InfluxDB ή το Elasticsearch. Κάθε μία από αυτές τις υπηρεσίες εκτελείται στο δικό της κοντέινερ. Χρειαζόμαστε ένα απλό σύστημα για να τα κρατάμε όλα σε λειτουργία.

Ξεκινήσαμε με μια λίστα απαιτήσεων για ενορχήστρωση κοντέινερ:

  • Εκτέλεση ενός συνόλου υπηρεσιών σε πολλά μηχανήματα.
  • Επισκόπηση των υπηρεσιών που εκτελούνται.
  • Σύνδεσμοι μεταξύ υπηρεσιών.
  • Αυτόματη επανεκκίνηση εάν η υπηρεσία πέσει.
  • Συντήρηση υποδομής από μια μικρή ομάδα.

Επιπλέον, τα ακόλουθα πράγματα θα είναι ωραία, αλλά δεν απαιτούνται προσθήκες:

  • Μηχανές προσθήκης ετικετών με βάση τις δυνατότητές τους (για παράδειγμα, μηχανές σήμανσης με γρήγορους δίσκους για βαριές υπηρεσίες I/O).
  • Δυνατότητα εκτέλεσης υπηρεσιών ανεξάρτητα από τον ενορχηστρωτή (για παράδειγμα, κατά την ανάπτυξη).
  • Ένα κοινό μέρος για να μοιράζεστε διαμορφώσεις και μυστικά.
  • Τελικό σημείο για μετρήσεις και αρχεία καταγραφής.

Γιατί το Kubernetes δεν είναι σωστό για εμάς

Καθώς δημιουργούσαμε πρωτότυπα με το Kubernetes, παρατηρήσαμε ότι προσθέταμε όλο και πιο περίπλοκα στρώματα λογικής στα οποία βασιζόμασταν σε μεγάλο βαθμό.

Για παράδειγμα, το Kubernetes υποστηρίζει ενσωματωμένες διαμορφώσεις υπηρεσιών μέσω ConfigMaps. Μπορείτε να μπερδευτείτε γρήγορα, ειδικά όταν συγχωνεύετε πολλά αρχεία διαμόρφωσης ή προσθέτετε πρόσθετες υπηρεσίες σε ένα pod. Kubernetes (ή τιμόνι σε αυτήν την περίπτωση) σας επιτρέπει να εφαρμόσετε δυναμικά εξωτερικές διαμορφώσεις για να διαχωρίσετε τις ανησυχίες. Αλλά αυτό έχει ως αποτέλεσμα μια στενή, κρυφή σύζευξη μεταξύ του έργου σας και του Kubernetes. Ωστόσο, οι Helm και ConfigMaps είναι πρόσθετες επιλογές, επομένως δεν χρειάζεται να τις χρησιμοποιήσετε. Μπορείτε απλά να αντιγράψετε τη διαμόρφωση στην εικόνα Docker. Ωστόσο, είναι δελεαστικό να ακολουθήσετε αυτό το μονοπάτι και να χτίσετε περιττές αφαιρέσεις που μπορεί να μετανιώσετε αργότερα.

Επιπλέον, το οικοσύστημα Kubernetes εξελίσσεται ραγδαία. Χρειάζεται πολύς χρόνος και ενέργεια για να παραμείνετε ενημερωμένοι με τις βέλτιστες πρακτικές και τα πιο πρόσφατα εργαλεία. Kubectl, minikube, kubeadm, helm, tiller, kops, oc - η λίστα συνεχίζεται και συνεχίζεται. Δεν χρειάζονται όλα αυτά τα εργαλεία όταν ξεκινάτε, αλλά δεν ξέρετε τι θα χρειαστείτε, επομένως πρέπει να γνωρίζετε τα πάντα. Εξαιτίας αυτού, η καμπύλη μάθησης είναι αρκετά απότομη.

Πότε να χρησιμοποιήσετε το Kubernetes

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

Το Kubernetes συνοδεύεται από εκπληκτικά χαρακτηριστικά, που κάνουν την ενορχήστρωση κοντέινερ σε κλίμακα πιο διαχειρίσιμη:

Το ερώτημα είναι αν χρειάζεστε πραγματικά όλα αυτά τα χαρακτηριστικά. Δεν μπορείς να βασίζεσαι μόνο σε αφαιρέσεις. θα πρέπει να μάθετε τι συμβαίνει κάτω από την κουκούλα.

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

Οι μπαταρίες δεν περιλαμβάνονται

Το Nomad είναι το 20% της ενορχήστρωσης που παρέχει το 80% του απαραίτητου. Το μόνο που κάνει είναι να διαχειρίζεται τις αναπτύξεις. Το Nomad φροντίζει για τις αναπτύξεις, επανεκκινεί τα κοντέινερ σε περίπτωση σφαλμάτων... και τέλος.

Όλη η ουσία του Nomad είναι αυτό που κάνει ελάχιστο: δεν υπάρχει αναλυτική διαχείριση δικαιωμάτων ή εκτεταμένες πολιτικές δικτύου, αυτό είναι ειδικά σχεδιασμένο. Αυτά τα εξαρτήματα παρέχονται εξωτερικά ή καθόλου.

Νομίζω ότι το Nomad έχει βρει τον τέλειο συμβιβασμό μεταξύ ευκολίας χρήσης και χρησιμότητας. Είναι καλό για μικρές, ανεξάρτητες υπηρεσίες. Εάν χρειάζεστε περισσότερο έλεγχο, θα πρέπει να τα αυξήσετε μόνοι σας ή να χρησιμοποιήσετε διαφορετική προσέγγιση. Nomad είναι просто ενορχηστρωτής.

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

Νομαδικό οικοσύστημα χαλαρά συζευγμένων στοιχείων

Η πραγματική δύναμη του Nomad είναι το οικοσύστημά του. Συνδυάζεται πολύ καλά με άλλα - εντελώς προαιρετικά - προϊόντα όπως π.χ Πρόξενος (κατάστημα κλειδιού-αξίας) ή Θόλος (επεξεργασία μυστικών). Μέσα στο αρχείο Nomad υπάρχουν ενότητες για την εξαγωγή δεδομένων από αυτές τις υπηρεσίες:

template {
  data = <<EOH
LOG_LEVEL="{{key "service/geo-api/log-verbosity"}}"
API_KEY="{{with secret "secret/geo-api-key"}}{{.Data.value}}{{end}}"
EOH

  destination = "secrets/file.env"
  env         = true
}

Εδώ διαβάζουμε το κλειδί service/geo-api/log-verbosity από το Consul και ενώ εργαζόμαστε το εκθέτουμε σε μια μεταβλητή περιβάλλοντος LOG_LEVEL. Παρουσιάζουμε επίσης το κλειδί secret/geo-api-key από το Vault ως API_KEY. Απλό αλλά δυνατό!

Λόγω της απλότητάς του, το Nomad είναι εύκολα επεκτάσιμο με άλλες υπηρεσίες μέσω API. Για παράδειγμα, υποστηρίζονται ετικέτες για εργασίες. Προσθέτουμε ετικέτες σε όλες τις υπηρεσίες με μετρήσεις trv-metrics. Με αυτόν τον τρόπο ο Prometheus μπορεί να βρει εύκολα αυτές τις υπηρεσίες μέσω του Consul και να ελέγχει περιοδικά το τελικό σημείο /metrics για νέα δεδομένα. Το ίδιο μπορεί να γίνει, για παράδειγμα, για τα κούτσουρα, χρησιμοποιώντας Λόκι.

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

  • Εκτελέστε μια εργασία Jenkins χρησιμοποιώντας ένα άγκιστρο και ο Consul παρακολουθεί την αναδιάταξη της εργασίας Nomad όταν αλλάζει η διαμόρφωση της υπηρεσίας.
  • Ο Ceph προσθέτει ένα κατανεμημένο σύστημα αρχείων στο Nomad.
  • fabio για εξισορρόπηση φορτίου.

Όλα αυτά επιτρέπουν οργανική ανάπτυξη υποδομών χωρίς καμία ειδική σύνδεση με τον πωλητή.

Δίκαιη προειδοποίηση

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

Σε σύγκριση με το Kubernetes, η κοινότητα Nomad δεν είναι τόσο μεγάλη. Το Kubernetes έχει ήδη περίπου 75 commit και 000 συνεισφέροντες, ενώ το Nomad έχει περίπου 2000 commit και 14 συνεισφέροντες. Το Nomad θα δυσκολευτεί να συμβαδίσει με την ταχύτητα του Kubernetes, αλλά ίσως δεν χρειάζεται! Είναι ένα πιο εξειδικευμένο σύστημα και η μικρότερη κοινότητα σημαίνει επίσης ότι το αίτημα έλξης σας είναι πιο πιθανό να γίνει αντιληπτό και αποδεκτό, σε σύγκριση με το Kubernetes.

Περίληψη

Κατώτατη γραμμή: Μην χρησιμοποιείτε το Kubernetes μόνο και μόνο επειδή το κάνουν όλοι οι άλλοι. Αξιολογήστε προσεκτικά τις απαιτήσεις σας και ελέγξτε ποιο εργαλείο είναι πιο ωφέλιμο.

Εάν σκοπεύετε να αναπτύξετε έναν τόνο ομοιογενών υπηρεσιών σε μια υποδομή μεγάλης κλίμακας, τότε το Kubernetes είναι μια καλή επιλογή. Απλώς έχετε επίγνωση της πρόσθετης πολυπλοκότητας και του λειτουργικού κόστους. Ορισμένα κόστη μπορούν να αποφευχθούν χρησιμοποιώντας ένα διαχειριζόμενο περιβάλλον Kubernetes, όπως π.χ Μηχανή Google Kubernetes ή Amazon EX.

Αν απλώς αναζητάτε έναν αξιόπιστο ενορχηστρωτή που είναι εύκολος στη συντήρηση και επεκτάσιμος, γιατί να μην δοκιμάσετε το Nomad; Ίσως εκπλαγείτε πόσο μακριά θα σας πάει αυτό.

Αν το Kubernetes συγκριθεί με αυτοκίνητο, το Nomad θα ήταν σκούτερ. Μερικές φορές χρειάζεσαι ένα πράγμα και μερικές φορές χρειάζεσαι κάτι άλλο. Και οι δύο έχουν δικαίωμα ύπαρξης.

Πηγή: www.habr.com

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