Το έργο με τίτλο Δυναμικές στρατηγικές τοποθέτησης μικροϋπηρεσιών στο kubernetes από τον/τους δημιουργό/ούς Kastrinakis Nikolaos διατίθεται με την άδεια Creative Commons Αναφορά Δημιουργού 4.0 Διεθνές
Βιβλιογραφική Αναφορά
Νικόλαος Καστρινάκης, "Δυναμικές στρατηγικές τοποθέτησης μικροϋπηρεσιών στο kubernetes", Διπλωματική Εργασία, Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών, Πολυτεχνείο Κρήτης, Χανιά, Ελλάς, 2024
https://doi.org/10.26233/heallink.tuc.100593
Καθώς οι εφαρμογές κινούνται προς το υπολογιστικό νέφος, οι αρχιτεκτονικές μικρουπηρεσιών γίνονται όλο και πιο δημοφιλείς. Εκτός των πλεονεκτημάτων που αποφέρουν, οι μικρουπηρεσίες προσθέτουν πολυπλοκότητα στην σχεδίαση εφαρμογών και φέρνουν μαζί τους νέα προβλήματα. Για την επίλυση αυτών, το Kubernetes δημιουργήθηκε με σκοπό να χειρίζεται εφαρμογές μικρουπηρεσιών με την αυτοματοποίηση διαχείρησης, κλιμάκωσης και παράταξης αυτών. Οι εφαρμογές στο Kubernetes παρατάσσονται σε συμπλέγματα (clusters), μία συλλογή υπολογιστικών κόμβων (nodes) που διαχειρίζονται από ένα κεντρικό επίπεδο ελέγχου. Οι μικρουπηρεσίες τοποθετούνται σε μικρές υπολογιστικές μονάδες, ονόματι Pods, τα οποία με τη σειρά τους βρίσκονται μέσα σε έναν κόμβο (node). Ο δρομολογητής (scheduler) του Kubernetes είναι υπεύθυνος για την τοποθέτηση των Pods σε κόμβους (nodes) χρησιμοποιώντας μία σειρά από κανονισμούς φιλτραρίσματος και σκοραρίσματος στην προσπάθεια βέλτιστης τοποθέτησης αυτών στο σύμπλεγμα (cluster). Η τοποθέτηση των Pods σε συγκεκριμένους κόμβους (nodes) είναι βασικό πρόβλημα σε αρχιτεκτονικές μικρουπηρεσιών, εφόσον η αυξημένη φυσική απόσταση μεταξύ κομματιών της εφαρμογής μπορούν να οδεύσουν σε αυξημένους χρόνους απόκρισης αυτής. Επιπρόσθετα, η επικοινωνία μεταξύ κόμβων, ονόματι και ως egress traffic, χρεώνεται από τους προμηθευτές υπηρεσιών νέφους (cloud providers). Συνεπώς, η τοποθέτηση Pods που επικοινωνούν πολύ μεταξύ τους στους ίδιους κόμβους θεωρείται βέλτιστη για την ελαχιστοποίηση egress traffic, την μείωση κόστους υποδομής και την βελτίωση της επίδοσης της εφαρμογής μέσω μείωσης των χρόνων απόκρισης. Σε παλαιότερες εργασίες, η τοποθέτηση γινόταν χρησιμοποιώντας τεχνικές ομαδοποίησης γράφων για την παραγωγή μίας βέλτιστης τοποθέτησης των μικρουπηρεσιών στο σύμπλεγμα (cluster). Αν και τα αποτελέσματα ήταν εξαιρετικά, πιθανότατα δεν θα μεταφερόντουσαν σε πιο πρακτικό περιβάλλον, όπου ο φόρτος αλλάζει και η κλιμάκωση Pods λαμβάνει χώρα. Σε αυτή την εργασία, επιδιώκουμε την επίλυση του προβλήματος με μία ευρηματική προσέγγιση. Θα αλλάξουμε την λειτουργικότητα του δρομολογητή (scheduler), προσθέτωντας την δική μας μέθοδο φιλτραρίσματος και πιο σημαντικά μία μέθοδο σκοραρίσματος με γνώση της επικοινωνίας. Ο στόχος μας είναι η βελτίωση όλων των προαναφερόμενων περιοχών με μία μέθοδο που ευθυγραμμίζεται με αρχιτεκτονική μικρουπηρεσιών και το σχεδιασμό του Kubernetes. Μία εφαρμογή τοποθετήθηκε στο Google Cloud Platform (GCP) χρησιμοποιώντας Kubernetes για την εκτέλεση των πειραμάτων μας. Τα αποτελέσματα δείχνουν πως η μεθοδός με γνώση επικοινωνίας μας είναι πολύ καλύτερη στην βελτίωση επίδοσης της εφαρμογής, μείωση του κόστους υποδομών και ελαχιστοποίησης του egress traffic σε σύγκριση με τον προκαθορισμένο δρομολογητή (default scheduler). Επίσης, αν και είναι ελάχιστα χειρότερη από την MODSOFT-HP, μία μέθοδο fuzzy ομαδοποίησης γράφων, περεταίρω πειράματα με περισσότερους χρήστες και μηχανισμούς κλιμάκωσης που συνδέονται με την μέθοδό μας, μπορεί να αποδείξουν ότι είναι μία συνολικά καλύτερη και πιο πρακτική μέθοδος τοποθέτησης.