Προβλήματα με το DNS στο Kubernetes. Δημόσια νεκροψία
Σημείωση. μετάφραση: Αυτή είναι μια μετάφραση μιας δημόσιας νεκροψίας από το ιστολόγιο μηχανικής της εταιρείας Προεπιλογή. Περιγράφει ένα πρόβλημα με το contrack σε ένα σύμπλεγμα Kubernetes, το οποίο οδήγησε σε μερικό χρόνο διακοπής λειτουργίας ορισμένων υπηρεσιών παραγωγής.
Αυτό το άρθρο μπορεί να είναι χρήσιμο για όσους θέλουν να μάθουν λίγα περισσότερα για τις νεκροψίες ή να αποτρέψουν κάποια πιθανά προβλήματα DNS στο μέλλον.
Αυτό δεν είναι DNS
Δεν μπορεί να είναι DNS
Ήταν DNS
Λίγα λόγια για τις νεκροψίες και τις διαδικασίες στο Preply
Μια νεκροψία περιγράφει μια δυσλειτουργία ή κάποιο συμβάν στην παραγωγή. Το μεταθανάτιο περιλαμβάνει ένα χρονοδιάγραμμα γεγονότων, τον αντίκτυπο του χρήστη, τη βασική αιτία, τις ενέργειες που έγιναν και τα διδάγματα που αντλήθηκαν.
Στις εβδομαδιαίες συναντήσεις με την πίτσα, μεταξύ της τεχνικής ομάδας, μοιραζόμαστε διάφορες πληροφορίες. Ένα από τα πιο σημαντικά μέρη τέτοιων συναντήσεων είναι οι νεκροψίες, οι οποίες τις περισσότερες φορές συνοδεύονται από παρουσίαση με διαφάνειες και πιο εις βάθος ανάλυση του περιστατικού. Παρόλο που δεν χειροκροτάμε μετά τη νεκροψία, προσπαθούμε να αναπτύξουμε μια κουλτούρα "χωρίς φταίξιμο" (άψογος πολιτισμός). Πιστεύουμε ότι η συγγραφή και η παρουσίαση νεκροτομών μπορεί να βοηθήσει εμάς (και άλλους) να αποτρέψουμε παρόμοια περιστατικά στο μέλλον, γι' αυτό και τα κοινοποιούμε.
Τα άτομα που εμπλέκονται σε ένα περιστατικό θα πρέπει να αισθάνονται ότι μπορούν να μιλήσουν με λεπτομέρειες χωρίς φόβο τιμωρίας ή τιμωρίας. Καμία ευθύνη! Η συγγραφή μιας νεκροψίας δεν είναι τιμωρία, αλλά μια ευκαιρία μάθησης για ολόκληρη την εταιρεία.
Συγγραφείς: Amet U., Andrey S., Igor K., Alexey P.
Κατάσταση: Πεπερασμένος
Εν συντομία: Μερική μη διαθεσιμότητα DNS (26 λεπτά) για ορισμένες υπηρεσίες στο σύμπλεγμα Kubernetes
Βαθμολογία: Χάθηκαν 15000 αγώνες για τις υπηρεσίες Α, Β και Γ
Βασική αιτία: Το Kube-proxy δεν μπόρεσε να αφαιρέσει σωστά μια παλιά καταχώρηση από τον πίνακα conntrack, επομένως ορισμένες υπηρεσίες εξακολουθούσαν να προσπαθούν να συνδεθούν σε ανύπαρκτα pod
Δώσει το έναυσμα για: Λόγω του χαμηλού φορτίου μέσα στο σύμπλεγμα Kubernetes, το CoreDNS-autoscaler μείωσε τον αριθμό των pod στην ανάπτυξη από τρία σε δύο
λύση: Η επόμενη ανάπτυξη της εφαρμογής ξεκίνησε τη δημιουργία νέων κόμβων, ο CoreDNS-autoscaler πρόσθεσε περισσότερα pods για να εξυπηρετήσει το σύμπλεγμα, γεγονός που προκάλεσε την επανεγγραφή του πίνακα conntrack
Ανίχνευση: Η παρακολούθηση του Προμηθέα εντόπισε μεγάλο αριθμό σφαλμάτων 5xx για τις υπηρεσίες Α, Β και Γ και ξεκίνησε μια κλήση στους επί καθήκοντι μηχανικούς
Σφάλματα 5xx στο Kibana
Δραστηριότητα
επίδραση
Τύπος
Υπεύθυνος
Έργο
Απενεργοποίηση αυτόματης κλίμακας για CoreDNS
αποτραπεί
Αμέτ Ου.
DEVOPS-695
Ρυθμίστε έναν διακομιστή DNS προσωρινής αποθήκευσης
μείωση
Max V.
DEVOPS-665
Ρυθμίστε την παρακολούθηση contrack
αποτραπεί
Αμέτ Ου.
DEVOPS-674
Διδάγματα
Τι πήγε καλά:
Η παρακολούθηση λειτούργησε καλά. Η ανταπόκριση ήταν γρήγορη και οργανωμένη
Για να ελαχιστοποιηθεί η χρήση της CPU, ο πυρήνας του Linux χρησιμοποιεί κάτι που ονομάζεται conntrack. Εν ολίγοις, αυτό είναι ένα βοηθητικό πρόγραμμα που περιέχει μια λίστα με εγγραφές NAT που είναι αποθηκευμένες σε έναν ειδικό πίνακα. Όταν το επόμενο πακέτο φτάσει από το ίδιο pod στο ίδιο pod όπως πριν, η τελική διεύθυνση IP δεν θα υπολογιστεί εκ νέου, αλλά θα ληφθεί από τον πίνακα conntrack.
Πώς λειτουργεί το contrack
Αποτελέσματα της
Αυτό ήταν ένα παράδειγμα μιας από τις νεκροψίες μας με μερικούς χρήσιμους συνδέσμους. Συγκεκριμένα σε αυτό το άρθρο, κοινοποιούμε πληροφορίες που μπορεί να είναι χρήσιμες σε άλλες εταιρείες. Γι' αυτό δεν φοβόμαστε να κάνουμε λάθη και γι' αυτό δημοσιοποιούμε ένα από τα μεταθανάτιά μας. Ακολουθούν μερικές ακόμη ενδιαφέρουσες δημόσιες νεκροτομές: