Kubernetes adventure Dailymotion: δημιουργία υποδομής στα σύννεφα + επί τόπου

Kubernetes adventure Dailymotion: δημιουργία υποδομής στα σύννεφα + επί τόπου

Σημείωση. μετάφρ.: Η Dailymotion είναι μια από τις μεγαλύτερες υπηρεσίες φιλοξενίας βίντεο στον κόσμο και επομένως ένας αξιόλογος χρήστης του Kubernetes. Σε αυτό το υλικό, ο αρχιτέκτονας συστημάτων David Donchez μοιράζεται τα αποτελέσματα της δημιουργίας της πλατφόρμας παραγωγής της εταιρείας με βάση τα K8s, η οποία ξεκίνησε με μια εγκατάσταση cloud στο GKE και κατέληξε ως μια υβριδική λύση, η οποία επέτρεψε καλύτερους χρόνους απόκρισης και εξοικονόμηση κόστους υποδομής.

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

Γιατί αξίζει να δημιουργήσετε τη δική σας πλατφόρμα βασισμένη στο Kubernetes;

API σε επίπεδο παραγωγής σε χρόνο μηδέν χρησιμοποιώντας το Google Cloud

Καλοκαίρι 2016

Πριν από τρία χρόνια, αμέσως μετά την αγορά της Dailymotion από Vivendi, οι ομάδες μηχανικών μας επικεντρώνονται σε έναν παγκόσμιο στόχο: να δημιουργήσουν ένα εντελώς νέο προϊόν Dailymotion.

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

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

Γιατί επιλέξατε το ΓΚΕ;

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

Kubernetes adventure Dailymotion: δημιουργία υποδομής στα σύννεφα + επί τόπου
Συστάδες GKE στο Dailymotion

Δεδομένου ότι το Dailymotion είναι μια πλατφόρμα βίντεο που διατίθεται παγκοσμίως, θέλαμε πραγματικά να βελτιώσουμε την ποιότητα της υπηρεσίας μειώνοντας τον χρόνο αναμονής (αφάνεια). Προηγουμένως το API μας ήταν διαθέσιμο μόνο στο Παρίσι, κάτι που δεν ήταν βέλτιστο. Ήθελα να μπορώ να φιλοξενώ εφαρμογές όχι μόνο στην Ευρώπη, αλλά και στην Ασία και τις ΗΠΑ.

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

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

Kubernetes adventure Dailymotion: δημιουργία υποδομής στα σύννεφα + επί τόπου
Παρακολούθηση Εξισορρόπησης Φορτίου Google

Η πλατφόρμα μας κάνει επίσης μεγάλη χρήση των GPU. Το Google Cloud σάς επιτρέπει να τα χρησιμοποιείτε πολύ αποτελεσματικά απευθείας στα συμπλέγματα Kubernetes.

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

Ως αποτέλεσμα, μπορέσαμε να αρχίσουμε να λαμβάνουμε κίνηση παραγωγής στην υποδομή Google Cloud μόλις 6 μήνες μετά την έναρξη των εργασιών.

Ωστόσο, παρά τα πολλά πλεονεκτήματα, η συνεργασία με έναν πάροχο cloud συνδέεται με ορισμένα κόστη, τα οποία μπορεί να αυξηθούν ανάλογα με το φορτίο. Γι' αυτό αναλύσαμε προσεκτικά κάθε διαχειριζόμενη υπηρεσία που χρησιμοποιήσαμε, ελπίζοντας να τις εφαρμόσουμε επιτόπου στο μέλλον. Μάλιστα, η εφαρμογή τοπικών clusters ξεκίνησε στα τέλη του 2016 και παράλληλα ξεκίνησε η υβριδική στρατηγική.

Έναρξη της τοπικής πλατφόρμας ενορχήστρωσης κοντέινερ Dailymotion

Φθινόπωρο 2016

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

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

Η υποδομή της Dailymotion αποτελούνταν από περισσότερους από 2,5 χιλιάδες διακομιστές σε έξι κέντρα δεδομένων. Όλα έχουν ρυθμιστεί χρησιμοποιώντας το Saltstack. Αρχίσαμε να προετοιμάζουμε όλες τις απαραίτητες συνταγές για τη δημιουργία κόμβων master και worker, καθώς και ένα cluster etcd.

Kubernetes adventure Dailymotion: δημιουργία υποδομής στα σύννεφα + επί τόπου

Τμήμα δικτύου

Το δίκτυό μας είναι πλήρως δρομολογημένο. Κάθε διακομιστής διαφημίζει την IP του στο δίκτυο χρησιμοποιώντας το Exabgp. Συγκρίναμε πολλά πρόσθετα δικτύου και το μόνο που ικανοποιούσε όλες τις ανάγκες (λόγω της προσέγγισης L3 που χρησιμοποιήθηκε) ήταν τσίτι. Ταιριάζει απόλυτα στο υπάρχον μοντέλο υποδομής δικτύου.

Εφόσον θέλαμε να χρησιμοποιήσουμε όλα τα διαθέσιμα στοιχεία υποδομής, το πρώτο πράγμα που έπρεπε να κάνουμε ήταν να καταλάβουμε το εγχώριο βοηθητικό πρόγραμμα δικτύου μας (χρησιμοποιείται σε όλους τους διακομιστές): να το χρησιμοποιήσουμε για να διαφημίσουμε εύρη διευθύνσεων IP στο δίκτυο με κόμβους Kubernetes. Επιτρέψαμε στο Calico να εκχωρεί διευθύνσεις IP σε pods, αλλά δεν το χρησιμοποιούσαμε και δεν το χρησιμοποιούμε για συνεδρίες BGP σε εξοπλισμό δικτύου. Στην πραγματικότητα, η δρομολόγηση γίνεται από το Exabgp, το οποίο διαφημίζει τα υποδίκτυα που χρησιμοποιεί η Calico. Αυτό μας επιτρέπει να φτάσουμε σε οποιοδήποτε pod από το εσωτερικό δίκτυο (και ειδικότερα από συσκευές εξισορρόπησης φορτίου).

Πώς διαχειριζόμαστε την κίνηση εισόδου

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

Πριν από τρία χρόνια, το nginx-ingress-controller ήταν ο πιο ώριμος ελεγκτής: το Nginx υπήρχε εδώ και πολύ καιρό και ήταν γνωστό για τη σταθερότητα και την απόδοσή του.

Στο σύστημά μας, αποφασίσαμε να τοποθετήσουμε τους ελεγκτές σε αποκλειστικούς διακομιστές blade 10 Gigabit. Κάθε ελεγκτής συνδέθηκε στο τελικό σημείο kube-apiserver του αντίστοιχου συμπλέγματος. Αυτοί οι διακομιστές χρησιμοποιούσαν επίσης το Exabgp για τη διαφήμιση δημόσιων ή ιδιωτικών διευθύνσεων IP. Η τοπολογία του δικτύου μας μας επιτρέπει να χρησιμοποιούμε το BGP από αυτούς τους ελεγκτές για να δρομολογούμε όλη την κίνηση απευθείας στα pods χωρίς να χρησιμοποιούμε μια υπηρεσία όπως το NodePort. Αυτή η προσέγγιση βοηθά στην αποφυγή της οριζόντιας κίνησης μεταξύ κόμβων και βελτιώνει την αποτελεσματικότητα.

Kubernetes adventure Dailymotion: δημιουργία υποδομής στα σύννεφα + επί τόπου
Μετακίνηση κυκλοφορίας από το Διαδίκτυο σε λοβούς

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

Μετεγκατάσταση της κυκλοφορίας από το Google Cloud στην υποδομή Dailymotion

Φθινόπωρο 2018

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

Kubernetes adventure Dailymotion: δημιουργία υποδομής στα σύννεφα + επί τόπου

Η τρέχουσα στρατηγική δρομολόγησης είναι αρκετά απλή, αλλά επαρκής για να καλύψει τις ανάγκες. Εκτός από τις δημόσιες διευθύνσεις IP (στο Google Cloud και το Dailymotion), το AWS Route 53 χρησιμοποιείται για τον καθορισμό πολιτικών και την ανακατεύθυνση των χρηστών στο σύμπλεγμα της επιλογής μας.

Kubernetes adventure Dailymotion: δημιουργία υποδομής στα σύννεφα + επί τόπου
Παράδειγμα πολιτικής δρομολόγησης χρησιμοποιώντας τη διαδρομή 53

Με το Google Cloud αυτό είναι εύκολο καθώς μοιραζόμαστε μια ενιαία IP σε όλα τα συμπλέγματα και ο χρήστης ανακατευθύνεται στο πλησιέστερο σύμπλεγμα GKE. Για τα cluster μας η τεχνολογία είναι διαφορετική, αφού οι IP τους είναι διαφορετικές.

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

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

Στην κανονική λειτουργία, όλη η περιφερειακή κίνηση κατευθύνεται στο τοπικό σύμπλεγμα και το ΓΚΕ χρησιμεύει ως αποθεματικό σε περίπτωση προβλημάτων (οι υγειονομικοί έλεγχοι πραγματοποιούνται από τη Διαδρομή 53).

...

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

ΥΓ από τον μεταφραστή

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

Διαβάστε επίσης στο blog μας:

Πηγή: www.habr.com

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