Το Kubernetes, γνωστό κι ως K8s, είναι ένα σύστημα ανοικτού κώδικα που εστιάζει την αυτοματοποίηση της διάταξης, κλιμάκωσης και διαχείρισης εφαρμογών που βασίζονται σε δοχεία (containers). Ουσιαστικά, ομαδοποιεί τα δοχεία που συνθέτουν μια εφαρμογή σε λογικές μονάδες για εύκολη διαχείριση και ανακάλυψη. Έχει φτιαχθεί με βάση εμπειρία 15 χρόνων στην Google ως προς την εκτέλεση φόρτων εργασίας παραγωγής συνδυαζόμενη με νεωτεριστικές ιδέες και πρακτικές από την κοινότητα.
Προσφέρονται τα εξής κύρια χαρακτηριστικά:
- Αυτοματοποιημένη διάθεση (rollout) και επαναφορά (rollback): Το Kubernetes εφαρμόζει βαθμιαία αλλαγές στην εφαρμογή ή την διαμόρφωσή της ενώ παρακολουθεί την υγεία της ώστε να εξασφαλίσει πως οι αλλαγές αυτές δεν ζημιώνουν όλα τα σχετικά στιγμιότυπα. Αν κάτι πάει στραβά, τότε το Kubernetes θα κάνει επαναφορά στην προηγούμενη κατάσταση εφαρμογής
- Ανακάλυψη υπηρεσιών και εξισορρόπηση φόρτου: Δεν υπάρχει ανάγκη τροποποίησης της εφαρμογής για την χρήση ενός μη οικείου μηχανισμού ανακάλυψης υπηρεσιών. Το Kubernetes παρέχει στα Pods τις δικές τους IP διευθύνσεις και ένα ενιαίο όνομα DNS για ένα σύνολο από Pods ενώ μπορεί να εξισορροπήσει τον φόρτο κατά μήκος τους. Να σημειωθεί πως ένα Pod είναι μια ομάδα από ένα ή παραπάνω δοχεία με διαμοιραζόμενο αποθηκευτικό χώρο και πόρους δικτύου καθώς και ένας προσδιορισμός του τρόπου εκτέλεσης των δοχείων.
- Τοπολογία υπηρεσιών: το Kubernetes είναι ικανό να δρομολογήσει την κίνηση για υπηρεσίες με βάση την τοπολογία των αντίστοιχων συστάδων.
- Ενορχήστρωση αποθήκευσης: Αυτοματοποίηση της προσάρτησης του επιθυμητού συστήματος αποθήκευσης, είτε είναι τοπικό, βασιζόμενο στο νέφος ή δικτυακό βασιζόμενο σε πρωτόκολλα όπως NFS, iSCSI, Gluster, Ceph, Cinder ή Flocker.
- Διαχείριση μυστικών και διαμόρφωσης: Ικανότητα διάταξης και ανανέωσης μυστικών και διαμόρφωσης εφαρμογής χωρίς την ανάγκη ανακατασκευής εικόνων (δοχείων) και έκθεσης μυστικών στην στοίβα διαμόρφωσης
- Αυτόματο πακετάρισμα δοχείων: Αυτόματη τοποθέτηση δοχείων σε πόρους συστάδας με βάση τις απαιτήσεις τους για πόρους και άλλους περιορισμούς χωρίς την θυσία της διαθεσιμότητας. Δυνατότητα ανάμειξης κριτικών και καλύτερης προσπάθειας (best-effort) φόρτων εργασίας ώστε να αυξηθεί η χρήση και να σωθούν ακόμη περισσότεροι πόροι
- Εκτέλεση παρτίδων (batches): Το Kubernetes μπορεί να διαχειριστεί φόρτους εργασίας παρτίδων, αντικαθιστώντας δοχεία που αποτυγχάνουν, εφόσον αυτό είναι επιθυμητό
- Οριζόντια κλιμάκωση: Κλιμάκωση της εφαρμογής με οριζόντιο τρόπο είτε χειρωνακτικά με την χρήση απλών εντολών ή διεπαφής χρήσης είτε αυτόματα με βάση την χρήση κεντρικής μονάδας επεξεργασίας (CPU)
- Αυτό-επούλωση (Self-healing): ικανότητα επανεκκίνησης δοχείων που αποτυγχάνουν, αντικατάστασης και χρονοπρογραμματισμού δοχείων όταν οι κόμβοι εκτέλεσής τους πεθάνουν, αποδέσμευση δοχείων που δεν απαντούν σε ελέγχους υγείας οριζόμενους από τον χρήστη καθώς και εγγυημένης δημοσίευσης των δοχείων ως προς τους πελάτες μόνο όταν αυτά είναι έτοιμα για εξυπηρέτηση
Άλλα σημαντικά χαρακτηριστικά και αντίστοιχα πλεονεκτήματα περιλαμβάνουν:
- Παγκόσμια κλιμάκωση: το Kubernetes έχει σχεδιαστεί με τις ίδιες αρχές που επιτρέπουν στην Google να εκτελεί δισεκατομμύρια δοχεία ανά εβδομάδα. Συνεπώς, μπορεί να κλιμακωθεί χωρίς την απαίτηση της αύξησης της δικής σας ομάδας λειτουργίας (ops team)
- Μη υπέρφυση (never outgrow): Είτε πραγματοποιούνται τοπικές δοκιμές είτε εκτελείται μια παγκόσμια επιχείρηση, το Kubernetes ευέλικτα μεγαλώνει μαζί με την επιχείρηση για την συνεπή και εύκολη παράδοση εφαρμογών ανεξάρτητα της πολυπλοκότητας των επιχειρησιακών αναγκών
- Οπουδήποτε εκτέλεση: το Kubernetes είναι ανοικτού κώδικα οπότε παρέχει την ελευθερία εκμετάλλευσής του σε επιτόπιες, υβριδικές ή δημόσιες υποδομές νέφους. Αυτό επιτρέπει την εύκολη, χωρίς κόπο μεταφορά φόρτων εργασίας εκεί που σε ενδιαφέρει.
Υπάρχουν πολλές μελέτες περιπτώσεων που επιδεικνύουν την καταλληλότητα και την προστιθέμενη αξία του Kubernetes. Το άρθρο αυτό εστιάζει σε 2 από αυτές, οι οποίες αναλύονται στην συνέχεια.
Babylon
Η Babylon είναι μια επιχείρηση με βάση το Ηνωμένο Βασίλειο που εξειδικεύεται σε νεωτερισμούς τεχνητής νοημοσύνης για τον ιατρικό τομέα. Ουσιαστικά, ένας μεγάλος αριθμός από προϊόντας της επιχείρησης αυτής χρησιμοποιούν αλγορίθμους μηχανικής μάθησης και τεχνητής νοημοσύνης. Το 2019, δεν υπήρχε πια αρκετή επιτόπια υπολογιστική ισχύ για την εκτέλεση πειραμάτων. Επιπλέον, η επιχείρηση μεγάλωνε και σχεδίαζε την επέκτασή της σε επιπλέον χώρες. Η λύση που εφαρμόστηκε ήταν η μετανάστευση των εφαρμογών της σε πλατφόρμα Kubernetes και η χρήση του Kubeflow, ένα κιτ εργαλείων για μηχανική μάθηση πάνω από το Kubernetes καθώς και η δέσμευση πόρων για τα αναγκαία πειράματα από το δημόσιο νέφος. Συνεπώς, κατασκευάστηκε μια αυτό-εξυπηρετούμενη πλατφόρμα εκπαίδευσης τεχνητής νοημοσύνης πάνω από το Kubernetes. Η θετική επίδραση της λύσης αυτής ήταν πως ο χρόνος εκτέλεσης των πειραμάτων και κλινικών επικυρώσεων επιταχύνθηκε σημαντικά από ώρες ή μέρες σε λιγότερο από 20 λεπτά. Η φορητότητα της εγχώριας πλατφόρμας νέφους επέτρεψε επίσης της Babylon να επεκταθεί και σε άλλες χώρες.
AppDirect
Η AppDirect είναι μια επιχείρηση με βάση το Σαν Φραντζίσκο των ΗΠΑ που ειδικεύεται σε επιχειρησιακό λογισμικό. Το κυριότερο προϊόν της είναι μια εμπορική πλατφόρμα από άκρο σε άκρο για προϊόντα και υπηρεσίες βασιζόμενα στο υπολογιστικό νέφος. Το 2014 η επιχείρηση αυτή είχε μια μονολιθική εφαρμογή που διατασσόταν σε μια υποδομή tomcat ενώ όλη η διαδικασία παραγωγής εκδόσεων ήταν αρκετά πολύπλοκη. Ειδικότερα, υπήρχαν πολλά χειρωνακτικά βήματα όπου ένας μηχανικός κατασκεύαζε ένα χαρακτηριστικό και μια άλλη ομάδα αναλάμβανε την ενοποίησή του. Ταυτόχρονα, η ομάδα μηχανικής μεγάλωνε ολοένα και περισσότερο. Συνεπώς, η επιχείρηση κατάλαβε πως υπήρχε ανάγκη για καλύτερη υποδομή ώστε να υποστηρίξει την ανάπτυξη και νζ αυξήσει την ταχύτητα παραγωγής.
Η λύση που υιοθετήθηκε βασίστηκε στην αναμηχανική της εφαρμογής για να ακολουθήσει μια αρχιτεκτονική βασιζόμενη σε μικρο-υπηρεσίες. Για την υποστήριξη μιας τέτοιας αρχιτεκτονικής, η επιχείρηση πειραματίστηκε με διάφορες τεχνολογίες πριν καταλήξει στην χρήση του Kubernetes για την ενορχήστρωση δοχείων και το πλαίσιο Prometheus για την παρακολούθηση της εφαρμογής. Σήμερα, η AppDirect διαθέτει πάνω από 50 μικρο-υπηρεσίες σε παραγωγή και 15 συστάδες διαχειριζόμενες από το Kubernetes που έχουν αναπτυχθεί στο νέφος της Amazon και σε επιτόπια περιβάλλοντα παγκοσμίως.
Το αποτέλεσμα ήταν πως η πλατφόρμα Kubernetes υποστήριξε την δεκαπλάσια ανάπτυξη της ομάδας μηχανικής τα τελευταία χρόνια. Επιπλέον, η ταχύτητα ανάπτυξης βελτιώθηκε αρκετά με την συνεχή προσθήκη νέων χαρακτηριστικών που οδηγεί στην παραγωγή εκδόσεων από 4 ώρες σε μερικά λεπτά. Ακόμη, υποστηρίχθηκε δυνατότητα αυτό-εξυπηρέτησης για τους προγραμματιστές διότι η ενοποίηση μιας νέας υπηρεσίας δεν απαιτεί την δημιουργία Jira εισιτηρίων ή την συνάντηση διαφορετικών ομάδων. Σήμερα, η επιχείρηση παρατηρεί 1600 διατάξεις ανά εβδομάδα σε σχέση με 1-30 του παρελθόντος. Τέλος, η AppDirect μείωσε το κόστος μεταφέροντας την εμπορική της πλατφόρμα και τις αντίστοιχες μονόλιθικές αναπτύξεις στο Kubernetes από EC2 ξενιστές, εκμεταλλευομένη επίσης την αυτό-κλιμάκωση, ώστε να ικανοποιείται η υψηλή κίνηση σε ώρες αιχμής και να μειώνονται στο ελάχιστο οι χρησιμοποιούμενοι πόροι τις εναπομείναντες ώρες της ημέρας.