Giunsa pod ang mga prayoridad sa Kubernetes hinungdan sa downtime sa Grafana Labs

Nota. transl.: Gipresentar namo sa imong pagtagad ang teknikal nga mga detalye mahitungod sa mga hinungdan sa bag-o nga downtime sa cloud service nga gipadayon sa mga tiglalang sa Grafana. Kini usa ka klasiko nga pananglitan kung giunsa ang usa ka bag-o ug daw labi ka mapuslanon nga bahin nga gidisenyo aron mapaayo ang kalidad sa imprastraktura ... mahimong hinungdan sa kadaot kung dili nimo hatagan ang daghang mga nuances sa aplikasyon niini sa mga kamatuoran sa produksiyon. Nindot kung ang mga materyal nga sama niini makita nga nagtugot kanimo nga makakat-on dili lamang sa imong mga sayup. Ang mga detalye anaa sa hubad niini nga teksto gikan sa bise presidente sa produkto gikan sa Grafana Labs.

Giunsa pod ang mga prayoridad sa Kubernetes hinungdan sa downtime sa Grafana Labs

Kaniadtong Biyernes, Hulyo 19, ang serbisyo sa Hosted Prometheus sa Grafana Cloud mihunong sa pag-andar sa hapit 30 minuto. Nangayo ko og pasaylo sa tanang mga kustomer nga naapektuhan sa outage. Ang among trabaho mao ang paghatag sa mga himan sa pagmonitor nga imong gikinahanglan, ug among nasabtan nga ang dili pagbaton niini makapahimo sa imong kinabuhi nga mas lisud. Giseryoso namo kini nga panghitabo. Kini nga nota nagpatin-aw kung unsa ang nahitabo, giunsa namo pagtubag, ug unsa ang among gibuhat aron masiguro nga dili na kini mahitabo pag-usab.

sa naunang kasaysayan

Ang serbisyo sa Grafana Cloud Hosted Prometheus gibase sa Cortex - Proyekto sa CNCF aron makamugna ang usa ka pinahigda nga scalable, magamit kaayo, multi-tenant nga serbisyo sa Prometheus. Ang arkitektura sa Cortex naglangkob sa usa ka set sa indibidwal nga mga microservice, nga ang matag usa adunay kaugalingon nga function: replikasyon, pagtipig, mga pangutana, ug uban pa. Ang Cortex ubos sa aktibo nga pag-uswag ug kanunay nga nagdugang bag-ong mga bahin ug nagpauswag sa pasundayag. Kanunay namong gipakatap ang mga bag-ong pagpagawas sa Cortex sa mga cluster aron mapahimuslan sa mga kustomer kini nga mga feature - maayo na lang, ang Cortex mahimong ma-update nga walay downtime.

Alang sa walay hunong nga mga pag-update, ang serbisyo sa Ingester Cortex nanginahanglan usa ka dugang nga replika sa Ingester sa panahon sa proseso sa pag-update. (Nota. transl.: tigsulod - ang sukaranan nga sangkap sa Cortex. Ang trabaho niini mao ang pagkolekta sa usa ka kanunay nga pag-agay sa mga sample, paggrupo kini sa mga tipak sa Prometheus ug itago kini sa usa ka database sama sa DynamoDB, BigTable o Cassandra.) Gitugotan niini ang mga daan nga Ingesters nga ipasa ang karon nga datos sa bag-ong Ingesters. Angay nga hinumdoman nga ang Ingesters nanginahanglan sa kapanguhaan. Aron sila magtrabaho, kinahanglan nimo nga adunay 4 ka mga core ug 15 GB nga memorya matag pod, i.e. 25% sa gahum sa pagproseso ug memorya sa base machine sa kaso sa among mga Kubernetes clusters. Sa kinatibuk-an, kasagaran kita adunay daghan pa nga wala magamit nga mga kapanguhaan sa cluster kay sa 4 nga mga cores ug 15 GB nga memorya, aron dali natong ma-spin up kining mga dugang nga mga ingester sa panahon sa pag-upgrade.

Bisan pa, kanunay nga mahitabo nga sa panahon sa normal nga operasyon wala’y bisan kinsa sa mga makina nga adunay kini nga 25% sa wala magamit nga mga kapanguhaan. Oo, dili gani kami maningkamot: Ang CPU ug memorya kanunay nga mapuslanon alang sa ubang mga proseso. Aron masulbad kini nga problema, nakahukom kami nga gamiton Mga Priyoridad sa Kubernetes Pod. Ang ideya mao ang paghatag sa Ingesters og mas taas nga prayoridad kay sa ubang (walay estado) nga mga microservice. Kung kinahanglan namong magpadagan ug dugang nga (N+1) Ingester, temporaryo natong ibalhin ang uban, gagmay nga mga pod. Kini nga mga pod gibalhin ngadto sa libre nga mga kahinguhaan sa ubang mga makina, nagbilin ug usa ka dako nga igo nga "lungag" aron makadagan ug dugang nga Ingester.

Kaniadtong Huwebes, Hulyo 18, gilusad namo ang upat ka bag-ong lebel sa prayoridad sa among mga cluster: kritikal, hataas, average ΠΈ ubos. Gisulayan sila sa usa ka internal nga cluster nga walay trapiko sa kliyente sulod sa mga usa ka semana. Sa kasagaran, ang mga pod nga walay espesipikong prayoridad nadawat average prayoridad, ang klase gitakda alang sa Ingesters uban sa hataas prayoridad. Kritikal gitagana alang sa pagmonitor (Prometheus, Alertmanager, node-exporter, kube-state-metrics, ug uban pa). Bukas ang among config, ug mahimo nimong tan-awon ang PR dinhi.

Aksidente

Kaniadtong Biyernes, Hulyo 19, usa sa mga inhenyero naglansad usa ka bag-ong gipahinungod nga cluster sa Cortex alang sa usa ka dako nga kliyente. Ang config alang niini nga cluster wala maglakip sa bag-ong pod priorities, mao nga ang tanan nga bag-ong pods gi-assign sa default priority - average.

Ang Kubernetes cluster walay igong kahinguhaan alang sa bag-ong Cortex cluster, ug ang kasamtangan nga produksyon nga Cortex cluster wala gi-update (Ang mga Ingesters gibiyaan nga wala taas prayoridad). Tungod kay ang Ingesters sa bag-ong cluster sa default adunay average prayoridad, ug ang kasamtangan nga mga pod sa produksyon nagtrabaho nga walay prayoridad, ang Ingesters sa bag-ong cluster mipuli sa Ingesters gikan sa kasamtangan nga Cortex production cluster.

Ang ReplicaSet para sa gipalayas nga Ingester sa production cluster nakamatikod sa gipalayas pod ug nagmugna og bag-o aron mapadayon ang espesipikong gidaghanon sa mga kopya. Ang bag-ong pod gi-assign pinaagi sa default average prayoridad, ug ang laing "daan" nga Ingester sa produksyon nawad-an sa iyang mga kahinguhaan. Ang resulta mao proseso sa avalanche, nga misangpot sa pagbalhin sa tanang pods gikan sa Ingester alang sa mga grupo sa produksiyon sa Cortex.

Ang mga ingester kay stateful ug nagtipig og datos sa miaging 12 ka oras. Kini nagtugot kanamo sa pag-compress niini nga mas episyente sa dili pa kini isulat sa dugay nga pagtipig. Aron makab-ot kini, ang Cortex shards data sa tibuok serye gamit ang Distributed Hash Table (DHT) ug gikopya ang matag serye sa tulo ka Ingesters gamit ang Dynamo-style quorum consistency. Ang Cortex wala magsulat og datos ngadto sa Ingesters nga disabled. Sa ingon, kung daghang mga Ingesters ang mobiya sa DHT, ang Cortex dili makahatag igo nga pagkopya sa mga entri, ug sila nahagsa.

Detection ug Remediation

Bag-ong mga pahibalo sa Prometheus base sa "kasaypanan nga badyet" (gibase sa sayop nga badyet - ang mga detalye makita sa umaabot nga artikulo) nagsugod sa pagpatingog sa alarma 4 minuto pagkahuman sa pagsugod sa pagsira. Sulod sa sunod nga lima ka minuto o kapin pa, nagdagan kami pipila ka mga diagnostic ug gipadako ang nagpahiping cluster sa Kubernetes aron ma-host ang bag-o ug kasamtangan nga mga cluster sa produksiyon.

Human sa laing lima ka minuto, malampuson nga gisulat sa mga tigulang nga Ingesters ang ilang datos, nagsugod ang mga bag-o, ug ang mga pungpong sa Cortex nahimong magamit pag-usab.

Laing 10 ka minuto ang gigugol sa pag-diagnose ug pagtul-id sa out-of-memory (OOM) errors gikan sa authentication reverse proxy nga nahimutang sa atubangan sa Cortex. Ang mga sayup sa OOM gipahinabo sa napulo ka pilo nga pagtaas sa QPS (kami nagtuo tungod sa sobra ka agresibo nga mga hangyo gikan sa mga server sa Prometheus sa kliyente).

Mga sangputanan

Ang kinatibuk-ang downtime kay 26 minutos. Walay data nga nawala. Malampuson nga gikarga sa mga Ingesters ang tanan nga naa sa memorya nga datos sa dugay nga pagtipig. Atol sa pagsira, ang kliyente nga Prometheus server nga gi-buffer natangtang (hilit) paggamit sa mga rekording bag-ong API remote_write base sa WAL (gisulat ni Callum Styan gikan sa Grafana Labs) ug gisubli ang mga napakyas nga pagsulat pagkahuman sa pagkahagsa.

Giunsa pod ang mga prayoridad sa Kubernetes hinungdan sa downtime sa Grafana Labs
Mga operasyon sa pagsulat sa cluster sa produksiyon

kaplag

Importante nga makat-on gikan niini nga panghitabo ug mohimo sa gikinahanglan nga mga lakang aron malikayan ang pagbalik niini.

Sa paglantaw, dili unta nato ibutang ang default average prayoridad hangtud ang tanan nga Ingesters sa produksyon nakadawat hataas usa ka prayoridad. Dugang pa, gikinahanglan ang pag-atiman kanila daan taas prayoridad. Naayo na ang tanan. Kami nanghinaut nga ang among kasinatian makatabang sa ubang mga organisasyon sa pagkonsiderar sa paggamit pod sa mga prayoridad sa Kubernetes.

Magdugang kami og dugang nga lebel sa kontrol sa pag-deploy sa bisan unsang dugang nga mga butang kansang mga configuration kay global sa cluster. Sugod karon, ang maong mga kausaban paga-assess bΠΎmas daghang tawo. Dugang pa, ang pagbag-o nga hinungdan sa pagkahagsa giisip nga gamay ra kaayo alang sa usa ka bulag nga dokumento sa proyekto - gihisgutan ra kini sa usa ka isyu sa GitHub. Sugod karon, ang tanan nga mga pagbag-o sa mga config pagaubanan sa angay nga dokumentasyon sa proyekto.

Sa katapusan, among i-automate ang pag-resize sa authentication reverse proxy aron mapugngan ang sobra nga OOM nga among nasaksihan, ug susihon ang Prometheus default settings nga may kalabutan sa fallback ug scaling aron mapugngan ang susamang mga isyu sa umaabot.

Ang kapakyasan usab adunay pipila ka mga positibo nga sangputanan: nga nakadawat sa gikinahanglan nga mga kapanguhaan, ang Cortex awtomatikong nakabawi nga wala’y dugang nga interbensyon. Nakakuha usab kami og bililhon nga kasinatian sa pagtrabaho kauban Grafana Loki - among bag-ong log aggregation system - nga nakatabang sa pagsiguro nga ang tanan nga Ingesters milihok sa husto sa panahon ug human sa kapakyasan.

PS gikan sa tighubad

Basaha usab sa among blog:

Source: www.habr.com

Idugang sa usa ka comment