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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ας δούμε πώς δοκιμάζονται η ετοιμότητα και η βιωσιμότητα. Υπάρχουν τρεις μέθοδοι δοκιμής - HTTP, Command και TCP. Μπορείτε να χρησιμοποιήσετε οποιοδήποτε από αυτά για έλεγχο. Ο πιο συνηθισμένος τρόπος δοκιμής ενός χρήστη είναι ένας ανιχνευτής HTTP.

Ακόμα κι αν η εφαρμογή σας δεν είναι διακομιστής HTTP, μπορείτε να δημιουργήσετε έναν ελαφρύ διακομιστή HTTP μέσα στην εφαρμογή σας για αλληλεπίδραση με τη δοκιμή Liveness. Μετά από αυτό, το Kubernetes θα αρχίσει να κάνει ping στο pod και εάν η απόκριση HTTP είναι στο εύρος των 200 ή 300 ms, θα υποδεικνύει ότι το pod είναι υγιές. Διαφορετικά, η μονάδα θα επισημαίνεται ως "ανθυγιεινή".

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

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

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

Ο τελικός μηχανισμός επαλήθευσης είναι η δοκιμή TCP. Η Kubernetes θα προσπαθήσει να δημιουργήσει μια σύνδεση TCP στην καθορισμένη θύρα. Εάν αυτό μπορεί να γίνει, το δοχείο θεωρείται υγιές, εάν όχι, θεωρείται μη βιώσιμο. Αυτή η μέθοδος μπορεί να είναι χρήσιμη εάν χρησιμοποιείτε ένα σενάριο όπου η δοκιμή με αίτημα HTTP ή εκτέλεση εντολής δεν λειτουργεί πολύ καλά. Για παράδειγμα, οι κύριες υπηρεσίες για επαλήθευση με χρήση TCP θα είναι gRPC ή FTP.

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

Οι δοκιμές μπορούν να διαμορφωθούν με διάφορους τρόπους με διαφορετικές παραμέτρους. Μπορείτε να καθορίσετε πόσο συχνά θα πρέπει να εκτελούνται, ποια είναι τα όρια επιτυχίας και αποτυχίας και πόσο καιρό θα περιμένετε για απαντήσεις. Για περισσότερες πληροφορίες, ανατρέξτε στην τεκμηρίωση για τις δοκιμές ετοιμότητας και ζωντάνιας. Ωστόσο, υπάρχει ένα πολύ σημαντικό σημείο στη ρύθμιση της δοκιμής Liveness - η αρχική ρύθμιση της καθυστέρησης δοκιμών αρχικάDelaySeconds. Όπως ανέφερα, η αποτυχία αυτής της δοκιμής θα έχει ως αποτέλεσμα την επανεκκίνηση της ενότητας. Επομένως, πρέπει να βεβαιωθείτε ότι οι δοκιμές δεν θα ξεκινήσουν έως ότου η εφαρμογή είναι έτοιμη να ξεκινήσει, διαφορετικά θα ξεκινήσει η επανεκκίνηση. Συνιστώ τη χρήση του χρόνου εκκίνησης P99 ή του μέσου χρόνου εκκίνησης της εφαρμογής από το buffer. Θυμηθείτε να προσαρμόσετε αυτήν την τιμή καθώς ο χρόνος εκκίνησης της εφαρμογής σας γίνεται ολοένα και πιο αργός.

Οι περισσότεροι ειδικοί θα επιβεβαιώσουν ότι οι Έλεγχοι Υγείας είναι ένας υποχρεωτικός έλεγχος για οποιοδήποτε κατανεμημένο σύστημα και το 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

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