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

Η σειρά ελέγχει μόνο το πρώτο αίτημα

Το Kubernetes υποστηρίζει κύκλο ζωής sidecar χτισμένο από init containers που επανεκκινούνται. Σε αυτό το μοντέλο, ένα probe εκκίνησης μπορεί να συγκρατήσει το επόμενο βήμα αρχικοποίησης μέχρι η σήραγγα να αναφέρει ετοιμότητα. Είναι πραγματική βελτίωση, και αξίζει να τη χρησιμοποιείτε σκόπιμα αντί να προσθέτετε sleep σε script σημείου εισόδου. Η πύλη είναι τόσο καλή όσο η συνθήκη που ελέγχει.

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

Πείτε τι παρατηρεί η πύλη: υπάρχει διεργασία, υπάρχει διεπαφή, ολοκληρώθηκε handshake. Καθένα από αυτά είναι ασθενέστερος ισχυρισμός από το «η διαδρομή δεδομένων προς τους προορισμούς που χρειάζεται αυτό το pod λειτουργεί».

Επιβάλετε τη διαδρομή δεδομένων αντί να την υποθέτετε

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

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

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

Δοκιμάστε την κίνηση που δεν αναφέρατε

Κάντε ένα νέο αίτημα κατά τη διάρκεια ελεγχόμενης αποτυχίας της σήραγγας και δείτε αν βγαίνει. Μετά επαναλάβετε τον έλεγχο για τις διαδρομές που ένα τεστ διεύθυνσης εξόδου δεν αγγίζει ποτέ: ανάλυση DNS μέσα στο cluster, προορισμοί IPv6 και υπηρεσίες που προσεγγίζονται μέσω εσωτερικών διευθύνσεων του cluster αντί του δημόσιου internet. Αυτές είναι οι διαδρομές που συνεχίζουν ήσυχα να λειτουργούν αφού πεθάνει η σήραγγα.

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

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

Γράψτε την εγγραφή ανάπτυξης

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

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

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

Σχετικά άρθρα