10 χρόνια Kubernetes

08/08/2024 / Miscellaneous
Kubernetes is 10

Πριν δέκα χρόνια, τα containers άρχισαν να αναδεικνύονται ως ο νέος τρόπος virtualization για εφαρμογές. Ωστόσο, η προστασία του χώρου αποθήκευσης και των δεδομένων ήταν ανύπαρκτη. Το Kubernetes πλέον προσφέρει μια ώριμη πλατφόρμα για cloud native εφαρμογές με όλη τη λειτουργικότητα που απαιτείται για την αποθήκευση stateful δεδομένων.

Σε συνέντευξη στο ComputerWeekly.com, ο μηχανικός της Google, Saad Ali, θυμάται τις πρώτες μέρες του Kubernetes. Mιλά για τις προκλήσεις αποθήκευσης και προστασίας δεδομένων, τη συμμετοχή του σε προγράμματα container storage interface (CSI), την επίλυση του γρίφου του stateful storage για ένα ελαστικό και φορητό περιβάλλον και πώς τα Kubernetes Operators ήταν ένα τεράστιο άλμα προς τα εμπρός για να σπάσουν αυτό το logjam.

"Όταν πρωτοκυκλοφόρησε το Kubernetes, οι προγραμματιστές και οι πωλητές ενδιαφέρθηκαν πολύ για τα container, αλλά δεν είχαν ιδέα από πού να ξεκινήσουν. To Docker είχε ενεργοποιήσει τη βιομηχανία και είχε κάνει την ανάπτυξη ευκολότερη. Υπήρχε μεγάλο ενδιαφέρον να βρούμε πώς να το κάνουμε χρήσιμο για deployments σε κλίμακα.

Πολλοί πωλητές storage περίμεναν προσπαθώντας να αποφασίσουν πού θα επενδύσουν. Μερικοί ξεκίνησαν νωρίς και έγραψαν τα αυθεντικά in-tree volume plugins για το Kubernetes, κάτι που ήταν μια τρομακτική διαδικασία που απαιτούσε τον έλεγχο του κώδικα απευθείας στον πυρήνα του Kubernetes.

Ασχολήθηκα με το κομμάτι του χώρου αποθήκευσης του Kubernetes διορθώνοντας ένα σωρό ζητήματα που σχετίζονται με την αποθήκευση. Τελικά, μου ανατέθηκε να διορθώσω τα race conditions που υπήρχαν από το 1.0 στο storage stack. Κατέληξα να ωθήσω μια μεγάλη εκ νέου αρχιτεκτονική του volume lifecycle stack στο Kubernetes 1.3, συμπεριλαμβανομένης της εξαγωγής σύνδεσης/αποσύνδεσης logic από το kubelet και τη μετακίνησή του σε έναν κεντρικό ελεγκτή για μείωση των race conditions. Αυτό, μαζί με πολλές πρόσθετες διορθώσεις από πολλούς προγραμματιστές σε πολλαπλές επόμενες εκδόσεις, βοήθησε στη βελτίωση της σταθερότητας του γενικού volume sub-system. Έγινα συνυπεύθυνος αποθήκευσης Kubernetes SIG (Special Interest Group) και ένας από τους κύριους τομείς εστίασης τα επόμενα χρόνια ήταν να ανακαλύψω πώς να κάνω τον χώρο αποθήκευσης Kubernetes πιο επεκτάσιμο. Βοήθησα να ξεκινήσει και να αναπτυχθεί η διεπαφή container storage."

 


"Για το Kubernetes γενικά, θυμάμαι ότι άκουσα ότι το Pokemon Go έτρεχε πάνω από το Kubernetes. Αυτή ήταν μια απίστευτη στιγμή και μια συνειδητοποίηση ότι το Kubernetes απογειωνόταν."

 

"Το CSI έκανε τους προμηθευτές αποθηκευτικού χώρου αρκετά άνετους ώστε να επενδύσουν στη δημιουργία plugins και περισσότεροι προμηθευτές άρχισαν να αναπτύσσονται για αυτό και να το υιοθετούν.

Πέρα από την επεκτασιμότητα της πλατφόρμας, η μαγεία του χώρου αποθήκευσης Kubernetes είναι ότι αποσυνδέει το block/file storage από τον υπολογισμό και κάνει τα stateful workloads τόσο ελαστικά όσο τα non-stateful workloads. Όταν τα stateful workloads δεν χρειάζονταν πια να προσαρτώνται στο node, έγινε αυτοκολότερο να κάνουν self-heal χωρίς ανθρώπινη παρέμβαση.

Ακόμη και το Kubernetes 1.0 περιελάμβανε ένα βασικό σύστημα «in-tree volume plugin» που επέτρεπε στο Kubernetes να προσαρτά/διαμορφώνει αυθαίρετα block/file storage volumes σε pods και να τα αποσυνδέει καθώς τα pod μετακινούνται σε nodes. Αυτό ήταν κρίσιμο για να επιτρέψει την ελαστικότητα προγραμματισμού για stateful workloads. Ακόμη και όταν κάτι πήγε στραβά με έναν compute node, τα δεδομένα σας θα μπορούσαν να διατεθούν αυτόματα σε έναν άλλο node χωρίς ανθρώπινη παρέμβαση."

 


Αρχικά ζητήματα σχετικά με τα δεδομένα και την αποθήκευση με το Kubernetes

"Το Kubernetes storage sub-stack είναι απίστευτα περίπλοκο. Αρχικά αντιμετωπίσαμε πολλά race conditions. Μία από τις μεγαλύτερες προκλήσεις με το storage stack είναι ότι πρέπει να χειριστεί τη χειρότερη περίπτωση αντιστάθμισης μεταξύ αυτόματης ανάκτησης και πιθανής απώλειας δεδομένων και καταστροφής. Κανένα από τα δύο δεν είναι αποδεκτά αποτελέσματα, επομένως το Kubernetes SIG Storage έχει εργαστεί απίστευτα σκληρά για να εντοπίσει και να διασφαλίσει την ομαλή ανάκτηση από αυτές τις ακραίες περιπτώσεις."






Τι έπρεπε να αλλάξει;

"Αρχικά το Kubernetes storage stack προϋπέθετε ότι ένας διαχειριστής αποθήκευσης θα προέβλεπε ένα pool από block/file volumes διαφορετικών μεγεθών για χρησιμοποιούν οι χειριστές εφαρμογών. Αυτό οδήγησε σε αναποτελεσματική χρήση της διαθέσιμης χωρητικότητας.

Το SIG Storage εισήγαγε την έννοια της δυναμικής παροχής στο Kubernetes 1.6. Αυτό άλλαξε το παιχνίδι για τη χρηστικότητα της αποθήκευσης block/file σε κλίμακα και ολοκλήρωσε την αυτοματοποίηση του κύκλου ζωής του storage volume, επειδή παρείχε αποθήκευση κατ' απαίτηση ανάλογα με το workload, εξάλειψε την ανθρώπινη παρέμβαση και οδήγησε σε αποτελεσματική αποθήκευση.

Καθώς τα δομικά στοιχεία μπήκαν στη θέση τους, η ενορχήστρωση υψηλότερου επιπέδου stateful primitives ήρθε στο επίκεντρο. Το Kubernetes προσέφερε StatefulSets ως δομικό στοιχείο για stateful workloads. Αλλά έγινε προφανές ότι πολλές πολύπλοκες stateful εφαρμογές απαιτούσαν περαιτέρω προσεκτική ενορχήστρωση των δεδομένων τους για να επιτρέψουν πράγματα όπως η αναπαραγωγή, το scaling κλπ."

 

Tο persistent storage ωριμάζει, με τη βοήθεια των K8s operators

"Τα K8s Operators προσέφεραν έναν εύκολο τρόπο να ενεργοποιηθούν λειτουργίες όπως το Database sharding για τη διασφάλιση υψηλής διαθεσιμότητας, αποφυγή της ταυτόχρονης μη διαθεσιμότητας όλων των αντιγράφων και ούτω καθεξής.

Το Kubernetes storage stack μαζί με το Kubernetes Operators επιτρέπουν την πραγματικά ελαστική χρήση των διαθέσιμων υπολογιστικών πόρων. Αυτό, κατά τη γνώμη μου, είναι η καρδιά του τι σημαίνει να δημιουργείς στο cloud – έχοντας μια μεγάλη ελαστική δεξαμενή υπολογιστικών πόρων που μπορεί να χρησιμοποιηθεί από όλα τα workload, κατ' απαίτηση, με κλιμάκωση χωρίς ανθρώπινη παρέμβαση για μεγιστοποίηση διαθεσιμότητας και μείωσης του κόστους.

Σε ηλικία 10 ετών, το Kubernetes αρχίζει να είναι σαν το Linux για το distributed computing. Είναι ένα ισχυρό και επεκτάσιμο εργαλείο ανοιχτού κώδικα που έχει υιοθετηθεί ευρέως και αποτελεί βασικό δομικό στοιχείο για το σύγχρονο distributed computing.

Το Kubernetes έχει κάνει πολύ πιο εύκολη την ανάπτυξη φορητών, επεκτάσιμων stateful εφαρμογών που αξιοποιούν το block & file storage. Ωστόσο, η αποθήκευση εξακολουθεί να είναι δύσκολη για πολλούς προγραμματιστές που δεν θέλουν να ανησυχούν για το πώς λειτουργούν οι διαφορετικές βάσεις δεδομένων, για τις διαφορές μεταξύ ασύγχρονης και σύγχρονης αναπαραγωγής, την αντιστάθμιση διαφόρων προφίλ πλεονασμού αποθήκευσης και ούτω καθεξής."

Σύμφωνα με τον Saad Ali "project ανοιχτού κώδικα όπως το Kubernetes είναι δυνατά χάρη σε πολλούς καταπληκτικούς συνεργάτες από όλο τον κόσμο, ενώ χρειάζονται συνεχή συντήρηση και βελτίωση."

 

Πηγή: computerweekly



Στην Cloud Concept στόχο αποτελεί η αδιάλειπτη τεχνική υποστήριξη των αναγκών σας, η προσφορά managed υπηρεσιών υψηλού επιπέδου και η παροχή πρόσβασης σε χρήσιμες προτάσεις για την αποδοτική διαχείριση των δεδομένων σας.



Ακολουθήστε μας σε LinkedIn, FacebookInstagram ή εγγραφείτε στο Newsletter μας, για να μένετε ενημερωμένοι! 

ΣΥΝΔΕΣΗ

Αίτηση επικοινωνίας

ΠΑΝΩ