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

Kubernetes εναντίον Docker: Κατανοήστε τα δοχεία και την ενορχήστρωση

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

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

Γιατί είναι σημαντικοί οι Docker και Kubernetes, πώς αλλάζουν την ανάπτυξη λογισμικού και τι ρόλο διαδραματίζει ο καθένας στη διαδικασία; Θα προσπαθήσω να απαντήσω σε αυτές τις ερωτήσεις παρακάτω.

Docker και εμπορευματοκιβώτια

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

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

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

Πότε χρησιμοποιώ το Docker και τα κοντέινερ;

Το Docker και τα εμπορευματοκιβώτια ταιριάζουν καλύτερα όταν ασχολείστε με φόρτο εργασίας που πρέπει να έχει μία ή περισσότερες από τις ακόλουθες ιδιότητες:

  • Ελαστική επεκτασιμότητα. Δεν γνωρίζετε πόσες εμφανίσεις μιας εφαρμογής θα πρέπει να εκτελέσετε για να ικανοποιήσετε τη ζήτηση. Μια εφαρμογή ή υπηρεσία με κοντέινερ μπορεί να κλιμακωθεί για να ικανοποιήσει τη ζήτηση, αναπτύσσοντας λιγότερες ή περισσότερες εμφανίσεις των κοντέινερ της.
  • Απομόνωση. Δεν θέλετε η εφαρμογή να παρεμβαίνει σε άλλες εφαρμογές. Ίσως θα εκτελείτε πολλές εκδόσεις της εφαρμογής δίπλα-δίπλα για να ικανοποιήσετε διαφορετικές αναθεωρήσεις ενός API. Ή ίσως θέλετε να διατηρήσετε το υποκείμενο σύστημα καθαρό (πάντα μια καλή ιδέα).
  • Φορητότητα. Πρέπει να εκτελέσετε αυτήν την εφαρμογή σε διάφορα περιβάλλοντα και απαιτείται κάθε αναπαραγωγή να μπορεί να αναπαραχθεί. Τα κοντέινερ σάς επιτρέπουν να πακετάρετε ολόκληρο το περιβάλλον χρόνου εκτέλεσης της εφαρμογής σας, καθιστώντας την εφαρμογή εύκολη στην ανάπτυξη οπουδήποτε βρίσκετε ένα συμβατό με Docker κεντρικό υπολογιστή - μια επιφάνεια εργασίας προγραμματιστή, μια μηχανή δοκιμής QA, ένα τοπικό σίδερο ή ένα απομακρυσμένο σύννεφο.

Μάθετε περισσότερα για το Docker και τα κοντέινερ

  • Τι είναι το Docker; Ο σπινθήρας για την επανάσταση των εμπορευματοκιβωτίων
  • Γιατί πρέπει να χρησιμοποιήσετε το Docker και τα δοχεία
  • Ξεκινήστε με το Docker
  • Τα κρυμμένα οφέλη του Docker για QA
  • 12 εργαλεία ανοιχτού κώδικα που κάνουν το Docker καλύτερο
  • Περισσότερες ειδήσεις, αναλύσεις, σχόλια και συμβουλές για το Docker

Kubernetes και ενορχήστρωση δοχείων

Τα κοντέινερ έχουν σχεδιαστεί κυρίως για την απομόνωση διαδικασιών ή εφαρμογών μεταξύ τους και του υποκείμενου συστήματος. Η δημιουργία και η ανάπτυξη μεμονωμένων κοντέινερ είναι εύκολη. Αλλά τι γίνεται αν θέλετε να συναρμολογήσετε πολλά κοντέινερ — ας πούμε, μια βάση δεδομένων, ένα web front-end, ένα υπολογιστικό back-end — σε μια μεγάλη εφαρμογή που μπορεί να διαχειριστεί ως μονάδα, χωρίς να χρειάζεται να ανησυχείτε για την ανάπτυξη, σύνδεση, διαχείριση, και κλιμάκωση κάθε ένα από αυτά τα δοχεία ξεχωριστά; Χρειάζεστε έναν τρόποενορχηστρώνω όλα τα μέρη σε ένα λειτουργικό σύνολο.

Αυτή είναι η δουλειά που αναλαμβάνει ο Kubernetes. Εάν τα εμπορευματοκιβώτια είναι επιβάτες σε κρουαζιέρα, ο Kubernetes είναι ο διευθυντής κρουαζιέρας.

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

Το Kubernetes απαιτεί έναν ορισμένο βαθμό εμπειρογνωμοσύνης για να χρησιμοποιηθεί καλά, αν και είναι πολύ περισσότερο από μια λύση με το κλειδί στο χέρι από ό, τι στο παρελθόν. Μερική από την πρόοδο στην ευκολία χρήσης οφείλεται σε εύκολα διαθέσιμες συνταγές για κοινές εφαρμογές (χάρτες Helm). Μερικές οφείλονται σε πληθώρα διανομών Kubernetes που παράγονται από εταιρείες επωνυμίας (Red Hat, Canonical, Docker) που συνεργάζονται μαζί με δημοφιλείς στοίβες εφαρμογών και αναπτυξιακά πλαίσια.

Πότε χρησιμοποιώ το Kubernetes και την ενορχήστρωση κοντέινερ;

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

  • Οι εφαρμογές σας είναι περίπλοκες. Κάθε εφαρμογή που περιλαμβάνει περισσότερα από δύο κοντέινερ ταιριάζει πιθανώς με το λογαριασμό. Τούτου λεχθέντος, οι μέτριες εφαρμογές που εξυπηρετούν μόνο έναν μικρό αριθμό χρηστών ενδέχεται να ενορχηστρώνονται μέσω μιας πιο ελάχιστης λύσης όπως η λειτουργία σμήνος Docker αντί για Kubernetes.
  • Οι εφαρμογές σας έχουν υψηλές απαιτήσεις για κλιμάκωση και ανθεκτικότητα. Το Kubernetes και άλλοι ενορχηστρωτές σάς επιτρέπουν να εξισορροπήσετε τα φορτία και να περιστρέψετε τα δοχεία για να ικανοποιήσετε τη ζήτηση δηλωτικά, περιγράφοντας την επιθυμητή κατάσταση του συστήματος αντί να κωδικοποιεί τις αντιδράσεις στις μεταβαλλόμενες συνθήκες με το χέρι.
  • Θέλετε να αξιοποιήσετε στο έπακρο τις σύγχρονες τεχνικές CI / CD. Τα συστήματα ενορχήστρωσης υποστηρίζουν μοτίβα ανάπτυξης για εφαρμογές που χρησιμοποιούν μπλε / πράσινη ανάπτυξη ή κυλιόμενες αναβαθμίσεις.

Μπορεί να έρθει μια μέρα που ο Docker και ο Kubernetes αποκλείονται από ακόμη πιο φιλικές αφαιρέσεις και υποχωρούν σε πιο κομψούς τρόπους δημιουργίας και διαχείρισης κοντέινερ. Προς το παρόν, όμως, οι Docker και Kubernetes είναι ζωτικής σημασίας για να γνωρίζουν και να κατανοήσουν.

Μάθετε περισσότερα για το Kubernetes και την ενορχήστρωση

  • Τι είναι το Kubernetes; Η επόμενη πλατφόρμα εφαρμογής σας
  • 4 λόγοι για τους οποίους πρέπει να χρησιμοποιήσετε το Kubernetes
  • 10 διανομές Kubernetes που οδηγούν την επανάσταση των εμπορευματοκιβωτίων
  • Διαχείριση Kubernetes: AWS εναντίον Azure εναντίον Google Cloud
  • Γεια σας MicroK8s: Ένα απλούστερο Kubernetes
  • Τι νέο υπάρχει στο Kubernetes
  • Περισσότερες ειδήσεις, σχόλια, συμβουλές και αναλύσεις του Kubernetes