Βέλτιστες πρακτικές Kubernetes. Οργάνωση του Kubernetes με χώρο ονομάτων

Βέλτιστες πρακτικές Kubernetes. Δημιουργία μικρών δοχείων

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

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

Βέλτιστες πρακτικές Kubernetes. Οργάνωση του Kubernetes με χώρο ονομάτων

Στις περισσότερες διανομές Kubernetes, το σύμπλεγμα βγαίνει από το πλαίσιο με έναν χώρο ονομάτων που ονομάζεται "προεπιλογή". Υπάρχουν στην πραγματικότητα τρεις χώροι ονομάτων με τους οποίους ασχολείται το Kubernetes: default, kube-system και kube-public. Επί του παρόντος, το Kube-public δεν χρησιμοποιείται πολύ συχνά.

Βέλτιστες πρακτικές Kubernetes. Οργάνωση του Kubernetes με χώρο ονομάτων

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

Επομένως, θα πρέπει να δημιουργήσετε πολλούς χώρους ονομάτων και να τους χρησιμοποιήσετε για να τμηματοποιήσετε τις υπηρεσίες σας σε διαχειρίσιμες μονάδες. Ένας χώρος ονομάτων μπορεί να δημιουργηθεί με μία μόνο εντολή. Εάν θέλετε να δημιουργήσετε ένα test με όνομα χώρου ονομάτων, χρησιμοποιήστε την εντολή $ kubectl δημιουργία δοκιμής χώρου ονομάτων ή απλώς δημιουργήστε ένα αρχείο YAML και χρησιμοποιήστε το όπως οποιονδήποτε άλλο πόρο του Kubernetes.

Βέλτιστες πρακτικές Kubernetes. Οργάνωση του Kubernetes με χώρο ονομάτων

Μπορείτε να δείτε όλους τους χώρους ονομάτων χρησιμοποιώντας την εντολή $ kubectl get namespace.

Βέλτιστες πρακτικές Kubernetes. Οργάνωση του Kubernetes με χώρο ονομάτων

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

Βέλτιστες πρακτικές Kubernetes. Οργάνωση του Kubernetes με χώρο ονομάτων

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

Βέλτιστες πρακτικές Kubernetes. Οργάνωση του Kubernetes με χώρο ονομάτων

Ο δεύτερος τρόπος είναι να καθορίσετε τον χώρο ονομάτων στη δήλωση YAML.

Βέλτιστες πρακτικές Kubernetes. Οργάνωση του Kubernetes με χώρο ονομάτων

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

Βέλτιστες πρακτικές Kubernetes. Οργάνωση του Kubernetes με χώρο ονομάτων

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

Βέλτιστες πρακτικές Kubernetes. Οργάνωση του Kubernetes με χώρο ονομάτων

Εκτός πλαισίου, ο ενεργός χώρος ονομάτων σας ονομάζεται προεπιλογή. Εάν δεν καθορίσετε χώρο ονομάτων στον πόρο YAML, τότε όλες οι εντολές Kubernetes θα χρησιμοποιούν αυτόν τον ενεργό προεπιλεγμένο χώρο ονομάτων. Δυστυχώς, η προσπάθεια διαχείρισης του ενεργού χώρου ονομάτων χρησιμοποιώντας το kubectl μπορεί να αποτύχει. Ωστόσο, υπάρχει ένα πολύ καλό εργαλείο που ονομάζεται Kubens που κάνει αυτή τη διαδικασία πολύ πιο εύκολη. Όταν εκτελείτε την εντολή kubens, βλέπετε όλους τους χώρους ονομάτων με τον ενεργό χώρο ονομάτων τονισμένο.

Βέλτιστες πρακτικές Kubernetes. Οργάνωση του Kubernetes με χώρο ονομάτων

Για να αλλάξετε τον ενεργό χώρο ονομάτων στον δοκιμαστικό χώρο ονομάτων, απλώς εκτελείτε την εντολή δοκιμής $kubens. Εάν στη συνέχεια εκτελέσετε ξανά την εντολή $kubens, θα δείτε ότι έχει πλέον εκχωρηθεί ένας νέος ενεργός χώρος ονομάτων - δοκιμή.

Βέλτιστες πρακτικές Kubernetes. Οργάνωση του Kubernetes με χώρο ονομάτων

Αυτό σημαίνει ότι δεν χρειάζεστε τη σημαία χώρου ονομάτων για να δείτε το pod στον δοκιμαστικό χώρο ονομάτων.

Βέλτιστες πρακτικές Kubernetes. Οργάνωση του Kubernetes με χώρο ονομάτων

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

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

Βέλτιστες πρακτικές Kubernetes. Οργάνωση του Kubernetes με χώρο ονομάτων

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

Βέλτιστες πρακτικές Kubernetes. Οργάνωση του Kubernetes με χώρο ονομάτων

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

Βέλτιστες πρακτικές Kubernetes. Οργάνωση του Kubernetes με χώρο ονομάτων

Ωστόσο, εάν χρειάζεται να αποκτήσετε πρόσβαση σε μια υπηρεσία σε διαφορετικό χώρο ονομάτων, απλώς χρησιμοποιήστε το όνομα της υπηρεσίας συν το όνομα του χώρου ονομάτων:

Βέλτιστες πρακτικές Kubernetes. Οργάνωση του Kubernetes με χώρο ονομάτων

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

Βέλτιστες πρακτικές Kubernetes. Οργάνωση του Kubernetes με χώρο ονομάτων

Εάν θέλετε να συνδεθείτε στη βάση δεδομένων υπηρεσίας στον χώρο ονομάτων του προϊόντος, χρησιμοποιείτε το database.prod.

Βέλτιστες πρακτικές Kubernetes. Οργάνωση του Kubernetes με χώρο ονομάτων

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

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

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

Φανταστείτε ότι είστε μέρος μιας μικρής ομάδας που εργάζεται για την ανάπτυξη 5-10 μικροϋπηρεσιών και μπορείτε εύκολα να συγκεντρώσετε όλους τους προγραμματιστές σε ένα δωμάτιο. Σε αυτήν την περίπτωση, είναι λογικό να εκτελούνται όλες οι υπηρεσίες παραγωγής στον προεπιλεγμένο χώρο ονομάτων. Φυσικά, για μεγαλύτερη ευελιξία, μπορείτε να χρησιμοποιήσετε 2 χώρους ονομάτων - ξεχωριστά για prod και dev. Και πιθανότατα, δοκιμάζετε την ανάπτυξή σας στον τοπικό σας υπολογιστή χρησιμοποιώντας κάτι σαν το Minikube.

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

Βέλτιστες πρακτικές Kubernetes. Οργάνωση του Kubernetes με χώρο ονομάτων

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

Σε μεγάλες εταιρείες, οι προγραμματιστές γενικά δεν γνωρίζουν ποιος ακριβώς εργάζεται σε τι. Οι ομάδες επικοινωνούν χρησιμοποιώντας συμβόλαια υπηρεσιών ή χρησιμοποιούν τεχνολογία πλέγματος υπηρεσιών, η οποία προσθέτει ένα επίπεδο αφαίρεσης στο δίκτυο, όπως το εργαλείο διαμόρφωσης Istio. Η προσπάθεια εκτέλεσης μιας ολόκληρης στοίβας τοπικά απλά δεν είναι δυνατή. Συνιστώ ανεπιφύλακτα τη χρήση μιας πλατφόρμας συνεχούς παράδοσης (CD) όπως το Spinnaker στο Kubernetes. Έτσι, έρχεται ένα σημείο όπου κάθε εντολή χρειάζεται οπωσδήποτε τον δικό της χώρο ονομάτων. Κάθε ομάδα μπορεί ακόμη και να επιλέξει πολλούς χώρους ονομάτων για το περιβάλλον dev και το περιβάλλον παραγωγής.

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

Βέλτιστες πρακτικές Kubernetes. Οργάνωση του Kubernetes με χώρο ονομάτων

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

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

Βέλτιστες πρακτικές Kubernetes. Επικύρωση του Kubernetes Liveness με τεστ ετοιμότητας και ζωντάνιας

Μερικές διαφημίσεις 🙂

Σας ευχαριστούμε που μείνατε μαζί μας. Σας αρέσουν τα άρθρα μας; Θέλετε να δείτε πιο ενδιαφέρον περιεχόμενο; Υποστηρίξτε μας κάνοντας μια παραγγελία ή προτείνοντας σε φίλους, cloud VPS για προγραμματιστές από 4.99 $, ένα μοναδικό ανάλογο διακομιστών εισαγωγικού επιπέδου, το οποίο εφευρέθηκε από εμάς για εσάς: Όλη η αλήθεια για το VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps από 19 $ ή πώς να μοιραστείτε έναν διακομιστή; (διατίθεται με RAID1 και RAID10, έως 24 πυρήνες και έως 40 GB DDR4).

Το Dell R730xd 2 φορές φθηνότερο στο κέντρο δεδομένων Equinix Tier IV στο Άμστερνταμ; Μόνο εδώ 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 Τηλεόραση από 199$ στην Ολλανδία! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - από 99$! Διαβάστε σχετικά Πώς να χτίσετε την υποδομή Corp. κατηγορίας με τη χρήση διακομιστών Dell R730xd E5-2650 v4 αξίας 9000 ευρώ για μια δεκάρα;

Πηγή: www.habr.com

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