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

Τι είναι το Kubernetes; Η επόμενη πλατφόρμα εφαρμογής σας

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

Τι είναι η ενορχήστρωση εμπορευματοκιβωτίων;

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

Τι είναι το Kubernetes;

Το Kubernetes είναι ένα έργο ανοιχτού κώδικα που έχει γίνει ένα από τα πιο δημοφιλή εργαλεία ενορχήστρωσης κοντέινερ. Σας επιτρέπει να αναπτύξετε και να διαχειριστείτε εφαρμογές πολλαπλών κοντέινερ σε κλίμακα. Ενώ στην πράξη το Kubernetes χρησιμοποιείται συχνότερα με το Docker, την πιο δημοφιλή πλατφόρμα εμπορευματοκιβωτίων, μπορεί επίσης να λειτουργήσει με οποιοδήποτε σύστημα κοντέινερ που συμμορφώνεται με τα πρότυπα Open Container Initiative (OCI) για μορφές εικόνας κοντέινερ και χρόνους εκτέλεσης. Και επειδή το Kubernetes είναι ανοιχτού κώδικα, με σχετικά λίγους περιορισμούς στο πώς μπορεί να χρησιμοποιηθεί, μπορεί να χρησιμοποιηθεί ελεύθερα από οποιονδήποτε θέλει να τρέξει κοντέινερ, οπουδήποτε και αν θέλει να τα τρέξει - εσωτερικά, στο δημόσιο cloud ή και τα δύο .

Google και Kubernetes

Ο Kubernetes ξεκίνησε τη ζωή του ως έργο στο Google. Είναι διάδοχος του - αν και δεν είναι άμεσος απόγονος - του Google Borg, ενός παλαιότερου εργαλείου διαχείρισης κοντέινερ που χρησιμοποίησε η Google εσωτερικά. Η Google άνοιξε προμηθευτές Kubernetes το 2014, εν μέρει επειδή οι αρχιτεκτονικές κατανεμημένων μικροϋπηρεσιών που διευκολύνει το Kubernetes διευκολύνουν την εκτέλεση εφαρμογών στο cloud. Η Google βλέπει την υιοθέτηση κοντέινερ, μικροσυσκευών και Kubernetes ως δυνητικά οδηγώντας πελάτες στις υπηρεσίες cloud (αν και η Kubernetes σίγουρα συνεργάζεται με την Azure και την AWS). Το Kubernetes διατηρείται επί του παρόντος από το Cloud Native Computing Foundation, το οποίο βρίσκεται υπό την αιγίδα του Linux Foundation.

Kubernetes εναντίον Docker και Kubernetes εναντίον Docker Swarm

Το Kubernetes δεν αντικαθιστά το Docker, αλλά το αυξάνει. Ωστόσο, Kubernetes κάνει αντικαταστήστε μερικές από τις τεχνολογίες υψηλότερου επιπέδου που έχουν αναδυθεί γύρω από το Docker.

Μία τέτοια τεχνολογία είναι το Docker Swarm, ένας ενορχηστρωτής που συνδυάζεται με το Docker. Είναι ακόμα δυνατό να χρησιμοποιήσετε το Docker Swarm αντί για το Kubernetes, αλλά η Docker Inc. επέλεξε να κάνει το Kubernetes μέρος των εκδόσεων Docker Community και Docker Enterprise.

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

Kubernetes εναντίον Mesos

Ένα άλλο έργο που ίσως έχετε ακούσει ως ανταγωνιστής του Kubernetes είναι Μέσος. Το Mesos είναι ένα έργο Apache που προέκυψε αρχικά από προγραμματιστές στο Twitter. θεωρήθηκε στην πραγματικότητα ως απάντηση στο έργο Google Borg.

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

Αρχιτεκτονική Kubernetes: Πώς λειτουργεί το Kubernetes

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

Συμπλέγματα Kubernetes

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

Κόμβοι και λοβό Kubernetes

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

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

Τα Pods δημιουργούνται και καταστρέφονται σε κόμβους όπως απαιτείται για να συμμορφώνονται με την επιθυμητή κατάσταση που καθορίζεται από τον χρήστη στον ορισμό του pod. Το Kubernetes παρέχει μια αφαίρεση που ονομάζεται a ελεγκτής για την αντιμετώπιση της εφοδιαστικής του τρόπου με τον οποίο περιστρέφονται, ξεδιπλώνονται και περιστρέφονται. Οι ελεγκτές έρχονται σε μερικές διαφορετικές γεύσεις ανάλογα με το είδος της εφαρμογής που διαχειρίζεται. Για παράδειγμα, ο ελεγκτής "StatefulSet" που παρουσιάστηκε πρόσφατα χρησιμοποιείται για την αντιμετώπιση εφαρμογών που χρειάζονται μόνιμη κατάσταση. Ένα άλλο είδος ελεγκτή, το ανάπτυξη, χρησιμοποιείται για την κλιμάκωση μιας εφαρμογής προς τα πάνω ή προς τα κάτω, την ενημέρωση μιας εφαρμογής σε μια νέα έκδοση ή την επαναφορά μιας εφαρμογής σε μια γνωστή-καλή έκδοση, εάν υπάρχει πρόβλημα.

Υπηρεσίες Kubernetes

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

Μια υπηρεσία στο Kubernetes περιγράφει τον τρόπο πρόσβασης μιας δεδομένης ομάδας λοβών (ή άλλων αντικειμένων Kubernetes) μέσω του δικτύου. Όπως το θέτει η τεκμηρίωση του Kubernetes, οι ομάδες που αποτελούν το παρασκήνιο μιας εφαρμογής ενδέχεται να αλλάξουν, αλλά το front-end δεν πρέπει να το γνωρίζει ή να το παρακολουθεί. Οι υπηρεσίες το καθιστούν αυτό δυνατό.

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

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

Kubernetes Ingress

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

Το Ingress απαιτεί λίγη διαμόρφωση για να ρυθμιστεί σωστά - ο Matthew Palmer, ο οποίος έγραψε ένα βιβλίο για την ανάπτυξη του Kubernetes, σας καθοδηγεί στη διαδικασία στον ιστότοπό του.

Πίνακας ελέγχου Kubernetes

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

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

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

Πλεονεκτήματα Kubernetes

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

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

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

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

Το Kubernetes διευκολύνει την ανάπτυξη προκαθορισμένων εφαρμογών με γραφήματα Helm

Οι διαχειριστές πακέτων όπως το APT του Debian Linux και το Python's Pip εξοικονομούν στους χρήστες το πρόβλημα της μη αυτόματης εγκατάστασης και διαμόρφωσης μιας εφαρμογής. Αυτό είναι ιδιαίτερα βολικό όταν μια εφαρμογή έχει πολλές εξωτερικές εξαρτήσεις.

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

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

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

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

Το Kubernetes παρέχει αφαιρέσεις που επιτρέπουν στα κοντέινερ και τις εφαρμογές να ασχολούνται με την αποθήκευση με τον ίδιο αποσυνδεδεμένο τρόπο με άλλους πόρους. Πολλά κοινά είδη αποθήκευσης, από τους τόμους του Amazon EBS έως τα παλιά παλιά κοινόχρηστα NFS, είναι προσβάσιμα μέσω προγραμμάτων οδήγησης αποθήκευσης Kubernetes, που ονομάζονται τόμοι. Κανονικά, οι τόμοι συνδέονται με ένα συγκεκριμένο pod, αλλά ένας δευτερεύων τύπος τόμου που ονομάζεται "Persistent Volume" μπορεί να χρησιμοποιηθεί για δεδομένα που πρέπει να ζουν ανεξάρτητα από οποιοδήποτε pod.

Τα κοντέινερ πρέπει συχνά να δουλεύουν με "μυστικά" - διαπιστευτήρια όπως κλειδιά API ή κωδικούς πρόσβασης υπηρεσίας που δεν θέλετε να έχετε κωδικοποιημένο σε κοντέινερ ή να αποθηκεύονται ανοιχτά σε ένταση δίσκου. Ενώ οι λύσεις τρίτων είναι διαθέσιμες για αυτό, όπως τα μυστικά Docker και το HashiCorp Vault, το Kubernetes έχει τον δικό του μηχανισμό για τον φυσικό χειρισμό μυστικών, αν και πρέπει να διαμορφωθεί με προσοχή. Για παράδειγμα, το Etcd πρέπει να έχει ρυθμιστεί ώστε να χρησιμοποιεί SSL / TLS κατά την αποστολή μυστικών μεταξύ κόμβων και όχι σε απλό κείμενο.

Οι εφαρμογές Kubernetes μπορούν να εκτελεστούν σε υβριδικά περιβάλλοντα και πολλαπλά σύννεφα

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

Το Kubernetes παρέχει ένα σύνολο πρωτόγονων, συλλογικά γνωστών ως ομοσπονδία, για τη διατήρηση πολλαπλών συστάδων σε συγχρονισμό μεταξύ τους σε πολλές περιοχές και σύννεφα. Για παράδειγμα, μια συγκεκριμένη ανάπτυξη εφαρμογών μπορεί να διατηρηθεί συνεπής μεταξύ πολλών συμπλεγμάτων και διαφορετικά συμπλέγματα μπορούν να μοιραστούν την ανακάλυψη υπηρεσίας, έτσι ώστε ένας πόρος back-end να μπορεί να έχει πρόσβαση σε οποιοδήποτε σύμπλεγμα. Η Ομοσπονδία μπορεί επίσης να χρησιμοποιηθεί για τη δημιουργία εφαρμογών Kubernetes που είναι πολύ διαθέσιμες ή ανεκτικές σε σφάλματα, ανεξάρτητα από το εάν εκτείνετε πολλά περιβάλλοντα cloud.

Η Ομοσπονδία είναι ακόμα σχετικά νέα για τον Kubernetes. Δεν υποστηρίζονται ακόμη όλοι οι πόροι API σε ομοσπονδιακές παρουσίες και οι αναβαθμίσεις δεν έχουν ακόμη αυτόματη υποδομή δοκιμών. Αλλά αυτές οι ελλείψεις αναμένεται να αντιμετωπιστούν σε μελλοντικές εκδόσεις του Kubernetes.

Πού να πάρετε το Kubernetes