Προγραμματισμός

4 λόγοι για τους οποίους πρέπει να χρησιμοποιήσετε το Kubernetes

Ο Sirish Raghuram είναι συνιδρυτής και διευθύνων σύμβουλος του Platform9 Systems.

Όπως μπορούν να επιβεβαιώσουν οι περισσότεροι σύγχρονοι προγραμματιστές λογισμικού, τα κοντέινερ μας έδωσαν δραματικά μεγαλύτερη ευελιξία για την εκτέλεση εφαρμογών εγγενών cloud σε φυσική και εικονική υποδομή. Τα κοντέινερ πακετάρουν τις υπηρεσίες που περιλαμβάνουν μια εφαρμογή και τις καθιστούν φορητές σε διαφορετικά υπολογιστικά περιβάλλοντα, τόσο για χρήση dev / test όσο και για παραγωγή. Με κοντέινερ, είναι εύκολο να βελτιώσετε γρήγορα τις παρουσίες εφαρμογών για να ταιριάξετε τις αιχμές της ζήτησης. Και επειδή τα κοντέινερ βασίζονται σε πόρους του κεντρικού λειτουργικού συστήματος, έχουν πολύ μικρότερο βάρος από τις εικονικές μηχανές. Αυτό σημαίνει ότι τα κοντέινερ κάνουν εξαιρετικά αποδοτική χρήση της υποκείμενης υποδομής διακομιστή.

Μέχρι εδώ καλά. Ωστόσο, παρόλο που τα API χρόνου εκτέλεσης κοντέινερ είναι κατάλληλα για τη διαχείριση μεμονωμένων κοντέινερ, είναι δυστυχώς ανεπαρκή όταν πρόκειται για διαχείριση εφαρμογών που μπορεί να περιλαμβάνουν εκατοντάδες κοντέινερ που έχουν διασκορπιστεί σε πολλούς κεντρικούς υπολογιστές. Τα κοντέινερ πρέπει να διαχειρίζονται και να συνδέονται με τον έξω κόσμο για εργασίες όπως ο προγραμματισμός, η εξισορρόπηση φορτίου και η διανομή, και εδώ είναι που ένα εργαλείο ενορχήστρωσης εμπορευματοκιβωτίων όπως το Kubernetes μπαίνει στο δικό του.

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

Το Kubernetes κατασκευάστηκε από την Google με βάση τη δική της εμπειρία στη διαχείριση εμπορευματοκιβωτίων στην παραγωγή και σίγουρα οφείλει μεγάλο μέρος της επιτυχίας της στη συμμετοχή της Google. Η Google διαθέτει μερικούς από τους πιο ταλαντούχους προγραμματιστές λογισμικού στον πλανήτη και διαχειρίζεται μερικές από τις μεγαλύτερες υπηρεσίες λογισμικού σε κλίμακα. Αυτός ο συνδυασμός εξασφάλισε ότι το Kubernetes θα γίνει μια πλατφόρμα σταθερή που μπορεί να καλύψει τις ανάγκες κλιμάκωσης σχεδόν οποιουδήποτε οργανισμού. Αυτό το άρθρο εξηγεί γιατί το Kubernetes είναι σημαντικό και γιατί σηματοδοτεί ένα σημαντικό βήμα προόδου για τις ομάδες devops.

Σχετικό βίντεο: Τι είναι το Kubernetes;

Σε αυτό το βίντεο 90 δευτερολέπτων, μάθετε για το Kubernetes, το σύστημα ανοιχτού κώδικα για την αυτοματοποίηση εφαρμογών σε κοντέινερ, από έναν από τους εφευρέτες της τεχνολογίας, τον Joe Beda, ιδρυτή και CTO στο Heptio.

Ένα πλαίσιο υποδομής για σήμερα

Αυτές τις μέρες, οι προγραμματιστές καλούνται να γράψουν εφαρμογές που εκτελούνται σε πολλά λειτουργικά περιβάλλοντα, συμπεριλαμβανομένων αποκλειστικών διακομιστών εσωτερικού χώρου, εικονικών ιδιωτικών σύννεφων και δημόσιων σύννεφων όπως AWS και Azure. Παραδοσιακά, οι εφαρμογές και τα εργαλεία που τις υποστηρίζουν συνδέονται στενά με την υποκείμενη υποδομή, επομένως ήταν δαπανηρό να χρησιμοποιηθούν άλλα μοντέλα ανάπτυξης παρά τα πιθανά πλεονεκτήματά τους. Αυτό σήμαινε ότι οι εφαρμογές εξαρτήθηκαν από ένα συγκεκριμένο περιβάλλον από πολλές απόψεις, συμπεριλαμβανομένων ζητημάτων απόδοσης που σχετίζονται με μια συγκεκριμένη αρχιτεκτονική δικτύου. την τήρηση συγκεκριμένων κατασκευών cloud παρόχου, όπως ιδιόκτητες τεχνικές ενορχήστρωσης. και εξαρτήσεις από ένα συγκεκριμένο σύστημα αποθήκευσης back-end.

Η PaaS προσπαθεί να αντιμετωπίσει αυτά τα ζητήματα, αλλά συχνά στο κόστος της επιβολής αυστηρών απαιτήσεων σε τομείς όπως οι γλώσσες προγραμματισμού και τα πλαίσια εφαρμογών. Έτσι, το PaaS είναι εκτός ορίων για πολλές ομάδες ανάπτυξης.

Το Kubernetes εξαλείφει το κλείδωμα υποδομής παρέχοντας βασικές δυνατότητες για εμπορευματοκιβώτια χωρίς να επιβάλλει περιορισμούς. Αυτό το επιτυγχάνει μέσω ενός συνδυασμού δυνατοτήτων εντός της πλατφόρμας Kubernetes, συμπεριλαμβανομένων των Pods και των Υπηρεσιών.

Καλύτερη διαχείριση μέσω modularity

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

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

Η έννοια μιας υπηρεσίας στο Kubernetes χρησιμοποιείται για την ομαδοποίηση μιας συλλογής Pods που εκτελούν μια παρόμοια λειτουργία. Οι υπηρεσίες μπορούν εύκολα να διαμορφωθούν για ανιχνευσιμότητα, παρατηρησιμότητα, οριζόντια κλιμάκωση και εξισορρόπηση φορτίου.

Ανάπτυξη και ενημέρωση λογισμικού σε κλίμακα

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

Το Deployment Controller απλοποιεί μια σειρά πολύπλοκων εργασιών διαχείρισης. Για παράδειγμα:

  • Επεκτασιμότητα Το λογισμικό μπορεί να αναπτυχθεί για πρώτη φορά με τρόπο κλιμάκωσης σε Pods και οι αναπτύξεις μπορούν να κλιμακωθούν μέσα ή έξω ανά πάσα στιγμή.
  • Ορατότητα. Προσδιορίστε ολοκληρωμένες, εν εξελίξει και αποτυχημένες αναπτύξεις με δυνατότητες ερωτήματος κατάστασης.
  • Εξοικονόμηση χρόνου. Παύση μιας ανάπτυξης ανά πάσα στιγμή και συνέχιση της αργότερα.
  • Έλεγχος έκδοσης. Ενημερώστε τα αναπτυγμένα Pods χρησιμοποιώντας νεότερες εκδόσεις εικόνων εφαρμογής και επιστρέψτε σε μια προηγούμενη ανάπτυξη εάν η τρέχουσα έκδοση δεν είναι σταθερή.

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

  • Οριζόντια αυτόματη κλιμάκωση. Οι αυτόματες κλίμακες Kubernetes μεγεθύνουν αυτόματα τον αριθμό των Pods μιας ανάπτυξης με βάση τη χρήση συγκεκριμένων πόρων (εντός καθορισμένων ορίων).
  • Κυλιόμενες ενημερώσεις. Οι ενημερώσεις σε μια ανάπτυξη Kubernetes ενορχηστρώνονται σε «κυλιόμενο τρόπο», στα Pods της ανάπτυξης. Αυτές οι κυλιόμενες ενημερώσεις ενορχηστρώνονται ενώ λειτουργούν με προαιρετικά προκαθορισμένα όρια στον αριθμό των Pods που μπορεί να μην είναι διαθέσιμα και τον αριθμό των ανταλλακτικών Pods που ενδέχεται να υπάρχουν προσωρινά.
  • Εγκαταστάσεις καναρινιών. Ένα χρήσιμο μοτίβο κατά την ανάπτυξη μιας νέας έκδοσης μιας ανάπτυξης είναι να δοκιμάσετε πρώτα τη νέα ανάπτυξη στην παραγωγή, παράλληλα με την προηγούμενη έκδοση, και να αυξήσετε τη νέα ανάπτυξη ενώ ταυτόχρονα να μειώσετε την προηγούμενη ανάπτυξη.

Σε αντίθεση με τις παραδοσιακές, all-inclusive προσφορές PaaS, το Kubernetes παρέχει ευρύ πλάτος για τους τύπους εφαρμογών που υποστηρίζονται. Δεν υπαγορεύει πλαίσια εφαρμογών (όπως Wildfly), περιορίζει τους υποστηριζόμενους χρόνους εκτέλεσης γλώσσας (Java, Python, Ruby), εξυπηρετεί μόνο εφαρμογές 12 παραγόντων ή διακρίνει τις "εφαρμογές" από τις "υπηρεσίες". Το Kubernetes υποστηρίζει μια μεγάλη ποικιλία φόρτων εργασίας, συμπεριλαμβανομένων των απάτριδων, των κρατικών και των φόρτων εργασίας επεξεργασίας δεδομένων. Εάν μια εφαρμογή μπορεί να εκτελεστεί σε κοντέινερ, θα πρέπει να λειτουργεί καλά στο Kubernetes.

Θέτοντας τα θεμέλια για εφαρμογές εγγενείς στο cloud

Δεν προκαλεί έκπληξη δεδομένου του ενδιαφέροντος για εμπορευματοκιβώτια, άλλα εργαλεία διαχείρισης και ενορχήστρωσης έχουν προκύψει. Στις δημοφιλείς εναλλακτικές λύσεις περιλαμβάνονται τα Apache Mesos με Marathon, Docker Swarm, AWS EC2 Container Service (ECS) και HashiCorp's Nomad.

Κάθε ένα έχει τα πλεονεκτήματά του. Το Docker Swarm συνδυάζεται σφιχτά με το χρόνο εκτέλεσης του Docker, έτσι ώστε οι χρήστες να μπορούν να μεταβαίνουν εύκολα από το Docker στο Swarm. Τα Mesos with Marathon δεν περιορίζονται σε κοντέινερ, αλλά μπορούν να αναπτύξουν οποιοδήποτε είδος εφαρμογής. Η πρόσβαση AWS ECS είναι ευκολότερη από τους τρέχοντες χρήστες AWS. Ωστόσο, οι συστάδες Kubernetes μπορούν να εκτελεστούν σε EC2 και να ενσωματωθούν σε υπηρεσίες όπως το Amazon Elastic Block Storage, Elastic Load Balancing, Auto Scaling Groups και ούτω καθεξής.

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

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

Το New Tech Forum παρέχει έναν χώρο για να εξερευνήσετε και να συζητήσετε την αναδυόμενη τεχνολογία σε πρωτοφανές βάθος και εύρος. Η επιλογή είναι υποκειμενική, με βάση την επιλογή των τεχνολογιών που πιστεύουμε ότι είναι σημαντικές και έχουν μεγάλο ενδιαφέρον για τους αναγνώστες. δεν αποδέχεται ασφάλεια μάρκετινγκ για δημοσίευση και διατηρεί το δικαίωμα να επεξεργαστεί όλο το περιεχόμενο. Στείλτε όλες τις ερωτήσεις στο [email protected]