Mga kinahanglanon alang sa pagpalambo sa usa ka aplikasyon sa Kubernetes

Karon nagplano ako nga hisgutan kung giunsa pagsulat ang mga aplikasyon ug kung unsa ang mga kinahanglanon aron ang imong aplikasyon molihok nga maayo sa Kubernetes. Aron wala'y mga labad sa ulo sa aplikasyon, aron dili nimo kinahanglan nga mag-imbento ug magtukod og bisan unsang "mga liki" sa palibot niini - ug ang tanan molihok sa paagi nga gituyo mismo sa Kubernetes.

Kini nga lecture kabahin sa "Slurm Night School sa Kubernetes" Mahimo nimong tan-awon ang bukas nga teoretikal nga mga lektyur sa Evening School sa Youtube, gigrupo sa usa ka playlist. Alang sa mga gusto sa teksto kaysa sa video, among giandam kini nga artikulo.

Ang akong ngalan mao si Pavel Selivanov, karon ako ang nanguna nga DevOps engineer sa Mail.ru Cloud Solutions, naghimo kami mga panganod, naghimo kami nga kubernetes sa pagdumala ug uban pa. Ang akong mga buluhaton karon naglakip sa tabang sa pagpalambo, pagpalupad niini nga mga panganod, pagpalupad sa mga aplikasyon nga among gisulat ug direkta nga pagpalambo sa mga himan nga among gihatag alang sa among mga tiggamit.

Mga kinahanglanon alang sa pagpalambo sa usa ka aplikasyon sa Kubernetes

Nagbuhat ako og DevOps, sa akong hunahuna sa katapusan, tingali, tulo ka tuig. Apan, sa prinsipyo, gibuhat nako ang gibuhat sa DevOps tingali mga lima ka tuig na karon. Sa wala pa kana, kasagaran ako nalambigit sa mga butang sa admin. Nagsugod ako sa pagtrabaho kauban ang Kubernetes dugay na ang milabay - tingali mga upat ka tuig na ang milabay sukad nagsugod ako sa pagtrabaho niini.

Sa kinatibuk-an, nagsugod ko sa dihang ang Kubernetes maoy bersyon 1.3, tingali, ug tingali 1.2 - sa dihang kini bata pa. Karon wala na kini sa iyang pagkamasuso - ug klaro nga adunay dako nga panginahanglan sa merkado alang sa mga inhenyero nga gusto nga makahimo sa Kubernetes. Ug ang mga kompanya adunay taas kaayo nga panginahanglan alang sa ingon nga mga tawo. Busa, sa pagkatinuod, kini nga lecture nagpakita.

Kung musulti kita sumala sa plano sa akong hisgutan, ingon niini, sa mga bracket gisulat (TL;DR) - "taas kaayo; ayaw pagbasa". Ang akong presentasyon karon naglangkob sa walay katapusan nga mga listahan.

Mga kinahanglanon alang sa pagpalambo sa usa ka aplikasyon sa Kubernetes

Sa tinuud, ako mismo dili ganahan sa ingon nga mga presentasyon kung gihimo kini, apan kini usa ka hilisgutan nga sa dihang giandam nako kini nga presentasyon, wala gyud nako nahibal-an kung giunsa ang pag-organisar sa kini nga kasayuran sa lahi nga paagi.

Tungod kay, sa kinatibuk-an, kini nga impormasyon mao ang "ctrl + c, ctrl + v", gikan sa, sa taliwala sa uban nga mga butang, sa atong Wiki sa DevOps nga seksyon, diin kami adunay sinulat nga mga kinahanglanon alang sa mga developers: "guys, aron among ilunsad ang imong aplikasyon sa Kubernetes, kini kinahanglan nga ingon niini."

Mao nga ang presentasyon nahimo nga usa ka dako nga lista. Sorry. I try to tell as much as possible para dili boring kung pwede.

Unsa ang atong tan-awon karon:

  • kini, una, mga log (mga log sa aplikasyon?), kung unsa ang buhaton kanila sa Kubernetes, kung unsa ang buhaton niini, kung unsa sila kinahanglan;
  • unsa ang buhaton sa mga configuration sa Kubernetes, unsa ang pinakamaayo ug pinakagrabe nga mga paagi sa pag-configure sa usa ka aplikasyon alang sa Kubernetes;
  • Atong hisgutan kung unsa ang mga pagsusi sa pagka-access sa kinatibuk-an, kung unsa ang hitsura niini;
  • atong hisgutan kung unsa ang usa ka matahum nga pagsira;
  • maghisgot kita pag-usab mahitungod sa mga kapanguhaan;
  • Atong hikapon ang hilisgutan sa pagtipig sa datos pag-usab;
  • ug sa katapusan isulti ko kanimo kung unsa ang termino niining misteryosong cloud-native nga aplikasyon. Cloudnativeness, isip adhetibo niini nga termino.

Mga troso

Gisugyot ko nga magsugod sa mga troso - diin kini nga mga troso kinahanglan ibutang sa Kubernetes. Karon naglansad ka usa ka aplikasyon sa Kubernetes. Sumala sa mga klasiko, kaniadto ang mga aplikasyon kanunay nagsulat og mga troso sa usa ka lugar sa usa ka file. Ang dili maayo nga mga aplikasyon nagsulat og mga log sa usa ka file sa home directory sa developer nga naglunsad sa aplikasyon. Ang maayo nga mga aplikasyon nagsulat og mga log sa usa ka file sa usa ka lugar /var/log.

Mga kinahanglanon alang sa pagpalambo sa usa ka aplikasyon sa Kubernetes

Tungod niini, dugang pa, ang maayo nga mga administrador adunay pipila ka mga butang nga gi-configure sa ilang mga imprastraktura nga kini nga mga troso mahimong i-rotate - ang parehas nga rsyslog, nga nagtan-aw sa kini nga mga troso ug kung adunay mahitabo kanila, adunay daghan niini, nagmugna kini mga backup nga kopya, nagbutang mga troso didto. , nagtangtang sa daan nga mga file, sobra sa usa ka semana, unom ka bulan ug uban pa. Sa teorya, kinahanglan nga kita adunay mga probisyon aron tungod lang kay ang aplikasyon nagsulat og mga troso, ang luna sa mga production server (combat servers?) dili mahurot. Ug, sa ingon, ang tibuuk nga produksiyon wala mohunong tungod sa mga troso.

Kung mobalhin kami sa kalibutan sa Kubernetes ug magpadagan sa parehas nga butang didto, ang una nga butang nga mahimo nimong hatagan pagtagad mao ang kamatuoran nga ang mga tawo, samtang sila nagsulat og mga log sa usa ka file, nagpadayon sa pagsulat niini.

Mogawas nga kung maghisgot kita bahin sa Kubernetes, ang husto nga lugar aron isulat ang mga troso sa usa ka lugar gikan sa usa ka sudlanan sa pantalan mao ra ang pagsulat niini gikan sa aplikasyon hangtod sa gitawag nga Stdout/Stderr, nga mao, ang standard nga mga sapa sa output sa operating system, ang standard nga error output. Kini ang labing husto, pinakasimple ug labing lohikal nga paagi sa pagbutang sa mga troso sa prinsipyo sa Docker ug ilabi na sa Kubernetis. Tungod kay kung ang imong aplikasyon nagsulat og mga troso sa Stdout/Stderr, naa ra sa Docker ug sa mga Kubernetes add-on aron magdesisyon kung unsa ang buhaton niini nga mga troso. Ang Docker pinaagi sa default magtukod sa mga espesyal nga file niini sa format nga JSON.

Dinhi mitungha ang pangutana, unsay sunod nimong buhaton niining mga troso? Ang labing sayon ​​nga paagi mao ang tin-aw, kita adunay abilidad sa pagbuhat kubectl logs ug tan-awa kining mga troso niining mga "pod". Apan, tingali, kini dili usa ka maayo kaayo nga kapilian - adunay lain nga kinahanglan buhaton sa mga troso.

Sa pagkakaron, maghisgot kita sa samang higayon, tungod kay atong gihikap ang hilisgutan sa mga troso, mahitungod sa usa ka butang nga sama sa hitsura sa mga troso. Kana mao, dili kini direkta nga magamit sa Kubernetes, apan kung magsugod kita sa paghunahuna kung unsa ang buhaton sa mga troso, maayo nga hunahunaon usab kini.

Nagkinahanglan kami og usa ka matang sa himan, sa usa ka maayo nga paagi, nga magkuha niini nga mga troso nga gibutang sa among docker sa mga file niini ug ipadala kini bisan asa. Sa kinatibuk-an, kasagaran kami maglunsad og usa ka matang sa ahente sulod sa Kubernetes sa porma sa DaemonSet - usa ka tigkolekta sa troso, nga yanong gisultihan kung asa nahimutang ang mga troso nga gikolekta ni Docker. Ug kini nga ahente sa pagkolekta yano nga nagdala kanila, tingali bisan sa usa ka paagi nag-parse kanila sa dalan, tingali nagpadato kanila sa pipila ka dugang nga meta-impormasyon ug, sa katapusan, nagpadala kanila alang sa pagtipig bisan diin. Posible na ang mga kalainan didto. Ang labing kasagaran mao tingali ang Elasticsearch, diin mahimo nimong tipigan ang mga troso ug dali nimo kini makuha gikan didto. Dayon, gamit ang usa ka hangyo, gamit ang Kibana, pananglitan, paghimo og mga graph base niini, paghimo og mga alert base niini, ug uban pa.

Ang labing hinungdanon nga ideya, gusto nako nga sublion kini pag-usab, mao nga sa sulod sa Docker, labi na sa sulod sa Kubernetes, ang pagtipig sa imong mga troso sa usa ka file usa ka dili maayo nga ideya.

Tungod kay una, lisud ang pagkuha sa mga troso sa sulod sa sudlanan sa usa ka file. Kinahanglan ka una nga mosulod sa sudlanan, mag-exec didto, ug dayon tan-awa ang mga troso. Ang sunod nga punto mao nga kung ikaw adunay mga troso sa usa ka file, nan ang mga sudlanan kasagaran adunay usa ka minimalist nga palibot ug walay mga utilities nga kasagaran gikinahanglan alang sa normal nga trabaho nga adunay mga troso. Ilubong sila, tan-awa sila, ablihi sila sa usa ka text editor. Ang sunod nga gutlo mao ang kung kita adunay mga log sa usa ka file sa sulod sa usa ka sudlanan, kung kini nga sudlanan matangtang, nahibal-an nimo, ang mga troso mamatay kauban niini. Sumala niini, ang bisan unsang pagsugod pag-usab sa sudlanan nagpasabot nga wala nay mga troso. Pag-usab, dili maayo nga kapilian.

Ug ang katapusan nga punto mao nga sa sulod sa mga sudlanan kasagaran naa nimo ang imong aplikasyon ug mao kana - kasagaran kini ra ang proseso nga nagdagan. Wala’y gisulti bahin sa bisan unsang proseso nga mag-rotate sa mga file gamit ang imong mga troso. Sa diha nga ang mga troso magsugod sa pagsulat ngadto sa usa ka file, kini nagpasabot nga, pasayloa ako, kita magsugod sa pagkawala sa produksyon server. Tungod kay, una, lisud kini pangitaon, wala’y nagsubay niini, ug wala’y nagkontrol kanila - sumala niana, ang file motubo nga walay katapusan hangtod nga mahurot na ang wanang sa server. Busa, giingon ko pag-usab nga ang pag-log in sa Docker, labi na sa Kubernetes, sa usa ka file usa ka dili maayo nga ideya.

Ang sunod nga punto, dinhi gusto nako nga hisgutan kini pag-usab - tungod kay naghisgot kami bahin sa hilisgutan sa mga troso, maayo nga hisgutan kung unsa ang hitsura sa mga troso aron mahimo kini nga kombenyente sa pagtrabaho uban kanila. Sama sa akong giingon, ang hilisgutan dili direktang may kalabutan sa Kubernetes, apan kini adunay kalabutan sa hilisgutan sa DevOps. Sa hilisgutan sa kultura sa pag-uswag ug panaghigalaay tali niining duha ka lainlaing mga departamento - Dev ug Ops, aron ang tanan komportable.

Kini nagpasabut nga sa labing maayo, karon, ang mga troso kinahanglan isulat sa format nga JSON. Kung ikaw adunay pipila ka dili masabtan nga aplikasyon sa imong kaugalingon, nga nagsulat sa mga troso sa dili masabtan nga mga format tungod kay imong gisal-ot ang usa ka matang sa pag-imprinta o usa ka butang nga sama niana, nan kini ang panahon sa google sa usa ka matang sa gambalay, usa ka matang sa wrapper nga nagtugot kanimo sa pagpatuman sa normal nga pag-log; i-enable ang logging parameters sa JSON didto, tungod kay ang JSON usa ka yano nga format, ang pag-parse niini yano ra.

Kung ang imong JSON dili molihok sumala sa pipila nga mga pamatasan, wala’y nahibal-an kung unsa, nan labing menos isulat ang mga troso sa usa ka format nga mahimong ma-parse. Dinhi, hinoon, angay nga hunahunaon ang kamatuoran nga, pananglitan, kung nagdagan ka usa ka hugpong sa mga sudlanan o nagproseso lang gamit ang nginx, ug ang matag usa adunay kaugalingon nga mga setting sa pag-log, nan kini tingali ingon nga dili kaayo komportable alang kanimo. parse kanila. Tungod kay alang sa matag bag-ong pananglitan sa nginx kinahanglan nimo nga isulat ang imong kaugalingon nga parser, tungod kay lahi ang ilang pagsulat sa mga troso. Sa makausa pa, tingali angayan nga hunahunaon ang pagsiguro nga ang tanan nga mga kaso sa nginx adunay parehas nga pagsumpo sa pag-log ug gisulat ang tanan nilang mga troso nga hingpit nga parehas. Ang sama nga magamit sa hingpit sa tanan nga mga aplikasyon.

Sa katapusan, gusto usab nako nga idugang ang sugnod sa kalayo nga, sa tinuud, kinahanglan nga likayan ang mga multi-line format nga mga troso. Ania ang butang, kung nagtrabaho ka sa mga tigkolekta sa troso, nan lagmit nga nakita nimo kung unsa ang ilang gisaad kanimo, nga mahimo silang magtrabaho uban ang daghang linya nga mga troso, nahibal-an kung giunsa kini pagkolekta, ug uban pa. Sa tinuud, sa akong opinyon, wala’y bisan usa ka kolektor karon nga makakolekta og daghang linya nga mga troso nga normal, hingpit ug wala’y mga sayup. Sa tawhanon nga paagi, aron kini sayon ​​ug walay sayop.

Mga kinahanglanon alang sa pagpalambo sa usa ka aplikasyon sa Kubernetes

Apan ang stack trace kanunay nga multi-line nga mga troso ug unsaon paglikay niini. Ang pangutana dinhi mao nga ang usa ka log usa ka rekord sa usa ka panghitabo, ug ang stactrace dili usa ka log. Kung mangolekta kami og mga troso ug ibutang kini sa usa ka dapit sa Elasticsearch ug dayon magdrowing og mga graph gikan niini, maghimo og pipila ka mga report sa kalihokan sa user sa imong site, unya kung makakuha ka og stack trace, nagpasabot kini nga adunay wala damha nga nahitabo. Ug makatarunganon nga awtomatiko nga mag-upload og usa ka stack trace sa usa ka sistema nga makasubay niini.

Kini ang software (sama nga Sentry) nga gihimo nga espesipiko aron magamit ang stack trace. Makahimo dayon kini og mga automated nga buluhaton, i-assign kini sa usa ka tawo, alerto kung mahitabo ang mga stacttraces, grupo kini nga mga stacttraces sa usa ka tipo, ug uban pa. Sa prinsipyo, dili kaayo makatarunganon ang paghisgot bahin sa mga stactraces kung maghisgot kita bahin sa mga troso, tungod kay kini, pagkahuman, lainlaing mga butang nga adunay lainlaing katuyoan.

Pagsalig

Sunod naghisgot kami bahin sa pag-configure sa Kubernetes: kung unsa ang buhaton niini ug kung giunsa ang pag-configure sa mga aplikasyon sa sulod sa Kubernetes. Sa kinatibuk-an, kasagaran akong isulti nga ang Docker dili bahin sa mga sudlanan. Nahibal-an sa tanan nga ang Docker bahin sa mga sulud, bisan kadtong wala kaayo nagtrabaho sa Docker. Akong sublion, ang Docker dili bahin sa mga sudlanan.

Ang Docker, sa akong opinyon, bahin sa mga sumbanan. Ug adunay mga sumbanan alang sa halos tanan: mga sumbanan sa pagtukod sa imong aplikasyon, mga sumbanan sa pag-install sa imong aplikasyon.

Mga kinahanglanon alang sa pagpalambo sa usa ka aplikasyon sa Kubernetes

Ug kini nga butang - gigamit namon kini kaniadto, labi na kini nga nahimong popular sa pag-abut sa mga sudlanan - kini nga butang gitawag nga ENV (environment) nga mga variable, nga mao, mga variable sa palibot nga naa sa imong operating system. Kini sa kasagaran usa ka sulundon nga paagi sa pag-configure sa imong aplikasyon, tungod kay kung ikaw adunay mga aplikasyon sa JAVA, Python, Go, Perl, idili sa Dios, ug silang tanan makabasa sa database host, database user, database password variables, nan kini sulundon. Adunay ka mga aplikasyon sa upat ka lainlaing mga sinultian nga na-configure sa plano sa database sa parehas nga paagi. Wala nay lainlain nga mga config.

Ang tanan mahimong ma-configure gamit ang mga variable sa ENV. Kung maghisgot kita bahin sa Kubernetes, adunay usa ka maayo nga paagi aron ipahayag ang mga variable sa ENV sa sulod mismo sa Deployment. Tungod niini, kung naghisgot kita bahin sa sekreto nga datos, nan mahimo dayon natong iduso ang sekreto nga datos gikan sa mga variable sa ENV (mga password ngadto sa mga database, ug uban pa) ngadto sa usa ka sekreto, paghimo og sekreto nga cluster ug ipakita sa paghulagway sa ENV sa Deployment nga dili kita direkta nga nagpahayag ang bili niini nga variable, ug ang bili niini nga database password variable mabasa gikan sa sekreto. Kini ang sukaranan nga pamatasan sa Kubernetes. Ug kini ang labing sulundon nga kapilian sa pag-configure sa imong mga aplikasyon. Sa lebel sa code, kini usab magamit sa mga developer. Kung DevOps ka, makapangutana ka: "Mga lalaki, palihug tudloi ang imong aplikasyon sa pagbasa sa mga variable sa palibot. Ug kitang tanan magmalipayon.”

Kung ang tanan sa kompanya nagbasa sa parehas nga ginganlan nga mga variable sa palibot, nan maayo kana. Aron dili mahitabo nga ang uban naghulat sa database sa mga postgres, ang uban naghulat sa ngalan sa database, ang uban naghulat sa laing butang, ang uban naghulat sa usa ka dbn sa usa ka matang, aron, sumala niana, adunay pagkaparehas.

Ang problema moabut kung ikaw adunay daghang mga variable sa palibot nga imong giablihan ang Deployment - ug adunay lima ka gatus nga linya sa mga variable sa palibot. Sa kini nga kaso, igo ra nimo ang mga variable sa palibot - ug dili na nimo kinahanglan nga sakiton ang imong kaugalingon. Sa kini nga kaso, makatarunganon nga magsugod sa paggamit sa mga config. Kana mao, pagbansay sa imong aplikasyon sa paggamit sa mga config.

Ang pangutana ra kay ang mga config dili ang imong gihunahuna. Ang Config.pi dili usa ka config nga sayon ​​gamiton. O pipila ka config sa imong kaugalingon nga format, alternatibong regalo - dili usab kini ang config nga akong gipasabut.

Ang akong gihisgutan mao ang pag-configure sa madawat nga mga format, nga mao, ang labing popular nga sumbanan mao ang .yaml nga sumbanan. Klaro kung giunsa kini pagbasa, mabasa kini sa tawo, klaro kung giunsa kini pagbasa gikan sa aplikasyon.

Tungod niini, dugang pa sa YAML, mahimo usab nimo, pananglitan, mogamit sa JSON, ang pag-parse hapit sama ka kombenyente sa YAML sa mga termino sa pagbasa sa pagsumpo sa aplikasyon gikan didto. Kini mao ang mamatikdan nga mas inconvenient alang sa mga tawo sa pagbasa. Mahimo nimong sulayan ang format, a la ini. Kini sayon ​​​​nga basahon, gikan sa panglantaw sa tawo, apan kini mahimong dili kombenyente sa pagproseso niini nga awtomatiko, sa diwa nga kung gusto nimo nga maghimo sa imong kaugalingon nga mga config, ang ini nga format mahimong dili kombenyente sa paghimo.

Apan sa bisan unsa nga kaso, bisan unsa nga format nga imong pilion, ang punto mao nga gikan sa Kubernetes punto sa panglantaw kini mao ang kaayo sayon. Mahimo nimong ibutang ang imong tibuok nga config sulod sa Kubernetes, sa ConfigMap. Ug dayon kuhaa kini nga configmap ug hangyoa kini nga i-mount sa sulod sa imong pod sa usa ka piho nga direktoryo, diin ang imong aplikasyon magbasa sa pagsumpo gikan sa kini nga configmap ingon nga kini usa ra ka file. Kini, sa tinuud, mao ang maayong buhaton kung adunay ka daghang mga kapilian sa pag-configure sa imong aplikasyon. O kini usa ka matang sa komplikado nga istruktura, adunay salag.

Kung ikaw adunay usa ka configmap, nan mahimo nimo nga itudlo ang imong aplikasyon, pananglitan, aron awtomatiko nga masubay ang mga pagbag-o sa file diin gi-mount ang configmap, ug awtomatiko usab nga i-reload ang imong aplikasyon kung magbag-o ang mga config. Kini sa kasagaran usa ka sulundon nga kapilian.

Sa makausa pa, nahisgotan na nako kini - ang sekreto nga impormasyon wala sa configmap, ang sekreto nga impormasyon wala sa mga variable, ang sekreto nga impormasyon wala sa sekreto. Gikan didto, ikonektar kining sekretong impormasyon ngadto sa diplomasya. Kasagaran gitipigan namon ang tanan nga mga paghulagway sa mga butang sa Kubernetes, pag-deploy, mga configmap, serbisyo sa git. Tungod niini, ang pagbutang sa password sa database sa git, bisan kung kini ang imong git, nga naa nimo sa sulod sa kompanya, usa ka dili maayo nga ideya. Tungod kay, sa labing gamay, ang git nahinumdom sa tanan ug yano nga pagtangtang sa mga password gikan didto dili kadali.

Pagsusi sa panglawas

Ang sunod nga punto mao kining butang nga gitawag og Health check. Sa kinatibuk-an, ang usa ka Health check kay yano nga pagsusi kung ang imong aplikasyon nagtrabaho. Sa parehas nga oras, kanunay namon nga naghisgot bahin sa pipila nga mga aplikasyon sa web, diin, sa ingon, gikan sa punto sa pagtan-aw sa pagsusi sa kahimsog (mas maayo nga dili maghubad dinhi ug dugang pa) kini usa ka espesyal nga URL, nga ilang giproseso ingon usa ka sumbanan, kasagaran nilang buhaton /health.

Kung gi-access kini nga URL, sumala niana, ang among aplikasyon nag-ingon nga "oo, okay, maayo ang tanan kanako, 200" o "dili, dili maayo ang tanan kanako, mga 500." Tungod niini, kung ang among aplikasyon dili http, dili usa ka aplikasyon sa web, naghisgot kami karon bahin sa usa ka matang sa daemon, mahimo naton mahibal-an kung giunsa ang paghimo sa mga pagsusi sa kahimsog. Sa ato pa, dili kinahanglan, kung ang aplikasyon dili http, nan ang tanan molihok nga wala’y pagsusi sa kahimsog ug dili kini mahimo sa bisan unsang paagi. Mahimo nimong i-update matag karon ug unya ang pipila ka kasayuran sa file, mahimo ka maghimo usa ka espesyal nga mando alang sa imong daemon, sama sa, daemon status, nga moingon "oo, ang tanan maayo, ang daemon nagtrabaho, kini buhi."

Para sa unsa kini? Ang una ug labing klaro nga butang mao tingali kung ngano nga gikinahanglan ang usa ka pagsusi sa kahimsog - aron masabtan nga ang aplikasyon nagtrabaho. I mean, tanga lang, kung naa na karon murag muandar na, para makasiguro ka nga mugana. Ug kini nahimo nga ang aplikasyon nagdagan, ang sudlanan nagdagan, ang pananglitan nagtrabaho, ang tanan maayo - ug pagkahuman giputol na sa mga tiggamit ang tanan nga mga numero sa telepono gikan sa teknikal nga suporta ug giingon nga "unsa ka ..., ikaw natulog, walay nagtrabaho.”

Ang usa ka pagsusi sa kahimsog usa ra ka paagi aron makita gikan sa punto sa pagtan-aw sa tiggamit nga kini molihok. Usa sa mga pamaagi. Atong ibutang kini nga paagi. Gikan sa punto sa panglantaw sa Kubernetes, kini usa usab ka paagi aron masabtan kung kanus-a magsugod ang aplikasyon, tungod kay nahibal-an namon nga adunay kalainan tali sa kung kanus-a gilusad, gimugna ug gisugdan ang sudlanan, ug kung kanus-a gilunsad ang aplikasyon direkta sa kini nga sudlanan. Tungod kay kung magkuha kami usa ka kasagaran nga aplikasyon sa java ug sulayan nga ilunsad kini sa pantalan, pagkahuman sa kap-atan ka segundo, o bisan usa ka minuto, o bisan napulo, mahimo kini magsugod nga maayo. Sa kini nga kaso, mahimo nimo labing menos manuktok sa mga pantalan niini, dili kini motubag didto, nga mao, dili pa kini andam nga makadawat sa trapiko.

Sa makausa pa, sa tabang sa usa ka health check ug sa tabang sa kamatuoran nga kita milingi dinhi, atong masabtan sa Kubernetes nga dili lang usa ka sudlanan ang misaka sa aplikasyon, apan ang aplikasyon mismo nagsugod na, kini mitubag na sa health check, nga nagpasabot nga kita makapadala sa trapiko didto.

Mga kinahanglanon alang sa pagpalambo sa usa ka aplikasyon sa Kubernetes

Ang akong gihisgutan karon mao ang gitawag nga Readiness/Liveness nga mga pagsulay sulod sa Kubernetes; busa, ang among mga pagsulay sa pagkaandam maoy responsable sa pagkaanaa sa aplikasyon sa pagbalanse. Kana mao, kung ang mga pagsulay sa pagkaandam gihimo sa aplikasyon, nan ang tanan ok, ang trapiko sa kliyente moadto sa aplikasyon. Kung ang mga pagsulay sa pagkaandam wala gihimo, nan ang aplikasyon wala gyud moapil, kini nga partikular nga higayon wala moapil sa pagbalanse, gikuha kini gikan sa pagbalanse, ug ang trapiko sa kliyente dili modagayday. Subay niini, gikinahanglan ang Liveness nga mga pagsulay sulod sa Kubernetes aron kung ma-stuck ang aplikasyon, mahimo kining i-restart. Kung ang liveness test dili molihok alang sa usa ka aplikasyon nga gideklarar sa Kubernetes, nan ang aplikasyon dili lang tangtangon gikan sa pagbalanse, kini gi-restart.

Ug aniay usa ka importante nga punto nga gusto nakong hisgutan: gikan sa praktikal nga punto sa panglantaw, ang pagsulay sa pagkaandam kasagarang gigamit nga mas kanunay ug mas kanunay gikinahanglan kay sa pagsulay sa liveness. Kana mao, sa walay paghunahuna nga pagpahayag sa mga pagsulay sa kaandam ug kabuhong, tungod kay mahimo kana sa Kubernetes, ug gamiton nato ang tanan nga mahimo niini, dili kaayo maayo nga ideya. Pasabton ko kung ngano. Tungod kay ang punto nga ikaduha sa pagsulay mao nga maayo nga ideya nga susihon ang nagpahiping serbisyo sa imong mga pagsusi sa kahimsog. Kini nagpasabot nga kung ikaw adunay usa ka web application nga naghatag sa pipila ka impormasyon, nga sa baylo kini, natural, kinahanglan kuhaon gikan sa usa ka dapit. Sa usa ka database, pananglitan. Aw, gitipigan niini ang kasayuran nga moabut sa kini nga REST API sa parehas nga database. Dayon, sumala niana, kung ang imong healthcheck motubag sama sa gikontak nga slashhealth, ang aplikasyon nag-ingon "200, okay, ang tanan maayo," ug sa samang higayon ang database sa imong aplikasyon dili ma-access, ug ang healthcheck nga aplikasyon nag-ingon "200, okay, ang tanan maayo. ” - Kini usa ka dili maayo nga pagsusi sa kahimsog. Dili kini kung giunsa kini molihok.

Kana mao, ang imong aplikasyon, kung ang usa ka hangyo moabut niini /health, kini dili lang motubag, "200, ok", kini una nga moadto, pananglitan, ngadto sa database, naningkamot sa pagkonektar niini, naghimo sa usa ka butang nga basic kaayo didto, sama sa pagpili sa usa, susiha lang nga adunay koneksyon sa database ug mahimo nimong pangutana ang database. Kung kining tanan malampuson, nan ang tubag mao ang "200, ok." Kung dili kini malampuson, kini nag-ingon nga adunay usa ka sayup, ang database dili magamit.

Busa, niining bahina, mobalik ako pag-usab sa mga pagsulay sa Pagkaandam/Pagkinabuhi - ngano nga lagmit kinahanglan nimo ang usa ka pagsulay sa pagkaandam, apan usa ka pagsulay sa liveness ang gipangutana. Tungod kay kung imong ihulagway ang mga tseke sa kahimsog nga eksakto sama sa akong giingon, nan kini mogawas nga dili kini magamit sa bahin sa pananglitanв или со всех instancesa usa ka database, pananglitan. Kung gideklarar nimo ang usa ka pagsulay sa pagkaandam, ang among mga pagsusi sa kahimsog nagsugod nga napakyas, ug sa ingon ang tanan nga mga aplikasyon nga gikan diin ang database dili ma-access, sila yano nga gipalong gikan sa pagbalanse ug sa tinuud "nagbitay" sa usa ka napasagdan nga kahimtang ug naghulat sa ilang mga database trabaho.

Kung nagdeklarar kami og liveness test, unya hunahunaa, ang among database naguba, ug sa imong Kubernetes katunga sa tanan nagsugod sa pagsugod pag-usab tungod kay napakyas ang liveness test. Kini nagpasabut nga kinahanglan nimo nga i-restart. Dili kini ang imong gusto, bisan ako adunay personal nga kasinatian sa praktis. Kami adunay usa ka aplikasyon sa chat nga gisulat sa JS ug gipakaon sa database sa Mongo. Ug ang problema mao nga kini sa sinugdanan sa akong trabaho sa Kubernetes, among gihulagway ang kaandam, kabuhong sa mga pagsulay sa prinsipyo nga mahimo kini sa Kubernetes, mao nga among gamiton kini. Tungod niini, sa usa ka punto si Mongo nahimong usa ka gamay nga "dull" ug ang sample nagsugod sa pagkapakyas. Tungod niini, sumala sa pagsulay sa ulan, ang mga pod nagsugod sa "pagpatay".

Sama sa imong nasabtan, kung sila "gipatay", kini usa ka chat, nga mao, adunay daghang mga koneksyon gikan sa mga kliyente nga nagbitay niini. "Gipatay" usab sila - dili, dili mga kliyente, mga koneksyon lamang - dili tanan sa parehas nga oras, ug tungod sa kamatuoran nga wala sila gipatay sa parehas nga oras, ang uban sa sayo pa, ang uban sa ulahi, dili sila magsugod sa parehas. panahon. Dugang pa sa standard random, dili namo matag-an uban sa millisecond nga katukma ang oras sa pagsugod sa aplikasyon matag higayon, mao nga ila kining buhaton sa usa ka higayon matag higayon. Ang usa ka infospot mobangon, gidugang sa pagbalanse, ang tanan nga mga kliyente moabut didto, dili kini makasugakod sa ingon nga karga, tungod kay kini nag-inusara, ug, sa halos pagsulti, adunay usa ka dosena kanila nga nagtrabaho didto, ug kini nahulog. Ang sunod nga mobangon, ang tibuok nga karga anaa kaniya, siya usab mahulog. Aw, kini nga mga busay nagpadayon sa pagdagayday. Sa katapusan, kung giunsa kini nasulbad - kinahanglan lang namon nga higpitan nga hunongon ang trapiko sa gumagamit sa kini nga aplikasyon, tugoti ang tanan nga mga higayon nga mobangon ug dayon sugdan ang tanan nga trapiko sa tiggamit sa usa ka higayon aron kini naapod-apod na sa tanan nga napulo ka mga higayon.

Kung dili tungod sa kini nga pagsulay sa liveness nga gipahibalo, nga magpugos sa tanan nga i-restart, ang aplikasyon mahimo ra nga madumala kini. Apan ang tanan gikan sa pagbalanse gi-disable alang kanamo, tungod kay ang mga database dili ma-access ug ang tanan nga mga tiggamit "nahulog". Dayon, kung kini nga database mahimong magamit, ang tanan gilakip sa pagbalanse, apan ang mga aplikasyon dili kinahanglan nga magsugod pag-usab, ug dili kinahanglan nga mag-usik sa oras ug mga kapanguhaan niini. Naa na sila tanan, andam na sila sa trapiko, mao nga abli lang ang trapiko, maayo ang tanan - naa ang aplikasyon, nagpadayon ang tanan.

Busa, ang kaandam ug liveness pagsulay lain-laing mga, bisan pa, nga imong mahimo theoretically sa pagbuhat sa lain-laing mga health checks, usa ka matang radii, usa ka matang sa liv, alang sa panig-ingnan, ug check lain-laing mga butang. Atol sa mga pagsulay sa pagkaandam, susiha ang imong mga backend. Ug sa usa ka liveness test, pananglitan, dili nimo susihon gikan sa punto sa panglantaw nga ang liveness test sa kasagaran usa lamang ka aplikasyon nga nagtubag, kung kini makahimo sa pagtubag sa tanan.

Tungod kay ang pagsulay sa kabuhong, sa kinatibuk-an, mao ang kung kita "nasuko." Usa ka walay katapusan nga loop nagsugod o lain pa - ug wala nay mga hangyo nga giproseso. Busa, makatarunganon nga ibulag sila - ug ipatuman ang lainlaing lohika sa kanila.

Mahitungod sa kung unsa ang kinahanglan nimo nga itubag kung adunay ka pagsulay, kung maghimo ka mga pagsusi sa kahimsog. Sakit lang gyud. Kadtong pamilyar niini tingali mokatawa - apan seryoso, nakakita ako og mga serbisyo sa akong kinabuhi nga nagtubag sa "200" sa XNUMX% sa mga kaso. Sa ato pa, kinsay malamposon. Apan sa samang higayon sa lawas sa tubag gisulat nila ang "ingon ug ingon niana nga sayup."

Kana mao, ang kahimtang sa tubag moabut kanimo - ang tanan malampuson. Apan sa parehas nga oras, kinahanglan nimo nga i-parse ang lawas, tungod kay ang lawas nag-ingon nga "pasensya, ang hangyo natapos sa usa ka sayup" ug kini usa ka kamatuoran. Nakita nako kini sa tinuod nga kinabuhi.

Ug aron ang pipila ka mga tawo dili makit-an kini nga kataw-anan, ug ang uban nakakaplag niini nga sakit kaayo, takus gihapon kini nga sundon ang usa ka yano nga lagda. Sa mga pagsusi sa kahimsog, ug sa prinsipyo kung nagtrabaho kauban ang mga aplikasyon sa web.

Kung maayo ang tanan, dayon tubaga ang duha ka gatos nga tubag. Sa prinsipyo, ang bisan unsang duha ka gatos nga tubag mohaum kanimo. Kung maayo kaayo ang imong pagbasa ug nahibal-an nimo nga ang ubang mga status sa pagtubag lahi sa uban, tubaga ang angay: 204, 5, 10, 15, bisan unsa. Kung dili kaayo maayo, nan "duha ka zero zero." Kung dili maayo ang tanan ug dili motubag ang pagsusi sa kahimsog, tubaga ang bisan unsang lima ka gatos. Sa makausa pa, kung nakasabut ka kung giunsa pagtubag, kung giunsa ang lainlaing mga kahimtang sa pagtubag magkalainlain sa usag usa. Kung dili nimo masabtan, ang 502 ang imong kapilian sa pagtubag sa mga pagsusi sa kahimsog kung adunay sayup.

Kini usa pa ka punto, gusto nako nga ibalik ang gamay bahin sa pagsusi sa nagpahiping mga serbisyo. Kung magsugod ka, pananglitan, susihon ang tanan nga nagpahiping mga serbisyo nga nagbarug sa luyo sa imong aplikasyon - tanan sa kinatibuk-an. Kung unsa ang among makuha gikan sa punto sa panan-aw sa arkitektura sa microservice, kami adunay usa ka konsepto nga "ubos nga pagdugtong" - kana, kung ang imong mga serbisyo gamay ra nga nagsalig sa usag usa. Kung ang usa kanila mapakyas, ang tanan nga wala niini nga pag-andar magpadayon nga molihok. Ang pipila sa mga pag-andar dili gyud molihok. Tungod niini, kung imong ihigot ang tanan nga mga pagsusi sa kahimsog sa usag usa, unya adunay usa ka butang nga nahulog sa imprastraktura, ug tungod kay nahulog kini, ang tanan nga mga pagsusi sa kahimsog sa tanan nga mga serbisyo nagsugod usab nga mapakyas - ug adunay daghang mga imprastraktura sa kinatibuk-an alang sa tibuok microservice nga arkitektura No. Mingitngit ang tanan didto.

Busa, gusto nako nga sublion kini pag-usab nga kinahanglan nimo nga susihon ang nagpahiping mga serbisyo, kung wala ang imong aplikasyon sa usa ka gatos nga porsyento sa mga kaso dili mahimo ang trabaho niini. Kana mao, makatarunganon nga kung ikaw adunay usa ka REST API diin ang tiggamit makatipig sa database o makuha gikan sa database, nan kung wala ang usa ka database, dili ka makagarantiya nga magtrabaho sa imong mga tiggamit.

Apan kung ang imong mga tiggamit, kung imong kuhaon sila gikan sa database, dugang nga gipadato sa ubang metadata, gikan sa lain nga backend, nga imong gisulod sa wala pa magpadala usa ka tubag sa frontend - ug kini nga backend dili magamit, kini nagpasabut nga imong gihatag ang imong tubag nga walay bisan unsang bahin sa metadata.

Sunod, aduna usab kami usa sa mga masakit nga isyu sa paglansad sa mga aplikasyon.

Sa tinuud, dili lamang kini magamit sa mga Kubernetes sa kadaghanan; nahitabo nga ang kultura sa usa ka matang sa pag-uswag sa masa ug labi na ang DevOps nagsugod sa pagkaylap sa parehas nga oras sa mga Kubernetes. Busa, sa kinatibuk-an, kini nahimo nga kinahanglan nimo nga maayo nga pagsira sa imong aplikasyon nga wala ang Kubernetes. Bisan sa wala pa ang Kubernetes, gibuhat kini sa mga tawo, apan sa pag-abut sa Kubernetes, nagsugod kami sa paghisgot bahin niini sa kadaghanan.

Nindot nga Pagsira

Sa kinatibuk-an, unsa ang Graceful Shutdown ug nganong gikinahanglan kini? Mahitungod kini kung ang imong aplikasyon nahagsa tungod sa usa ka hinungdan, kinahanglan nimo nga buhaton app stop - o nakadawat ka, pananglitan, usa ka signal gikan sa operating system, kinahanglan nga masabtan kini sa imong aplikasyon ug buhaton ang usa ka butang bahin niini. Ang pinakagrabe nga senaryo sa kaso, siyempre, mao kung ang imong aplikasyon makadawat usa ka SIGTERM ug sama sa "SIGTERM, magpadayon kita, magtrabaho, wala’y mahimo." Kini usa ka dili maayo nga kapilian.

Mga kinahanglanon alang sa pagpalambo sa usa ka aplikasyon sa Kubernetes

Ang usa ka halos parehas nga dili maayo nga kapilian mao kung ang imong aplikasyon makadawat usa ka SIGTERM ug sama sa "ingon nila nga segterm, kana nagpasabut nga matapos na kami, wala pa nako nakita, wala ko kaila sa bisan unsang mga hangyo sa gumagamit, wala ko kahibalo kung unsang klase sa Ang mga hangyo nga akong gitrabaho karon, giingon nila nga SIGTERM, nagpasabut kana nga matapos na naton " Kini usab usa ka dili maayo nga kapilian.

Unsang kapilian ang maayo? Ang una nga punto mao ang pagkonsiderar sa pagkompleto sa mga operasyon. Ang usa ka maayong kapilian mao nga ang imong server magkonsiderar gihapon kung unsa ang buhaton kung makadawat kini usa ka SIGTERM.

Ang SIGTERM usa ka soft shutdown, kini espesyal nga gidisenyo, kini mahimong ma-intercept sa lebel sa code, kini maproseso, ingon nga karon, paghulat, una nato nga tapuson ang trabaho nga naa nato, unya kita mogawas.

Gikan sa panan-aw sa Kubernetes, kini ang hitsura. Sa diha nga kita moingon ngadto sa usa ka pod nga nagdagan sa Kubernetes cluster, "palihug hunong, lakaw," o kita restarted, o usa ka update mahitabo sa diha nga ang Kubernetes sa pag-usab sa mga pods, Kubernetes nagpadala lamang sa sama nga SIGTERM nga mensahe ngadto sa pod, naghulat alang sa pipila ka mga panahon, ug, kini ang panahon nga siya naghulat, kini usab gi-configure, adunay usa ka espesyal nga parameter sa mga diploma ug kini gitawag nga Graceful ShutdownTimeout. Sama sa imong nasabtan, wala kini gitawag nga alang sa wala, ug dili alang sa bisan unsa nga atong gihisgutan karon.

Dinhi mahimo namon nga espesipikong isulti kung unsa ka dugay kami kinahanglan nga maghulat tali sa oras nga among ipadala ang SIGTERM sa aplikasyon ug kung nahibal-an namon nga ang aplikasyon ingon og nabuang sa usa ka butang o "na-stuck" ug dili matapos - ug kinahanglan namon nga ipadala kini SIGKILL, nga mao, lisud nga pagkompleto sa iyang trabaho. Kana mao, sumala niana, kami adunay usa ka matang sa daemon nga nagdagan, kini nagproseso sa mga operasyon. Nasabtan namo nga sa kasagaran ang among mga operasyon nga gigamit sa daemon dili molungtad og sobra sa 30 segundos sa usa ka higayon. Tungod niini, sa pag-abot sa SIGTERM, atong masabtan nga ang atong daemon mahimo, sa labing daghan, makahuman 30 segundos human sa SIGTERM. Gisulat namo kini, pananglitan, 45 segundos para lang sa kaso ug isulti kana nga SIGTERM. Human niana maghulat kami ug 45 segundos. Sa teoriya, niining panahona ang demonyo kinahanglan nga nakahuman sa iyang trabaho ug natapos ang iyang kaugalingon. Apan kung kalit nga dili kini mahimo, kini nagpasabut nga kini lagmit nga na-stuck-dili na kini normal nga pagproseso sa among mga hangyo. Ug sa 45 segundos mahimo nimo nga luwas, sa tinuud, malansang siya.

Ug dinhi, sa tinuud, bisan ang 2 nga mga aspeto mahimong mahunahuna. Una, sabta nga kung nakadawat ka usa ka hangyo, nagsugod ka sa pagtrabaho niini sa usa ka paagi ug wala maghatag tubag sa tiggamit, apan nakadawat ka SIGTERM, pananglitan. Makataronganon ang pagpino niini ug paghatag og tubag sa tiggamit. Kini ang numero uno bahin niini. Ang ikaduha nga punto dinhi mao nga kung magsulat ka sa imong kaugalingon nga aplikasyon, sa kasagaran magtukod sa arkitektura sa paagi nga makadawat ka usa ka hangyo alang sa imong aplikasyon, unya magsugod ka usa ka trabaho, magsugod sa pag-download sa mga file gikan sa bisan diin, pag-download sa database, ug unsa pa. - Nga. Sa kinatibuk-an, ang imong user, ang imong hangyo nagbitay sulod sa tunga sa oras ug naghulat kanimo sa pagtubag kaniya - unya, lagmit, kinahanglan nimo nga magtrabaho sa arkitektura. Kana mao, tagda lang bisan ang sentido komon nga kung mubo ra ang imong mga operasyon, nan makatarunganon nga ibaliwala ang SIGTERM ug usbon kini. Kung dugay ang imong mga operasyon, nan wala’y hinungdan nga ibaliwala ang SIGTERM sa kini nga kaso. Makataronganon ang pagdesinyo pag-usab sa arkitektura aron malikayan ang ingon ka taas nga mga operasyon. Aron ang mga tiggamit dili lang mag-istambay ug maghulat. I don't know, paghimo ug websocket diha, paghimo ug reverse hooks nga ipadala na sa imong server ngadto sa kliyente, bisan unsa pa, pero ayaw pugsa ang user sa pagbitay sulod sa tunga sa oras ug paghulat lang og session hangtod nimo. tubaga siya. Tungod kay dili matag-an kung asa kini mabuak.

Kung matapos na ang imong aplikasyon, kinahanglan ka maghatag ug angay nga exit code. Kana mao, kung ang imong aplikasyon gihangyo sa pagsira, paghunong, ug kini nakahimo sa paghunong sa kaugalingon nga normal, nan dili nimo kinahanglan nga ibalik ang usa ka matang sa exit code 1,5,255 ug uban pa. Ang bisan unsang butang nga dili zero code, labing menos sa mga sistema sa Linux, sigurado ako niini, giisip nga wala magmalampuson. Sa ato pa, giisip nga ang imong aplikasyon sa kini nga kaso natapos sa usa ka sayup. Tungod niini, sa usa ka mahigalaon nga paagi, kung ang imong aplikasyon nahuman nga wala’y sayup, giingon nimo ang 0 sa output. Kung napakyas ang imong aplikasyon sa usa ka hinungdan, giingon nimo nga dili 0 sa output. Ug mahimo nimong buhaton kini nga kasayuran.

Ug ang katapusan nga kapilian. Dili maayo kung ang imong tiggamit magpadala usa ka hangyo ug magbitay sulod sa tunga sa oras samtang imong giproseso kini. Apan sa kinatibuk-an, gusto ko usab nga isulti kung unsa ang kasagaran nga kantidad gikan sa bahin sa kliyente. Dili igsapayan kung ikaw adunay usa ka mobile application, front-end, ug uban pa. Kinahanglan nga tagdon nga sa kinatibuk-an ang sesyon sa tiggamit mahimong mahunong, bisan unsa ang mahitabo. Mahimong ipadala ang usa ka hangyo, pananglitan, wala giproseso ug wala’y tubag nga gibalik. Ang imong frontend o ang imong mobile application - bisan unsa nga frontend sa kinatibuk-an, ibutang nato kini sa ingon - kinahanglan nga tagdon kini. Kung nagtrabaho ka sa mga websocket, kasagaran kini ang pinakagrabe nga kasakit nga akong nasinati sukad.

Kung ang mga nag-develop sa pipila ka mga regular nga chat wala mahibal-an nga, kini nahimo, ang websocket mahimong mabuak. Alang kanila, kung adunay mahitabo sa proxy, usbon lang namo ang config, ug kini mag-reload. Natural, ang tanan nga dugay na nga mga sesyon gisi sa kini nga kaso. Ang mga developers midagan ngadto kanamo ug moingon: "Guys, unsa ang imong gibuhat, ang chat naguba alang sa tanan namong mga kliyente!" Giingnan namo sila: “Unsay imong gibuhat? Dili ba makakonektar pag-usab ang imong mga kliyente? Miingon sila: "Dili, kinahanglan namon ang mga sesyon nga dili gub-on." Sa laktod, kini tinuod nga walay pulos. Kinahanglan nga tagdon ang bahin sa kliyente. Ilabi na, sama sa akong giingon, nga adunay dugay nga mga sesyon sama sa mga websocket, mahimo kini maguba ug, nga wala mamatikdi sa tiggamit, kinahanglan nimo nga ma-install pag-usab ang ingon nga mga sesyon. Ug unya ang tanan perpekto.

Mga Kapanguhaan

Actually, diri lang ko mag storya nimo. Pag-usab gikan sa tinuod nga kinabuhi. Ang labing sakit nga butang nga akong nadungog bahin sa mga kapanguhaan.

Ang mga kapanguhaan sa kini nga kaso, gipasabut nako, usa ka matang sa mga hangyo, mga limitasyon nga mahimo nimong ibutang sa mga pod sa imong mga kumpol sa Kubernetes. Ang labing kataw-anan nga butang nga akong nadungog gikan sa usa ka developer ... Usa sa akong mga kauban nga developer sa usa ka miaging lugar sa trabaho sa makausa miingon: "Ang akong aplikasyon dili magsugod sa cluster." Gitan-aw nako nga wala kini magsugod, apan dili kini mohaum sa mga kapanguhaan, o nagbutang sila og gagmay nga mga limitasyon. Sa laktud, ang aplikasyon dili makasugod tungod sa mga kapanguhaan. Miingon ko: "Dili kini magsugod tungod sa mga kahinguhaan, magdesisyon ka kung unsa ka daghan ang imong gikinahanglan ug magtakda og igong bili." Siya miingon: “Unsang matanga sa mga kahinguhaan?” Nagsugod ko sa pagpasabot niya nga Kubernetes, limits on requests and blah, blah, blah need to set. Ang tawo naminaw sulod sa lima ka minuto, miyango ug miingon: “Mianhi ko dinhi aron magtrabaho isip usa ka developer, dili ko gusto nga mahibalo sa bisan unsa mahitungod sa bisan unsa nga mga kapanguhaan. Mianhi ko dinhi aron magsulat og code ug mao na. Makasubo kini. Kini usa ka makapasubo nga konsepto gikan sa punto sa panglantaw sa developer. Ilabi na sa modernong kalibutan, ingnon ta, sa mga progresibong devops.

Ngano nga gikinahanglan ang mga kahinguhaan? Adunay 2 ka matang sa mga kapanguhaan sa Kubernetes. Ang uban gitawag nga mga hangyo, ang uban gitawag nga mga limitasyon. Pinaagi sa mga kahinguhaan atong masabtan nga sa kasagaran adunay duha lamang ka sukaranan nga mga pagdili. Kana mao, ang mga limitasyon sa oras sa CPU ug mga limitasyon sa RAM alang sa usa ka sudlanan nga nagdagan sa Kubernetes.

Ang usa ka limitasyon nagbutang sa usa ka taas nga limitasyon kung giunsa ang usa ka kapanguhaan magamit sa imong aplikasyon. Kana mao, sumala niana, kung giingon nimo ang 1GB sa RAM sa mga limitasyon, nan ang imong aplikasyon dili makagamit labaw pa sa 1GB nga RAM. Ug kung siya kalit nga gusto ug mosulay sa pagbuhat niini, unya ang usa ka proseso nga gitawag oom killer, nga wala’y panumduman, nga mao, moabut ug patyon ang imong aplikasyon - nga mao, kini magsugod pag-usab. Ang mga aplikasyon dili magsugod pag-usab base sa CPU. Sa termino sa CPU, kung ang usa ka aplikasyon mosulay sa paggamit sa usa ka daghan, labaw pa sa gitakda sa mga limitasyon, ang CPU higpit nga pilion. Kini dili mosangpot sa pag-restart. Kini ang limitasyon - kini ang taas nga limitasyon.

Ug naay hangyo. Ang usa ka hangyo mao kung giunsa pagsabot sa Kubernetes kung giunsa ang mga node sa imong cluster sa Kubernetes napuno sa mga aplikasyon. Sa ato pa, ang usa ka hangyo usa ka matang sa pagpasalig sa imong aplikasyon. Nag-ingon kini kung unsa ang gusto nakong gamiton: "Gusto ko nga imong ireserba ang daghang CPU ug kini nga daghang memorya alang kanako." Ang ingon ka yano nga analohiya. Unsa kaha kung kami adunay usa ka node nga adunay, wala ako kahibalo, 8 nga mga CPU sa kinatibuk-an. Ug ang usa ka pod miabot didto, kansang mga hangyo nag-ingon nga 1 CPU, nga nagpasabut nga ang node adunay nahabilin nga 7 nga mga CPU. Kana mao, sumala niana, sa diha nga ang 8 pods moabot niini nga node, nga ang matag usa adunay 1 CPU sa ilang mga hangyo, ang node, ingon nga gikan sa punto sa panglantaw sa Kubernetes, nahutdan sa CPU ug daghan nga mga pod nga adunay mga hangyo dili mahimo. gilansad sa kini nga node. Kung ang tanan nga mga node nahutdan sa CPU, unya ang Kubernetes magsugod sa pag-ingon nga walay angay nga mga node sa cluster nga modagan sa imong mga pod tungod kay ang CPU nahutdan.

Ngano nga gikinahanglan ang mga hangyo ug ngano nga kung wala’y mga hangyo, sa akong hunahuna dili kinahanglan nga maglansad bisan unsa sa Kubernetes? Hunahunaa ang usa ka hypothetical nga sitwasyon. Gilunsad nimo ang imong aplikasyon nga wala’y mga hangyo, wala mahibal-an sa Kubernetes kung pila ang naa kanimo, kung unsang mga node ang mahimo nimong iduso. Buweno, siya nagduso, nagduslak, nagduso ngadto sa mga buko. Sa usa ka punto, magsugod ka sa pagkuha sa trapiko sa imong aplikasyon. Ug ang usa sa mga aplikasyon kalit nga nagsugod sa paggamit sa mga kahinguhaan hangtod sa mga limitasyon nga naa niini sumala sa mga limitasyon. Kini nahimo nga adunay lain nga aplikasyon sa duol ug kinahanglan usab kini nga mga kapanguhaan. Ang node sa tinuud nagsugod sa pisikal nga pagkahurot sa mga kahinguhaan, pananglitan, OP. Ang node sa tinuud nagsugod sa pisikal nga pagkahurot sa mga kahinguhaan, pananglitan, random access memory (RAM). Kung ang usa ka node nahutdan sa gahum, una sa tanan ang docker mohunong sa pagtubag, dayon ang cubelet, dayon ang OS. Mawad-an na lang silag panimuot ug ang TANAN mohunong sa pagtrabaho alang kanimo. Kana mao, kini modala sa imong node nga ma-stuck ug kinahanglan nimo nga i-restart kini. Sa laktod, dili kaayo maayo ang sitwasyon.

Ug kung ikaw adunay mga hangyo, ang mga limitasyon dili kaayo lahi, labing menos dili daghang beses nga labi pa sa mga limitasyon o mga hangyo, nan mahimo nimo ang ingon usa ka normal, makatarunganon nga pagpuno sa mga aplikasyon sa tibuuk nga mga node sa mga kumpol sa Kubernetes. Sa samang higayon, ang Kubernetes gibana-bana nga nahibal-an kung unsa ka daghan ang gibutang niini kung asa, unsa kadaghan ang gigamit kung asa. Sa ato pa, kini usa ra ka higayon. Importante nga masabtan kini. Ug hinungdanon nga kontrolon nga kini gipakita.

Pagtipig sa datos

Ang among sunod nga punto bahin sa pagtipig sa datos. Unsa ang buhaton sa kanila ug sa kinatibuk-an, unsa ang buhaton sa pagpadayon sa Kubernetes?

Sa akong hunahuna, pag-usab, sa sulod sa among Eskwelahan sa Gabii, adunay usa ka hilisgutan mahitungod sa database sa Kubernetes. Ug sa akong tan-aw halos nahibal-an ko kung unsa ang gisulti sa imong mga kauban sa dihang gipangutana: "Posible ba nga magpadagan usa ka database sa Kubernetes?" Alang sa pipila ka rason, para nako nga gisultihan ka sa imong mga kauban nga kung gipangutana nimo ang pangutana kung posible ba nga magpadagan usa ka database sa Kubernetes, nan imposible.

Ang lohika dinhi yano ra. Sa kaso lang, ipasabut nako pag-usab, kung ikaw usa ka tinuud nga cool nga tawo nga makahimo sa usa ka patas nga sayup-tolerant nga sistema sa giapod-apod nga pagtipig sa network, sabta kung giunsa ang pagpahiangay sa usa ka database sa kini nga kaso, kung giunsa ang lumad nga panganod sa mga sudlanan kinahanglan molihok sa usa ka database sa kinatibuk-an. Lagmit, wala ka'y ​​pangutana kung giunsa kini pagpadagan. Kung ikaw adunay ingon nga pangutana, ug gusto nimo nga masiguro nga kini tanan maablihan ug mobarug hangtod sa kamatayon sa produksiyon ug dili gyud mahulog, nan dili kini mahitabo. Gigarantiyahan nimo nga pusilon ang imong kaugalingon sa tiil niini nga pamaagi. Busa mas maayo nga dili.

Unsa ang kinahanglan natong buhaton sa mga datos nga gusto sa atong aplikasyon nga tipigan, pipila ka mga hulagway nga gi-upload sa mga tiggamit, pipila ka mga butang nga namugna sa atong aplikasyon sa panahon sa operasyon niini, sa pagsugod, pananglitan? Unsay buhaton nila sa Kubernetes?

Sa kinatibuk-an, labing maayo, oo, siyempre, ang Kubernetes maayo kaayo nga pagkadisenyo ug sa kasagaran sa sinugdan gipanamkon alang sa walay estado nga mga aplikasyon. Kana mao, alang sa mga aplikasyon nga wala magtipig kasayuran. Kini mao ang sulundon.

Apan, siyempre, ang sulundon nga kapilian dili kanunay naglungtad. Unya? Ang una ug pinakayano nga punto mao ang pagkuha sa usa ka matang sa S3, dili lang usa ka hinimo sa balay, nga dili usab klaro kung giunsa kini paglihok, apan gikan sa pipila nga taghatag. Usa ka maayo, normal nga provider - ug tudloi ang imong aplikasyon sa paggamit sa S3. Kana mao, kung gusto sa imong user nga mag-upload og file, isulti ang "dinhi, palihug, i-upload kini sa S3." Kung gusto niya nga makadawat niini, ingna: "Ania ang usa ka link sa S3 balik ug kuhaa kini gikan dinhi." Kini mao ang sulundon.

Kung sa kalit sa usa ka hinungdan kini nga sulundon nga kapilian dili angay, ikaw adunay usa ka aplikasyon nga wala nimo isulat, wala ka nag-develop, o kini usa ka matang sa makalilisang nga kabilin, dili kini magamit ang S3 protocol, apan kinahanglan nga magtrabaho kauban ang mga lokal nga direktoryo sa lokal nga mga folder. Gamita ang usa ka butang nga mas o dili kaayo yano, i-deploy ang Kubernetes. Sa ato pa, ang pagkoral dayon kang Ceph alang sa pipila ka gagmay nga mga buluhaton, alang kanako, usa ka dili maayo nga ideya. Kay si Ceph, buotan ug uso. Apan kung dili gyud nimo masabtan ang imong gibuhat, unya sa higayon nga ibutang nimo ang usa ka butang kang Ceph, dali ra nimo ug dili na kini makuha pag-usab. Tungod kay, sama sa imong nahibal-an, ang Ceph nagtipig sa datos sa cluster niini sa binary nga porma, ug dili sa porma sa yano nga mga file. Busa, kung kalit nga maguba ang Ceph cluster, nan adunay usa ka kompleto ug taas nga posibilidad nga dili na nimo makuha ang imong datos gikan didto.

Mag course mi ni Ceph, pwede nimo pamilyar sa imong kaugalingon sa programa ug pagsumite usa ka aplikasyon.

Busa, mas maayo nga buhaton ang usa ka butang nga yano sama sa usa ka NFS server. Ang mga Kubernetes mahimong magtrabaho uban kanila, mahimo nimong i-mount ang usa ka direktoryo sa ilawom sa usa ka NFS server - ang imong aplikasyon sama ra sa usa ka lokal nga direktoryo. Sa samang higayon, natural, kinahanglan nimo nga masabtan nga, pag-usab, kinahanglan nimo nga buhaton ang usa ka butang sa imong NFS, kinahanglan nimo nga masabtan nga usahay kini mahimong dili ma-access ug ikonsiderar ang pangutana kung unsa ang imong buhaton sa kini nga kaso. Tingali kinahanglan kini i-back up sa usa ka lugar sa usa ka lahi nga makina.

Ang sunod nga punto nga akong gihisgutan mao ang buhaton kung ang imong aplikasyon makamugna og pipila ka mga file sa panahon sa operasyon. Pananglitan, sa diha nga kini magsugod, kini makamugna sa pipila ka static nga file, nga gibase sa pipila ka impormasyon nga ang aplikasyon makadawat lamang sa panahon sa paglunsad. Unsa ka gutlo. Kung wala’y daghang ingon nga datos, nan dili ka kinahanglan nga magsamok, i-install lang kini nga aplikasyon alang sa imong kaugalingon ug pagtrabaho. Ang pangutana ra dinhi kung unsa, tan-awa. Kasagaran, ang tanan nga mga matang sa mga sistema sa kabilin, sama sa WordPress ug uban pa, labi na sa gibag-o nga usa ka matang sa maalamon nga mga plugins, mga maalamon nga mga developer sa PHP, kasagaran nahibal-an nila kung unsaon paghimo niini aron sila makamugna og usa ka matang sa file alang sa ilang kaugalingon. Busa, ang usa makamugna og usa ka file, ang ikaduha makamugna og ikaduha nga file. Lahi sila. Ang pagbalanse mahitabo sa Kubernetes cluster sa mga kliyente nga sulagma lang. Ingon niana, kini nahimo nga wala sila kahibalo kung unsaon pagtrabaho nga magkauban pananglitan. Ang usa naghatag sa usa ka impormasyon, ang lain naghatag sa user og laing impormasyon. Kini usa ka butang nga kinahanglan nimong likayan. Kana mao, sa Kubernetes, ang tanan nga imong gilunsad gigarantiyahan nga makahimo sa pagtrabaho sa daghang mga higayon. Tungod kay ang Kubernetes usa ka makalihok nga butang. Tungod niini, mahimo niyang ibalhin ang bisan unsang butang, bisan kanus-a niya gusto, nga wala’y pangutana bisan kinsa. Busa, kinahanglang magsalig ka niini. Ang tanan nga gilunsad sa usa ka higayon sa madugay o sa madali mapakyas. Kon mas daghan ang imong reserbasyon, mas maayo. Apan pag-usab, giingon ko, kung adunay ka pipila nga ingon nga mga file, mahimo nimo kini ibutang sa ilawom nimo, gamay ra ang ilang gibug-aton. Kung adunay gamay pa niini, tingali dili nimo kini iduso sa sulod sa sudlanan.

Akong itambag nga adunay usa ka talagsaon nga butang sa Kubernetes, mahimo nimong gamiton ang volume. Sa partikular, adunay usa ka gidaghanon sa tipo nga walay sulod nga dir. Sa ato pa, ang Kubernetes awtomatiko nga maghimo usa ka direktoryo sa mga direktoryo sa serbisyo niini sa server kung diin ka nagsugod. Ug ihatag niya kini kanimo aron magamit nimo kini. Adunay usa lamang ka importante nga punto. Kana mao, ang imong data dili tipigan sa sulod sa sudlanan, apan sa host diin ikaw nagdagan. Dugang pa, makontrol sa Kubernetes ang ingon nga mga walay sulod nga dir sa ilawom sa normal nga pag-configure ug makontrol ang ilang labing kadaghan nga gidak-on ug dili kini tugutan nga malapas. Ang bugtong punto mao nga ang imong gisulat sa walay sulod nga dir dili mawala sa panahon sa pod restarts. Sa ato pa, kung ang imong pod nahulog sa sayup ug mobangon pag-usab, ang impormasyon sa walay sulod nga dir dili moadto bisan asa. Mahimo niya kini gamiton pag-usab sa bag-ong pagsugod - ug maayo kana. Kung ang imong pod mobiya sa usa ka dapit, natural nga siya mobiya nga walay data. Sa ato pa, sa diha nga ang pod gikan sa node diin kini gilusad nga walay sulod nga dir mawala, walay sulod nga dir ang mapapas.

Unsa pa ang maayo sa walay sulod nga dir? Pananglitan, kini mahimong gamiton ingon nga usa ka cache. Hunahunaa nga ang among aplikasyon nagmugna og usa ka butang sa langaw, gihatag kini sa mga tiggamit, ug gibuhat kini sa dugay nga panahon. Busa, ang aplikasyon, pananglitan, nagmugna ug naghatag niini sa mga tiggamit, ug sa samang higayon nagtipig niini sa usa ka dapit, aron sa sunod nga higayon nga ang user moabut alang sa samang butang, kini mahimong mas paspas sa paghatag niini diha-diha dayon. Ang walay sulod nga dir mahimong hangyoon sa Kubernetes sa paghimo sa memorya. Ug sa ingon, ang imong mga cache sa kasagaran molihok sa kusog nga kilat - sa mga termino sa katulin sa pag-access sa disk. Kana mao, ikaw adunay usa ka walay sulod nga dir sa panumduman, sa OS kini gitipigan sa panumduman, apan alang kanimo, alang sa tiggamit sulod sa pod, kini morag usa lamang ka lokal nga direktoryo. Dili nimo kinahanglan ang app aron espesipikong magtudlo sa bisan unsang salamangka. Direkta lang nimo nga gikuha ug gibutang ang imong file sa usa ka direktoryo, apan, sa tinuud, sa memorya sa OS. Kini usa usab ka kombenyente nga bahin sa mga termino sa Kubernetes.

Unsang mga problema ang naa sa Minio? Ang nag-unang problema sa Minio mao nga aron kini nga butang molihok, kini kinahanglan nga modagan sa usa ka dapit, ug kinahanglan nga adunay usa ka matang sa file system, nga mao, storage. Ug dinhi atong nasugatan ang parehas nga mga problema nga naa sa Ceph. Kana mao, kinahanglan nga tipigan sa Minio ang mga file niini bisan asa. Kini usa lamang ka interface sa HTTP sa imong mga file. Dugang pa, ang pagpaandar klaro nga mas kabus kaysa sa S3 sa Amazon. Kaniadto, wala kini makahimo sa husto nga pagtugot sa tiggamit. Karon, kutob sa akong nahibal-an, makahimo na kini og mga balde nga adunay lainlaing mga pagtugot, apan pag-usab, alang kanako ang panguna nga problema mao, ingnon ta, ang nagpahiping sistema sa pagtipig sa labing gamay.

Sa unsang paagi ang Empty dir sa memorya makaapekto sa mga limitasyon? Dili makaapekto sa mga limitasyon sa bisan unsang paagi. Kini nahimutang sa panumduman sa host, ug dili sa panumduman sa imong sudlanan. Sa ato pa, dili makita sa imong sudlanan ang walay sulod nga dir sa memorya isip bahin sa giokupahan nga memorya niini. Ang host nakakita niini. Busa, oo, gikan sa punto sa panglantaw sa mga kubernetes, sa diha nga ikaw magsugod sa paggamit niini, kini mao ang maayo nga masabtan nga ikaw naghalad bahin sa imong panumduman sa walay sulod nga dir. Ug sumala niana, sabta nga ang memorya mahimong mahurot dili lamang tungod sa mga aplikasyon, kondili tungod usab kay adunay nagsulat niining mga walay sulod nga dirs.

Cloudnativeness

Ug ang katapusang subtopic mao ang Cloudnative. Nganong gikinahanglan kini? Cloudnativeness ug uban pa.

Kana mao, kadtong mga aplikasyon nga makahimo ug gisulat aron magtrabaho sa usa ka modernong imprastraktura sa panganod. Apan, sa tinuud, ang Cloudnative adunay lain nga aspeto. Nga kini dili lamang usa ka aplikasyon nga nagkonsiderar sa tanan nga mga kinahanglanon sa usa ka modernong imprastraktura sa panganod, apan nahibal-an usab kung giunsa ang pagtrabaho sa kini nga modernong imprastraktura sa panganod, pahimuslan ang mga bentaha ug disbentaha sa kamatuoran nga kini nagtrabaho sa kini nga mga panganod. Ayaw lang pag-adto sa dagat ug pagtrabaho sa panganod, apan pahimusli ang mga benepisyo sa pagtrabaho sa panganod.

Mga kinahanglanon alang sa pagpalambo sa usa ka aplikasyon sa Kubernetes

Atong kuhaon ang Kubernetes isip pananglitan. Ang imong aplikasyon nagdagan sa Kubernetes. Ang imong aplikasyon mahimo kanunay, o hinoon ang mga admin alang sa imong aplikasyon, makahimo kanunay og usa ka account sa serbisyo. Kana mao, usa ka account alang sa pagtugot sa Kubernetes mismo sa server niini. Idugang ang pipila ka mga katungod nga atong gikinahanglan didto. Ug mahimo nimong ma-access ang Kubernetes gikan sa sulod sa imong aplikasyon. Unsa ang imong mahimo niini nga paagi? Pananglitan, gikan sa aplikasyon, makadawat ug datos bahin sa kung asa ang imong ubang mga aplikasyon, uban pang susamang mga higayon nahimutang, ug magkauban sa usa ka paagi cluster sa ibabaw sa Kubernetes, kung adunay ingon nga panginahanglan.

Sa makausa pa, kami adunay usa ka kaso bag-o lang. Kami adunay usa ka controller nga nag-monitor sa pila. Ug kung adunay mga bag-ong buluhaton nga makita sa kini nga pila, kini moadto sa Kubernetes - ug sa sulod sa Kubernetes maghimo kini usa ka bag-ong pod. Naghatag niini nga pod og bag-ong buluhaton ug sulod sa gambalay niini nga pod, ang pod naghimo sa buluhaton, nagpadala og tubag ngadto sa controller mismo, ug ang controller dayon adunay gibuhat niini nga impormasyon. Pananglitan, kini nagdugang sa usa ka database. Kana mao, pag-usab, kini usa ka dugang sa kamatuoran nga ang among aplikasyon nagdagan sa Kubernetes. Mahimo namong gamiton ang built-in nga Kubernetes functionality mismo aron sa usa ka paagi sa pagpalapad ug paghimo sa functionality sa among aplikasyon nga mas sayon. Kana mao, ayaw pagtago sa usa ka matang sa salamangka kon unsaon paglansad sa usa ka aplikasyon, unsaon paglansad sa usa ka trabahante. Sa Kubernetes, magpadala ka lang ug hangyo sa app kung ang aplikasyon gisulat sa Python.

Ang sama nga magamit kung kita molapas sa Kubernetes. Naa miy mga Kubernete nga nagdagan bisan asa - maayo kung naa sa usa ka matang sa panganod. Sa makausa pa, mahimo natong gamiton, ug bisan kinahanglan, sa akong pagtuo, gamiton ang mga kapabilidad sa panganod mismo diin kita nagdagan. Gikan sa elementarya nga mga butang nga gihatag kanato sa panganod. Ang pagbalanse, sa ato pa, makahimo kita og mga cloud balancer ug magamit kini. Kini usa ka direkta nga bentaha sa kung unsa ang atong magamit. Tungod kay ang pagbalanse sa panganod, una, hungog nga nagtangtang sa responsibilidad gikan kanamo kung giunsa kini molihok, kung giunsa kini gi-configure. Dugang pa, kini sayon ​​​​kaayo, tungod kay ang mga regular nga Kubernetes mahimong mahiusa sa mga panganod.

Ang sama nga moadto alang sa scaling. Ang mga regular nga Kubernetes mahimong ma-integrate sa mga cloud providers. Nahibal-an kung unsaon pagsabot nga kung ang cluster nahutdan sa mga node, nga mao, ang node space nahutdan, nan kinahanglan nimo nga idugang - Ang Kubernetes mismo magdugang og bag-ong mga node sa imong cluster ug magsugod sa paglansad sa mga pod niini. Sa ato pa, kung moabut ang imong load, ang gidaghanon sa mga abohan nagsugod sa pagdugang. Kung mahurot na ang mga node sa cluster alang niini nga mga pod, ang Kubernetes maglunsad og mga bag-ong node ug, sumala niana, ang gidaghanon sa mga pod mahimo pa nga modaghan. Ug kini sayon ​​​​kaayo. Kini usa ka direkta nga oportunidad sa pag-scale sa cluster sa langaw. Dili kaayo paspas, sa diwa nga kini dili usa ka segundo, kini sama sa usa ka minuto aron makadugang bag-ong mga node.

Apan gikan sa akong kasinatian, pag-usab, kini ang labing cool nga butang nga akong nakita. Kung ang Cloudnative cluster nag-scale base sa oras sa adlaw. Kini usa ka serbisyo sa backend nga gigamit sa mga tawo sa likod nga opisina. Kana mao, sila moabut sa pagtrabaho sa 9 sa buntag, magsugod sa pag-log in sa sistema, ug sumala niana, ang Cloudnative cluster, diin kini tanan nga nagdagan, nagsugod sa pag-ulbo, paglansad sa bag-ong mga pods aron ang tanan nga moabut sa trabaho makahimo sa pagtrabaho uban sa aplikasyon. Kung mobiya sila sa trabaho sa alas-8 sa gabii o alas-6 sa gabii, ang mga pungpong sa Kubernetes nakamatikod nga wala nay usa nga naggamit sa aplikasyon ug nagsugod sa pagkunhod. Gigarantiyahan ang pagtipig hangtod sa 30 porsyento. Nagtrabaho kini sa Amazon niadtong panahona; niadtong panahona walay usa sa Russia nga makahimo niini pag-ayo.

Isulti ko nimo nga diretso, 30 porsyento ang pagtipig tungod lang kay gigamit namon ang Kubernetes ug gipahimuslan ang mga kapabilidad sa panganod. Karon kini mahimo sa Russia. Dili ako mag-anunsyo sa bisan kinsa, siyempre, apan ingnon ta nga adunay mga taghatag nga makahimo niini, ihatag kini gikan sa kahon nga adunay buton.

Adunay usa ka katapusan nga punto nga gusto ko usab nga ipunting ang imong atensyon. Aron ang imong aplikasyon, ang imong imprastraktura mahimong Cloudnative, makatarunganon nga sa katapusan magsugod sa pagpahiangay sa pamaagi nga gitawag nga Infrastructure isip usa ka Code. Sa ato pa, kini nagpasabot nga ang imong aplikasyon, o hinoon ang imong imprastraktura, nagkinahanglan gayud nga parehas sa code Ihulagway ang imong aplikasyon, ang imong lohika sa negosyo sa porma sa code. Ug pagtrabaho uban niini ingon nga code, sa ato pa, sulayi kini, paligdi kini, ibutang kini sa git, i-apply ang CICD niini.

Ug kini gyud ang nagtugot kanimo, una, nga kanunay adunay kontrol sa imong imprastraktura, aron kanunay masabtan kung unsa ang kahimtang niini. Ikaduha, likayi ang mga manual nga operasyon nga hinungdan sa mga sayup. Ikatulo, likayi ang gitawag nga turnover, kung kinahanglan nimo nga buhaton ang parehas nga mga buluhaton sa manual. Ikaupat, kini nagtugot kanimo sa pagbawi sa mas paspas sa panghitabo sa usa ka kapakyasan. Sa Russia, sa matag higayon nga maghisgot ako bahin niini, kanunay adunay daghang mga tawo nga moingon: "Oo, klaro, apan adunay ka mga pamaagi, sa laktud, wala’y kinahanglan nga ayohon ang bisan unsang butang." Apan tinuod kini. Kung adunay naguba sa imong imprastraktura, unya gikan sa punto sa panglantaw sa Cloudnative nga pamaagi ug gikan sa punto sa panglantaw sa Infrastructure isip usa ka Code, imbes nga ayohon kini, moadto sa server, mahibal-an kung unsa ang naguba ug ayohon kini, mas sayon sa pagtangtang sa server ug paghimo niini pag-usab. Ug igauli ko kining tanan.

Ang tanan niini nga mga isyu gihisgutan sa mas detalyado sa Mga kurso sa video sa Kubernetes: Junior, Basic, Mega. Pinaagi sa pagsunod sa link mahimo nimong pamilyar ang imong kaugalingon sa programa ug mga kondisyon. Ang sayon ​​​​nga butang mao nga mahimo nimong ma-master ang Kubernetes pinaagi sa pagtuon gikan sa balay o trabaho sulod sa 1-2 ka oras sa usa ka adlaw.

Source: www.habr.com

Idugang sa usa ka comment