Βέλτιστες πρακτικές Kubernetes. Χαρτογράφηση εξωτερικών υπηρεσιών

Βέλτιστες πρακτικές Kubernetes. Δημιουργία μικρών δοχείων
Βέλτιστες πρακτικές Kubernetes. Οργάνωση του Kubernetes με χώρο ονομάτων
Βέλτιστες πρακτικές Kubernetes. Επικύρωση του Kubernetes Liveness με τεστ ετοιμότητας και ζωντάνιας
Βέλτιστες πρακτικές Kubernetes. Ρύθμιση αιτημάτων και ορίων πόρων
Βέλτιστες πρακτικές Kubernetes. Σωστός τερματισμός τερματισμού λειτουργίας

Εάν είστε όπως οι περισσότεροι άνθρωποι, πιθανότατα χρησιμοποιείτε πόρους που εκτελούνται εκτός του συμπλέγματός σας. Ίσως χρησιμοποιείτε το Taleo API για να στείλετε μηνύματα κειμένου ή να αναλύσετε εικόνες χρησιμοποιώντας το Google Cloud Vision API.

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

Ένα παράδειγμα κοινής εξωτερικής υπηρεσίας είναι μια βάση δεδομένων που εκτελείται εκτός ενός συμπλέγματος Kubernetes. Σε αντίθεση με τις βάσεις δεδομένων cloud όπως το Google Cloud Data Store ή το Google Cloud Spanner, οι οποίες χρησιμοποιούν ένα μόνο τελικό σημείο για κάθε πρόσβαση, οι περισσότερες βάσεις δεδομένων έχουν ξεχωριστά τελικά σημεία για διαφορετικές περιστάσεις.
Οι βέλτιστες πρακτικές για τη χρήση παραδοσιακών βάσεων δεδομένων όπως η MySQL και η MongoDB συνήθως σημαίνουν ότι συνδέεστε σε διαφορετικά στοιχεία για διαφορετικά περιβάλλοντα. Μπορείτε να έχετε ένα μεγάλο μηχάνημα για δεδομένα παραγωγής και ένα μικρότερο μηχάνημα για το περιβάλλον δοκιμής. Κάθε ένα από αυτά θα έχει τη δική του διεύθυνση IP ή όνομα τομέα, αλλά πιθανότατα δεν θα θέλετε να αλλάξετε τον κωδικό σας όταν μετακινείστε από το ένα περιβάλλον στο άλλο. Έτσι, αντί να κωδικοποιείτε σκληρά αυτές τις διευθύνσεις, μπορείτε να χρησιμοποιήσετε την ενσωματωμένη ανακάλυψη εξωτερικών υπηρεσιών που βασίζεται σε DNS της Kubernetes με τον ίδιο τρόπο όπως οι εγγενείς υπηρεσίες Kubernetes.

Βέλτιστες πρακτικές Kubernetes. Χαρτογράφηση εξωτερικών υπηρεσιών

Ας υποθέσουμε ότι εκτελείτε μια βάση δεδομένων MongoDB στο Google Compute Engine. Θα μείνετε κολλημένοι σε αυτόν τον υβριδικό κόσμο μέχρι να καταφέρετε να τον μεταφέρετε στο σύμπλεγμα.

Ευτυχώς, μπορείτε να χρησιμοποιήσετε στατικές υπηρεσίες Kubernetes για να κάνετε τη ζωή σας λίγο πιο εύκολη. Σε αυτό το παράδειγμα, δημιούργησα έναν διακομιστή MongoDB χρησιμοποιώντας το Google Cloud Launcher. Δεδομένου ότι δημιουργείται στο ίδιο δίκτυο (ή VPC συμπλέγματος Kubernetes), η πρόσβαση σε αυτό γίνεται χρησιμοποιώντας μια εσωτερική διεύθυνση IP υψηλής απόδοσης.

Βέλτιστες πρακτικές Kubernetes. Χαρτογράφηση εξωτερικών υπηρεσιών

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

Βέλτιστες πρακτικές Kubernetes. Χαρτογράφηση εξωτερικών υπηρεσιών

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

Βέλτιστες πρακτικές Kubernetes. Χαρτογράφηση εξωτερικών υπηρεσιών

Το Kubernetes θα χρησιμοποιήσει όλες τις διευθύνσεις IP για να βρει τελικά σημεία σαν να ήταν κανονικά Kubernetes Pods, οπότε τώρα μπορείτε να έχετε πρόσβαση στη βάση δεδομένων με μια απλή συμβολοσειρά σύνδεσης στο παραπάνω όνομα mongodb://mongo. Δεν χρειάζεται καθόλου να χρησιμοποιείτε διευθύνσεις IP στον κώδικά σας.

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

Εάν χρησιμοποιείτε μια βάση δεδομένων που φιλοξενείται σε κεντρικό υπολογιστή τρίτου μέρους, είναι πιθανό οι κάτοχοι του κεντρικού υπολογιστή να σας έχουν παράσχει ένα URI Uniform Resource Identifier για να συνδεθείτε. Επομένως, εάν σας έχει δοθεί μια διεύθυνση IP, μπορείτε απλά να χρησιμοποιήσετε την προηγούμενη μέθοδο. Αυτό το παράδειγμα δείχνει ότι έχω δύο βάσεις δεδομένων MongoDB που φιλοξενούνται σε έναν κεντρικό υπολογιστή mLab.

Βέλτιστες πρακτικές Kubernetes. Χαρτογράφηση εξωτερικών υπηρεσιών

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

Βέλτιστες πρακτικές Kubernetes. Χαρτογράφηση εξωτερικών υπηρεσιών

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

Βέλτιστες πρακτικές Kubernetes. Χαρτογράφηση εξωτερικών υπηρεσιών

Αυτή η υπηρεσία θα εκτελεί απλή προώθηση CNAME σε επίπεδο πυρήνα με ελάχιστο αντίκτυπο στην απόδοση. Χάρη σε αυτό μπορείτε να χρησιμοποιήσετε μια απλούστερη συμβολοσειρά σύνδεσης.

Βέλτιστες πρακτικές Kubernetes. Χαρτογράφηση εξωτερικών υπηρεσιών

Επειδή όμως το εξωτερικό όνομα χρησιμοποιεί προώθηση CNAME, δεν μπορεί να εκτελέσει προώθηση θύρας. Επομένως, αυτή η λύση ισχύει μόνο για στατικές θύρες και δεν μπορεί να χρησιμοποιηθεί με δυναμικές θύρες. Αλλά το mLab Free Tier δίνει στον χρήστη έναν δυναμικό αριθμό θύρας από προεπιλογή και δεν μπορείτε να τον αλλάξετε. Αυτό σημαίνει ότι χρειάζεστε διαφορετικές γραμμές εντολών σύνδεσης για dev και prod. Το κακό είναι ότι αυτό θα απαιτήσει να κωδικοποιήσετε τον αριθμό της θύρας. Λοιπόν, πώς μπορείτε να κάνετε την προώθηση θύρας στη δουλειά;

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

Βέλτιστες πρακτικές Kubernetes. Χαρτογράφηση εξωτερικών υπηρεσιών

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

Βέλτιστες πρακτικές Kubernetes. Χαρτογράφηση εξωτερικών υπηρεσιών

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

Συνέχεια πολύ σύντομα...

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

Σας ευχαριστούμε που μείνατε μαζί μας. Σας αρέσουν τα άρθρα μας; Θέλετε να δείτε πιο ενδιαφέρον περιεχόμενο; Υποστηρίξτε μας κάνοντας μια παραγγελία ή προτείνοντας σε φίλους, 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

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