Σχεδιασμός συμπλεγμάτων Kubernetes: πόσα πρέπει να υπάρχουν;

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

Σχεδιασμός συμπλεγμάτων Kubernetes: πόσα πρέπει να υπάρχουν;

TL? DR: το ίδιο σύνολο φόρτων εργασίας μπορεί να εκτελεστεί σε πολλά μεγάλα συμπλέγματα (κάθε σύμπλεγμα θα έχει μεγάλο αριθμό φόρτου εργασίας) ή σε πολλά μικρά (με μικρό αριθμό φόρτου εργασίας σε κάθε σύμπλεγμα).

Ακολουθεί ένας πίνακας που αξιολογεί τα πλεονεκτήματα και τα μειονεκτήματα κάθε προσέγγισης:

Σχεδιασμός συμπλεγμάτων Kubernetes: πόσα πρέπει να υπάρχουν;

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

  • Πόσα συμπλέγματα πρέπει να χρησιμοποιήσω;
  • Πόσο μεγάλα να τα κάνω;
  • Τι πρέπει να περιλαμβάνει κάθε cluster;

Σε αυτό το άρθρο, θα προσπαθήσω να απαντήσω σε όλες αυτές τις ερωτήσεις αναλύοντας τα πλεονεκτήματα και τα μειονεκτήματα κάθε προσέγγισης.

Δήλωση ερώτησης

Ως προγραμματιστής λογισμικού, πιθανότατα αναπτύσσετε και χειρίζεστε πολλές εφαρμογές ταυτόχρονα.

Επιπλέον, πολλές περιπτώσεις αυτών των εφαρμογών είναι πιθανό να εκτελούνται σε διαφορετικά περιβάλλοντα - για παράδειγμα, μπορεί να είναι dev, δοκιμή и κέντρο.

Το αποτέλεσμα είναι μια ολόκληρη μήτρα εφαρμογών και περιβαλλόντων:

Σχεδιασμός συμπλεγμάτων Kubernetes: πόσα πρέπει να υπάρχουν;
Εφαρμογές και Περιβάλλοντα

Το παραπάνω παράδειγμα αντιπροσωπεύει 3 εφαρμογές και 3 περιβάλλοντα, με αποτέλεσμα συνολικά 9 πιθανές επιλογές.

Κάθε παρουσία εφαρμογής είναι μια αυτόνομη μονάδα ανάπτυξης που μπορεί να εργαστεί ανεξάρτητα από άλλες.

Σημειώστε ότι περίπτωση εφαρμογής μπορεί να αποτελείται από πολλά εξαρτήματα, όπως frontend, backend, βάση δεδομένων κ.λπ. Στην περίπτωση μιας εφαρμογής μικροϋπηρεσιών, το παράδειγμα θα περιλαμβάνει όλες τις μικροϋπηρεσίες.

Ως αποτέλεσμα, οι χρήστες του Kubernetes έχουν πολλές ερωτήσεις:

  • Πρέπει όλες οι περιπτώσεις εφαρμογών να τοποθετηθούν σε ένα σύμπλεγμα;
  • Αξίζει να υπάρχει ξεχωριστό σύμπλεγμα για κάθε περίπτωση εφαρμογής;
  • Ή μήπως θα πρέπει να χρησιμοποιηθεί ένας συνδυασμός των παραπάνω προσεγγίσεων;

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

Εδώ είναι μερικοί από τους πιθανούς τρόπους:

  • ένα μεγάλο κοινό σύμπλεγμα.
  • πολλά μικρά εξαιρετικά εξειδικευμένα clusters.
  • ένα σύμπλεγμα ανά εφαρμογή.
  • ένα σύμπλεγμα ανά περιβάλλον.

Όπως φαίνεται παρακάτω, οι δύο πρώτες προσεγγίσεις βρίσκονται στα αντίθετα άκρα της κλίμακας των επιλογών:

Σχεδιασμός συμπλεγμάτων Kubernetes: πόσα πρέπει να υπάρχουν;
Από μερικές μεγάλες συστάδες (αριστερά) έως πολλές μικρές (δεξιά)

Γενικά, ένα σύμπλεγμα θεωρείται "μεγαλύτερο" από ένα άλλο εάν έχει μεγαλύτερο άθροισμα κόμβων και λοβών. Για παράδειγμα, ένα σύμπλεγμα με 10 κόμβους και 100 λοβούς είναι μεγαλύτερο από ένα σύμπλεγμα με 1 κόμβο και 10 λοβούς.

Λοιπόν, ας ξεκινήσουμε!

1. Ένα μεγάλο κοινό σύμπλεγμα

Η πρώτη επιλογή είναι να τοποθετήσετε όλους τους φόρτους εργασίας σε ένα σύμπλεγμα:

Σχεδιασμός συμπλεγμάτων Kubernetes: πόσα πρέπει να υπάρχουν;
Ένα μεγάλο σύμπλεγμα

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

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

Ας δούμε τα πλεονεκτήματα και τα μειονεκτήματα αυτής της προσέγγισης.

+ Αποτελεσματική χρήση των πόρων

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

Για παράδειγμα, αυτό ισχύει για τους κύριους κόμβους. Συνήθως, κάθε σύμπλεγμα Kubernetes έχει 3 κύριους κόμβους, επομένως για ένα μεμονωμένο σύμπλεγμα ο αριθμός τους θα παραμείνει έτσι (για σύγκριση, 10 συμπλέγματα θα χρειαστούν 30 κύριους κόμβους).

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

Σε ένα μόνο σύμπλεγμα, όλες αυτές οι υπηρεσίες μπορούν να χρησιμοποιηθούν ταυτόχρονα για όλους τους φόρτους εργασίας (δεν χρειάζεται να δημιουργηθούν αντίγραφά τους, όπως συμβαίνει με τα πολλαπλά συμπλέγματα).

+ Φτηνό

Ως συνέπεια των παραπάνω, λιγότερα cluster είναι συνήθως φθηνότερα επειδή δεν υπάρχουν γενικά έξοδα.

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

Ορισμένες υπηρεσίες Kubernetes διαχειρίζονταν, όπως π.χ Google Kubernetes Engine (GKE) ή Υπηρεσία Azure Kubernetes (AKS), παρέχετε το επίπεδο ελέγχου δωρεάν. Σε αυτή την περίπτωση, το ζήτημα του κόστους είναι λιγότερο οξύ.

Υπάρχουν επίσης διαχειριζόμενες υπηρεσίες που χρεώνουν μια σταθερή χρέωση για τη λειτουργία κάθε συμπλέγματος Kubernetes (για παράδειγμα, Amazon Elastic Kubernetes Service, EKS).

+ Αποτελεσματική διαχείριση

Η διαχείριση ενός συμπλέγματος είναι ευκολότερη από τη διαχείριση πολλών.

Η διαχείριση μπορεί να περιλαμβάνει τις ακόλουθες εργασίες:

  • Ενημέρωση έκδοσης Kubernetes.
  • εγκατάσταση αγωγού CI/CD.
  • εγκατάσταση του πρόσθετου CNI.
  • ρύθμιση ενός συστήματος ελέγχου ταυτότητας χρήστη·
  • εγκατάσταση ελεγκτή πρόσβασης·

και πολλοί άλλοι…

Στην περίπτωση ενός cluster, θα πρέπει να τα κάνετε όλα αυτά μόνο μία φορά.

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

Και τώρα λίγα λόγια για τα μειονεκτήματα.

− Ενιαίο σημείο αστοχίας

Σε περίπτωση άρνησης το μόνο το σύμπλεγμα θα σταματήσει να λειτουργεί αμέσως όλα φόρτους εργασίας!

Υπάρχουν πολλοί τρόποι με τους οποίους τα πράγματα μπορούν να πάνε στραβά:

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

Ένα τέτοιο περιστατικό μπορεί να προκαλέσει σοβαρή ζημιά σε όλους τους φόρτους εργασίας που φιλοξενούνται σε ένα κοινό σύμπλεγμα.

− Χωρίς άκαμπτη μόνωση

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

Κατά μία έννοια, δύο κοντέινερ με δύο διαφορετικές εφαρμογές που εκτελούνται στον ίδιο κόμβο είναι σαν δύο διεργασίες που εκτελούνται στον ίδιο υπολογιστή που εκτελούν τον ίδιο πυρήνα λειτουργικού συστήματος.

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

Αυτό μπορεί να είναι ένα ζήτημα ασφαλείας: αυτή η ρύθμιση επιτρέπει θεωρητικά σε άσχετες εφαρμογές να επικοινωνούν μεταξύ τους (είτε εκούσια είτε κατά λάθος).

Επιπλέον, όλοι οι φόρτοι εργασίας σε ένα σύμπλεγμα Kubernetes μοιράζονται ορισμένες υπηρεσίες σε όλο το σύμπλεγμα, όπως π.χ. DNS - Αυτό επιτρέπει στις εφαρμογές να βρίσκουν τις Υπηρεσίες άλλων εφαρμογών στο σύμπλεγμα.

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

Το Kubernetes παρέχει διάφορα εργαλεία για την πρόληψη ζητημάτων ασφαλείας όπως π.χ PodSecurityPolicies и Πολιτικές Δικτύου. Ωστόσο, η σωστή ρύθμισή τους απαιτεί κάποια εμπειρία· επιπλέον, δεν μπορούν να κλείσουν απολύτως όλες τις τρύπες ασφαλείας.

Είναι σημαντικό να θυμάστε πάντα ότι το Kubernetes είχε αρχικά σχεδιαστεί μοιρασιά, όχι για απομόνωση και ασφάλεια.

− Έλλειψη αυστηρής πολυμίσθωσης

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

Για παράδειγμα, μια εφαρμογή μπορεί να μονοπωλήσει έναν κοινόχρηστο πόρο (όπως CPU ή μνήμη) και να αρνηθεί την πρόσβαση σε αυτόν από άλλες εφαρμογές που εκτελούνται στον ίδιο κόμβο.

Το Kubernetes παρέχει διάφορους μηχανισμούς για τον έλεγχο αυτής της συμπεριφοράς, όπως π.χ αιτήματα και όρια πόρων (δείτε επίσης το άρθρο " Όρια CPU και επιθετικό throttling στο Kubernetes " - περίπου. μετάφρ.), ResourceQuotas и Όρια Εύρος. Ωστόσο, όπως και στην περίπτωση της ασφάλειας, η διαμόρφωσή τους είναι αρκετά μη τετριμμένη και δεν είναι σε θέση να αποτρέψουν απολύτως όλες τις απρόβλεπτες παρενέργειες.

− Μεγάλος αριθμός χρηστών

Στην περίπτωση ενός μεμονωμένου συμπλέγματος, πρέπει να ανοίξετε την πρόσβαση σε αυτό σε πολλά άτομα. Και όσο μεγαλύτερος είναι ο αριθμός τους, τόσο μεγαλύτερος είναι ο κίνδυνος να «σπάσουν» κάτι.

Μέσα στο σύμπλεγμα μπορείτε να ελέγξετε ποιος μπορεί να κάνει τι χρησιμοποιώντας Έλεγχος πρόσβασης βάσει ρόλου (RBAC) (δείτε άρθρο" Χρήστες και εξουσιοδότηση RBAC στο Kubernetes " - περίπου. μετάφρ.). Ωστόσο, δεν θα εμποδίσει τους χρήστες να «σπάσουν» κάτι εντός των ορίων της περιοχής ευθύνης τους.

− Οι συστάδες δεν μπορούν να αναπτύσσονται επ' αόριστον

Το σύμπλεγμα που χρησιμοποιείται για όλους τους φόρτους εργασίας πιθανότατα θα είναι αρκετά μεγάλο (όσον αφορά τον αριθμό των κόμβων και των ομάδων).

Αλλά εδώ προκύπτει ένα άλλο πρόβλημα: τα συμπλέγματα στο Kubernetes δεν μπορούν να αναπτύσσονται επ' αόριστον.

Υπάρχει ένα θεωρητικό όριο στο μέγεθος των συστάδων. Στο Kubernetes είναι περίπου 5000 κόμβοι, 150 χιλιάδες λοβοί και 300 χιλιάδες κοντέινερ.

Ωστόσο, στην πραγματική ζωή, τα προβλήματα μπορούν να ξεκινήσουν πολύ νωρίτερα - για παράδειγμα, μόνο με 500 κόμβοι.

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

Αυτό το ζήτημα διερευνάται σε ένα σχετικό άρθρο στο αρχικό ιστολόγιο που ονομάζεται "Αρχιτεκτονική συμπλεγμάτων Kubernetes — επιλογή μεγέθους κόμβου εργαζόμενου».

Ας εξετάσουμε όμως την αντίθετη προσέγγιση: πολλά μικρά συμπλέγματα.

2. Πολλές μικρές, εξειδικευμένες συστάδες

Με αυτήν την προσέγγιση, χρησιμοποιείτε ένα ξεχωριστό σύμπλεγμα για κάθε στοιχείο που αναπτύσσετε:

Σχεδιασμός συμπλεγμάτων Kubernetes: πόσα πρέπει να υπάρχουν;
Πολλές μικρές συστάδες

Για τους σκοπούς αυτού του άρθρου, υπό αναπτυσσόμενο στοιχείο αναφέρεται σε μια παρουσία μιας εφαρμογής - για παράδειγμα, μια έκδοση dev μιας ξεχωριστής εφαρμογής.

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

Ας δούμε τα πλεονεκτήματα και τα μειονεκτήματα αυτής της προσέγγισης.

+ Περιορισμένη "ακτίνα έκρηξης"

Όταν ένα σύμπλεγμα αποτυγχάνει, οι αρνητικές συνέπειες περιορίζονται μόνο σε εκείνους τους φόρτους εργασίας που αναπτύχθηκαν σε αυτό το σύμπλεγμα. Όλοι οι άλλοι φόρτοι εργασίας παραμένουν ανέγγιχτοι.

+ Μόνωση

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

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

+ Μικρός αριθμός χρηστών

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

Όσο λιγότερα άτομα έχουν πρόσβαση στο σύμπλεγμα, τόσο μικρότερος είναι ο κίνδυνος κάτι να «σπάσει».

Ας δούμε τα μειονεκτήματα.

− Αναποτελεσματική χρήση των πόρων

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

Στην περίπτωση μεγάλου αριθμού μικρών συστάδων, μεγαλύτερο μερίδιο πόρων πρέπει να διατεθεί στη διαχείριση.

− Ακριβό

Η αναποτελεσματική χρήση των πόρων συνεπάγεται αυτόματα υψηλό κόστος.

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

− Δυσκολίες στη διοίκηση

Η διαχείριση πολλών συμπλεγμάτων Kubernetes είναι πολύ πιο δύσκολη από τη διαχείριση μόνο ενός.

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

Πιθανότατα θα χρειαστεί να χρησιμοποιήσετε αυτοματισμό για να κάνετε όλες αυτές τις εργασίες πιο αποτελεσματικές.

Ας δούμε τώρα λιγότερο ακραία σενάρια.

3. Ένα cluster ανά εφαρμογή

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

Σχεδιασμός συμπλεγμάτων Kubernetes: πόσα πρέπει να υπάρχουν;
Συστάδα ανά εφαρμογή

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

Ας δούμε τα πλεονεκτήματα και τα μειονεκτήματα αυτής της προσέγγισης.

+ Το σύμπλεγμα μπορεί να προσαρμοστεί στην εφαρμογή

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

Τέτοιες ανάγκες μπορεί να περιλαμβάνουν εργαζόμενους GPU, ορισμένες προσθήκες CNI, ένα πλέγμα υπηρεσιών ή κάποια άλλη υπηρεσία.

Κάθε σύμπλεγμα μπορεί να προσαρμοστεί στην εφαρμογή που εκτελείται σε αυτό, ώστε να περιέχει μόνο ό,τι χρειάζεται.

− Διαφορετικά περιβάλλοντα σε ένα σύμπλεγμα

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

Για παράδειγμα, η έκδοση prod της εφαρμογής εκτελείται στο ίδιο σύμπλεγμα με την έκδοση dev. Αυτό σημαίνει επίσης ότι οι προγραμματιστές λειτουργούν στο ίδιο σύμπλεγμα στο οποίο λειτουργεί η έκδοση παραγωγής της εφαρμογής.

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

Και τέλος, το τελευταίο σενάριο στη λίστα μας.

4. Ένα cluster ανά περιβάλλον

Αυτό το σενάριο περιλαμβάνει την κατανομή ενός ξεχωριστού συμπλέγματος για κάθε περιβάλλον:

Σχεδιασμός συμπλεγμάτων Kubernetes: πόσα πρέπει να υπάρχουν;
Ένα σύμπλεγμα ανά περιβάλλον

Για παράδειγμα, μπορεί να έχετε συμπλέγματα dev, δοκιμή и κέντρο, στο οποίο θα εκτελείτε όλες τις παρουσίες της εφαρμογής που είναι αφιερωμένες σε ένα συγκεκριμένο περιβάλλον.

Εδώ είναι τα πλεονεκτήματα και τα μειονεκτήματα αυτής της προσέγγισης.

+ Απομόνωση του περιβάλλοντος παραγωγής

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

Οι εκδόσεις παραγωγής της εφαρμογής είναι πλέον ανεξάρτητες από το τι συμβαίνει σε άλλα cluster και περιβάλλοντα.

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

+ Το σύμπλεγμα μπορεί να προσαρμοστεί στο περιβάλλον

Κάθε σύμπλεγμα μπορεί να προσαρμοστεί στο περιβάλλον του. Για παράδειγμα, μπορείτε:

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

Αυτό σας επιτρέπει να αυξήσετε την αποτελεσματικότητα τόσο της ανάπτυξης όσο και της λειτουργίας εφαρμογών.

+ Περιορισμός πρόσβασης στο σύμπλεγμα παραγωγής

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

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

Και τώρα λίγα λόγια για τα μειονεκτήματα.

− Καμία απομόνωση μεταξύ των εφαρμογών

Το κύριο μειονέκτημα της προσέγγισης είναι η έλλειψη απομόνωσης υλικού και πόρων μεταξύ των εφαρμογών.

Μη σχετιζόμενες εφαρμογές μοιράζονται πόρους συμπλέγματος: τον πυρήνα του συστήματος, τον επεξεργαστή, τη μνήμη και ορισμένες άλλες υπηρεσίες.

Όπως αναφέρθηκε, αυτό μπορεί να είναι δυνητικά επικίνδυνο.

− Αδυναμία εντοπισμού εξαρτήσεων εφαρμογών

Εάν μια εφαρμογή έχει ειδικές απαιτήσεις, τότε αυτές πρέπει να ικανοποιούνται σε όλα τα cluster.

Για παράδειγμα, εάν μια εφαρμογή απαιτεί GPU, τότε κάθε σύμπλεγμα πρέπει να περιέχει τουλάχιστον έναν εργαζόμενο με GPU (ακόμα κι αν χρησιμοποιείται μόνο από αυτήν την εφαρμογή).

Ως αποτέλεσμα, κινδυνεύουμε υψηλότερο κόστος και αναποτελεσματική χρήση των πόρων.

Συμπέρασμα

Εάν έχετε ένα συγκεκριμένο σύνολο εφαρμογών, μπορούν να τοποθετηθούν σε πολλά μεγάλα συμπλέγματα ή πολλά μικρά.

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

  • ένα μεγάλο γενικό σύμπλεγμα.
  • πολλά μικρά εξαιρετικά εξειδικευμένα clusters.
  • ένα σύμπλεγμα ανά εφαρμογή.
  • ένα σύμπλεγμα ανά περιβάλλον.

Ποια προσέγγιση λοιπόν πρέπει να ακολουθήσετε;

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

Ωστόσο, η επιλογή δεν περιορίζεται στα παραπάνω παραδείγματα - μπορείτε να χρησιμοποιήσετε οποιονδήποτε συνδυασμό τους!

Για παράδειγμα, μπορείτε να οργανώσετε μερικά συμπλέγματα για κάθε ομάδα: ένα σύμπλεγμα ανάπτυξης (στο οποίο θα υπάρχουν περιβάλλοντα dev и δοκιμή) και συστάδα για παραγωγή (όπου θα βρίσκεται το περιβάλλον παραγωγής).

Με βάση τις πληροφορίες σε αυτό το άρθρο, μπορείτε να βελτιστοποιήσετε ανάλογα τα πλεονεκτήματα και τα μειονεκτήματα για ένα συγκεκριμένο σενάριο. Καλή τύχη!

PS

Διαβάστε επίσης στο blog μας:

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο