Kubernetes-seikkailu Dailymotion: infrastruktuurin luominen pilvissä + paikan päällä

Kubernetes-seikkailu Dailymotion: infrastruktuurin luominen pilvissä + paikan päällä

Huomautus. käännös: Dailymotion on yksi maailman suurimmista videoiden isännöintipalveluista ja siksi merkittävä Kubernetes-käyttäjä. Tässä materiaalissa järjestelmäarkkitehti David Donchez jakaa tuloksia yrityksen K8s-pohjaisen tuotantoalustan luomisesta, joka alkoi pilviasennuksella GKE:hen ja päättyi hybridiratkaisuksi, mikä mahdollisti paremmat vasteajat ja säästöt infrastruktuurikustannuksissa.

Päätät rakentaa uudelleen ydinsovellusliittymän Dailymotion kolme vuotta sitten halusimme kehittää tehokkaamman tavan isännöidä sovelluksia ja tehdä siitä helpompaa kehitys- ja tuotantoprosessit. Tätä tarkoitusta varten päätimme käyttää kontin orkestrointialustaa ja valitsimme luonnollisesti Kubernetesin.

Miksi kannattaa rakentaa oma alusta Kubernetesiin?

Tuotantotason sovellusliittymä hetkessä Google Cloudin avulla

Kesä 2016

Kolme vuotta sitten, heti sen jälkeen, kun Dailymotion osti Vivendi, suunnittelutiimimme ovat keskittyneet yhteen globaaliin tavoitteeseen: luoda täysin uusi Dailymotion-tuote.

Kontianalyysimme, orkestrointiratkaisujemme ja aikaisemman kokemuksemme perusteella olemme vakuuttuneita siitä, että Kubernetes on oikea valinta. Jotkut kehittäjät ymmärsivät jo peruskäsitteet ja osasivat käyttää niitä, mikä oli valtava etu infrastruktuurin muutoksessa.

Infrastruktuurin näkökulmasta uudentyyppisten pilvipohjaisten sovellusten isännöimiseen vaadittiin tehokas ja joustava järjestelmä. Päätimme pysyä pilvessä matkamme alussa, jotta voisimme rakentaa kestävimmän mahdollisen paikallisen alustan mielenrauhalla. Päätimme ottaa sovelluksemme käyttöön Google Kubernetes Enginen avulla, vaikka tiesimme, että ennemmin tai myöhemmin siirrymme omiin palvelinkeskuksiimme ja sovellamme hybridistrategiaa.

Miksi valitsit GKE:n?

Teimme tämän valinnan pääasiassa teknisistä syistä. Lisäksi oli tarpeen saada nopeasti käyttöön yrityksen liiketoiminnan tarpeita vastaava infrastruktuuri. Meillä oli joitain vaatimuksia sovellusten isännöinnille, kuten maantieteellinen jakautuminen, skaalautuvuus ja vikasietoisuus.

Kubernetes-seikkailu Dailymotion: infrastruktuurin luominen pilvissä + paikan päällä
GKE-klusterit Dailymotionissa

Koska Dailymotion on maailmanlaajuisesti saatavilla oleva videoalusta, halusimme todella parantaa palvelun laatua lyhentämällä odotusaikaa (viive). Aiemmin meidän API oli saatavilla vain Pariisissa, mikä oli epäoptimaalista. Halusin pystyä isännöimään sovelluksia paitsi Euroopassa, myös Aasiassa ja Yhdysvalloissa.

Tämä herkkyys latenssille tarkoitti, että alustan verkkoarkkitehtuuria oli tehtävä vakavasti. Useimmat pilvipalvelut pakottivat luomaan oman verkkosi jokaiselle alueelle ja yhdistämään ne sitten VPN:n tai jonkin hallitun palvelun kautta, kun taas Google Cloud mahdollisti täysin reititettävän yhden verkon, joka kattaa kaikki Googlen alueet. Tämä on iso plussa järjestelmän toiminnan ja tehokkuuden kannalta.

Lisäksi Google Cloudin verkkopalvelut ja kuormantasaajat tekevät erinomaista työtä. Niiden avulla voit yksinkertaisesti käyttää mielivaltaisia ​​julkisia IP-osoitteita jokaiselta alueelta, ja upea BGP-protokolla hoitaa loput (eli ohjaa käyttäjät lähimpään klusteriin). On selvää, että vikatilanteessa liikenne siirtyy automaattisesti toiselle alueelle ilman ihmisen puuttumista.

Kubernetes-seikkailu Dailymotion: infrastruktuurin luominen pilvissä + paikan päällä
Google Load Balancingin seuranta

Alustamme käyttää myös paljon grafiikkasuoritteita. Google Cloudin avulla voit käyttää niitä erittäin tehokkaasti suoraan Kubernetes-klustereissa.

Tuolloin infrastruktuuritiimi keskittyi ensisijaisesti fyysisillä palvelimilla käyttöön otettuun vanhaan pinoon. Siksi hallitun palvelun käyttö (mukaan lukien Kubernetes-masterit) täytti vaatimuksemme ja antoi meille mahdollisuuden kouluttaa tiimejä työskentelemään paikallisten klustereiden kanssa.

Tämän seurauksena pystyimme vastaanottamaan tuotantoliikennettä Google Cloud -infrastruktuurissa vain 6 kuukautta työn alkamisen jälkeen.

Useista eduista huolimatta pilvipalveluntarjoajan kanssa työskentelyyn liittyy tiettyjä kustannuksia, jotka voivat kasvaa kuormituksesta riippuen. Siksi analysoimme huolellisesti jokaisen käyttämämme hallitun palvelun ja toivomme, että voimme ottaa ne käyttöön paikan päällä tulevaisuudessa. Itse asiassa paikallisklusterien käyttöönotto aloitettiin vuoden 2016 lopulla ja samaan aikaan käynnistettiin hybridistrategia.

Paikallisen konttien orkestrointialusta Dailymotion lanseerattiin

Syksy 2016

Olosuhteissa, joissa koko pino oli valmis tuotantoa varten, ja työskennellä API:n parissa jatkui, oli aika keskittyä alueellisiin klustereihin.

Tuolloin käyttäjät katsoivat yli 3 miljardia videota joka kuukausi. Meillä on tietysti ollut oma laaja sisällönjakeluverkostomme useiden vuosien ajan. Halusimme hyödyntää tätä tilannetta ja ottaa Kubernetes-klusterit käyttöön olemassa olevissa palvelinkeskuksissa.

Dailymotionin infrastruktuuri koostui yli 2,5 tuhannesta palvelimesta kuudessa palvelinkeskuksessa. Kaikki ne on määritetty Saltstackilla. Aloimme valmistella kaikkia tarvittavia reseptejä master- ja worker-solmujen sekä etcd-klusterin luomiseen.

Kubernetes-seikkailu Dailymotion: infrastruktuurin luominen pilvissä + paikan päällä

Verkko osa

Verkkomme on täysin reititetty. Jokainen palvelin mainostaa IP-osoitettaan verkossa käyttämällä Exabgp:tä. Vertasimme useita verkkolaajennuksia ja ainoa, joka täytti kaikki tarpeet (käytetyn L3-lähestymistavan vuoksi). kalikoo. Se sopii täydellisesti olemassa olevaan verkkoinfrastruktuurimalliin.

Koska halusimme käyttää kaikkia saatavilla olevia infrastruktuurielementtejä, meidän oli ensin selvitettävä kotimainen verkkoapuohjelma (käytetään kaikilla palvelimilla): käyttää sitä IP-osoitealueiden mainostamiseen verkossa Kubernetes-solmujen avulla. Sallimme Calicon määrittää IP-osoitteita podille, mutta emme käyttäneet emmekä edelleenkään käytä sitä BGP-istunnoissa verkkolaitteissa. Itse asiassa reitityksen hoitaa Exabgp, joka mainostaa Calicon käyttämiä aliverkkoja. Tämän ansiosta voimme saavuttaa minkä tahansa podin sisäisestä verkosta (ja erityisesti kuormantasainten kautta).

Kuinka hallitsemme sisääntuloliikennettä

Saapuvien pyyntöjen ohjaamiseksi haluttuun palveluun päätettiin käyttää Ingress Controlleria, koska se on integroitu Kubernetes-tuloresurssien kanssa.

Kolme vuotta sitten nginx-ingress-controller oli kypsin ohjain: Nginx oli ollut olemassa pitkään ja tunnettiin vakaudestaan ​​ja suorituskyvystään.

Päätimme järjestelmässämme sijoittaa ohjaimet omistetuille 10 gigabitin korttipalvelimille. Jokainen ohjain oli kytketty vastaavan klusterin kube-apiserver-päätepisteeseen. Nämä palvelimet käyttivät myös Exabgp:tä julkisten tai yksityisten IP-osoitteiden mainostamiseen. Verkkotopologiamme antaa meille mahdollisuuden käyttää näiden ohjaimien BGP:tä kaiken liikenteen reitittämiseen suoraan podeihin ilman NodePortin kaltaista palvelua. Tämä lähestymistapa auttaa välttämään horisontaalista liikennettä solmujen välillä ja parantaa tehokkuutta.

Kubernetes-seikkailu Dailymotion: infrastruktuurin luominen pilvissä + paikan päällä
Liikenteen siirtyminen Internetistä podeihin

Nyt kun ymmärrämme hybridialustamme, voimme syventää itse liikenteen siirtoprosessia.

Liikenteen siirto Google Cloudista Dailymotion-infrastruktuuriin

Syksy 2018

Lähes kahden vuoden rakentamisen, testauksen ja virityksen jälkeen meillä on vihdoin täysi Kubernetes-pino, joka on valmis vastaanottamaan liikennettä.

Kubernetes-seikkailu Dailymotion: infrastruktuurin luominen pilvissä + paikan päällä

Nykyinen reititysstrategia on melko yksinkertainen, mutta riittävä vastaamaan tarpeisiin. Julkisten IP-osoitteiden (Google Cloudissa ja Dailymotionissa) lisäksi AWS Route 53:a käytetään asettamaan käytäntöjä ja ohjaamaan käyttäjiä valitsemaansa klusteriin.

Kubernetes-seikkailu Dailymotion: infrastruktuurin luominen pilvissä + paikan päällä
Esimerkki reitityskäytännöstä reitillä 53

Google Cloudin avulla tämä on helppoa, koska jaamme yhden IP-osoitteen kaikille klusteille ja käyttäjä ohjataan lähimpään GKE-klusteriin. Klustereillemme tekniikka on erilainen, koska niiden IP-osoitteet ovat erilaiset.

Siirron aikana pyrimme ohjaamaan alueelliset pyynnöt asianmukaisiin klustereihin ja arvioimme tämän lähestymistavan hyötyjä.

Koska GKE-klusterimme on määritetty skaalautumaan automaattisesti käyttämällä mukautettuja mittareita, ne skaalautuvat ylös/alas tulevan liikenteen perusteella.

Normaalitilassa kaikki alueellinen liikenne ohjataan paikallisklusteriin ja GKE toimii reservinä ongelmatilanteissa (terveystarkastukset tehdään valtatie 53:lla).

...

Haluamme jatkossa täysin automatisoida reitityskäytännöt saavuttaaksemme itsenäisen hybridistrategian, joka parantaa jatkuvasti käyttäjien saavutettavuutta. Plussaa on, että pilvikustannukset ovat pienentyneet merkittävästi ja API-vasteajat ovat jopa lyhentyneet. Luotamme tuloksena olevaan pilvialustaan ​​ja olemme valmiita ohjaamaan sinne lisää liikennettä tarvittaessa.

PS kääntäjältä

Saatat myös olla kiinnostunut toisesta viimeaikaisesta Dailymotion-viestistä Kubernetesista. Se on omistettu sovellusten käyttöönotolle Helmin kanssa monissa Kubernetes-klustereissa ja julkaistiin noin kuukausi sitten.

Lue myös blogistamme:

Lähde: will.com

Lisää kommentti