Awọn aworan ti o ṣetan fun awọn k8

Itan yii jẹ nipa bii a ṣe lo awọn apoti ni agbegbe iṣelọpọ, pataki Kubernetes. Nkan naa jẹ iyasọtọ si gbigba awọn metiriki ati awọn akọọlẹ lati awọn apoti, bakanna bi awọn aworan kikọ.

Awọn aworan ti o ṣetan fun awọn k8

A wa lati ile-iṣẹ fintech Exness, eyiti o ndagba awọn iṣẹ fun iṣowo ori ayelujara ati awọn ọja fintech fun B2B ati B2C. R&D wa ni ọpọlọpọ awọn ẹgbẹ oriṣiriṣi, ẹka idagbasoke ni awọn oṣiṣẹ 100+.

A ṣe aṣoju ẹgbẹ ti o ni iduro fun pẹpẹ fun awọn olupilẹṣẹ wa lati gba ati ṣiṣẹ koodu. Ni pataki, a ni iduro fun gbigba, titoju ati ijabọ awọn metiriki, awọn akọọlẹ, ati awọn iṣẹlẹ lati awọn ohun elo. A n ṣiṣẹ lọwọlọwọ awọn apoti Docker ẹgbẹrun mẹta ni agbegbe iṣelọpọ, ṣetọju ibi ipamọ data nla TB 50 wa, ati pese awọn solusan ayaworan ti a ṣe ni ayika awọn amayederun wa: Kubernetes, Rancher, ati ọpọlọpọ awọn olupese awọsanma gbangba. 

Iwuri wa

Kini n jo? Ko si eniti o le dahun. Nibo ni ile ina wa? O soro lati ni oye. Nigbawo ni o mu ina? O le rii, ṣugbọn kii ṣe lẹsẹkẹsẹ. 

Awọn aworan ti o ṣetan fun awọn k8

Kilode ti awọn apoti kan duro nigbati awọn miiran ti ṣubu? Epo ewo ni o jẹbi? Lẹhinna, ita awọn apoti jẹ kanna, ṣugbọn inu ọkọọkan ni Neo tirẹ.

Awọn aworan ti o ṣetan fun awọn k8

Awọn olupilẹṣẹ wa jẹ awọn eniyan ti o peye. Wọn ṣe awọn iṣẹ to dara ti o mu èrè wá si ile-iṣẹ naa. Ṣugbọn awọn ikuna wa nigbati awọn apoti pẹlu awọn ohun elo lọ si ọna. Eiyan kan n gba Sipiyu ti o pọ ju, omiiran n gba nẹtiwọọki, ẹkẹta n gba awọn iṣẹ I / O, ati kẹrin jẹ koyewa patapata ohun ti o ṣe pẹlu awọn iho. Gbogbo rẹ ṣubu ati ọkọ oju omi rì. 

Awọn aṣoju

Lati loye ohun ti n ṣẹlẹ ni inu, a pinnu lati gbe awọn aṣoju taara sinu awọn apoti.

Awọn aworan ti o ṣetan fun awọn k8

Awọn aṣoju wọnyi jẹ awọn eto idena ti o tọju awọn apoti ni iru ipo ti wọn ko fọ ara wọn. Awọn aṣoju jẹ iwọntunwọnsi, ati pe eyi ngbanilaaye fun ọna iwọntunwọnsi si awọn apoti iṣẹ. 

Ninu ọran wa, awọn aṣoju gbọdọ pese awọn igbasilẹ ni ọna kika boṣewa, ti samisi ati fifẹ. Wọn yẹ ki o tun pese wa pẹlu awọn metiriki idiwon ti o jẹ extensible lati irisi ohun elo iṣowo.

Awọn aṣoju tun tumọ si awọn ohun elo fun iṣẹ ati itọju ti o le ṣiṣẹ ni awọn ọna ṣiṣe orchestration oriṣiriṣi ti o ṣe atilẹyin awọn aworan oriṣiriṣi (Debian, Alpine, Centos, bbl).

Nikẹhin, awọn aṣoju gbọdọ ṣe atilẹyin CI/CD ti o rọrun ti o pẹlu awọn faili Docker. Bibẹẹkọ, ọkọ oju-omi naa yoo ṣubu, nitori awọn apoti yoo bẹrẹ lati jiṣẹ pẹlu awọn irin-ajo “iṣiro”.

Kọ ilana ati afojusun image ẹrọ

Lati tọju ohun gbogbo ni iwọntunwọnsi ati iṣakoso, diẹ ninu iru ilana kikọ boṣewa nilo lati tẹle. Nitorinaa, a pinnu lati gba awọn apoti nipasẹ awọn apoti - eyi jẹ atunwi.

Awọn aworan ti o ṣetan fun awọn k8

Nibi awọn apoti jẹ aṣoju nipasẹ awọn ilana ti o lagbara. Ni akoko kanna, wọn pinnu lati fi awọn ohun elo pinpin sinu wọn ki “igbesi aye ko dabi awọn raspberries.” Kini idi ti eyi ṣe, a yoo ṣe alaye ni isalẹ.
 
Abajade jẹ ohun elo ikọle-eiyan-ẹya kan pato ti o tọka si awọn ẹya pinpin pato ati awọn ẹya iwe afọwọkọ kan pato.

Bawo ni a ṣe lo? A ni Ipele Docker ti o ni apoti kan ninu. A ṣe afihan rẹ ninu eto wa lati yọkuro awọn igbẹkẹle ita. Abajade jẹ apoti ti a samisi ni ofeefee. A ṣẹda awoṣe kan lati fi sori ẹrọ gbogbo awọn pinpin ati awọn iwe afọwọkọ ti a nilo sinu eiyan naa. Lẹhin iyẹn, a ṣe apejọ aworan ti o ṣetan-lati-lo: awọn olupilẹṣẹ fi koodu ati diẹ ninu awọn igbẹkẹle pataki tiwọn sinu rẹ. 

Kini o dara nipa ọna yii? 

  • Ni akọkọ, iṣakoso ẹya kikun ti awọn irinṣẹ kọ - kọ eiyan, iwe afọwọkọ ati awọn ẹya pinpin. 
  • Ni ẹẹkeji, a ti ṣaṣeyọri isọdiwọn: a ṣẹda awọn awoṣe, agbedemeji ati aworan ti o ṣetan lati lo ni ọna kanna. 
  • Ẹkẹta, awọn apoti fun wa ni gbigbe. Loni a lo Gitlab, ati ni ọla a yoo yipada si TeamCity tabi Jenkins ati pe a yoo ni anfani lati ṣiṣe awọn apoti wa ni ọna kanna. 
  • Ẹkẹrin, idinku awọn igbẹkẹle. Kii ṣe lasan ti a fi awọn ohun elo pinpin sinu apoti, nitori eyi gba wa laaye lati yago fun gbigba wọn lati Intanẹẹti ni gbogbo igba. 
  • Ni karun, iyara kikọ ti pọ si - wiwa awọn adakọ agbegbe ti awọn aworan gba ọ laaye lati yago fun jafara akoko lori gbigba lati ayelujara, nitori aworan agbegbe wa. 

Ni awọn ọrọ miiran, a ti ṣaṣeyọri ilana apejọ iṣakoso ati rọ. A lo awọn irinṣẹ kanna lati kọ eyikeyi awọn apoti ti ikede ni kikun. 

Bii ilana iṣelọpọ wa ṣe n ṣiṣẹ

Awọn aworan ti o ṣetan fun awọn k8

A ṣe ifilọlẹ apejọ naa pẹlu aṣẹ kan, ilana naa ti ṣiṣẹ ni aworan (afihan ni pupa). Olùgbéejáde naa ni faili Docker kan (ti o ṣe afihan ni ofeefee), a fun ni, rọpo awọn oniyipada pẹlu awọn iye. Ati ni ọna a ṣafikun awọn akọle ati awọn ẹlẹsẹ - iwọnyi ni awọn aṣoju wa. 

Akọsori ṣafikun awọn pinpin lati awọn aworan ti o baamu. Ati ẹlẹsẹ fi sori ẹrọ awọn iṣẹ wa inu, tunto ifilọlẹ iṣẹ ṣiṣe, gedu ati awọn aṣoju miiran, rọpo aaye titẹsi, ati bẹbẹ lọ. 

Awọn aworan ti o ṣetan fun awọn k8

A ro fun igba pipẹ boya lati fi sori ẹrọ olubẹwo. Ni ipari, a pinnu pe a nilo rẹ. A yan S6. Alabojuto n pese iṣakoso eiyan: gba ọ laaye lati sopọ si rẹ ti ilana akọkọ ba kọlu ati pese iṣakoso afọwọṣe ti eiyan laisi atunda. Awọn akọọlẹ ati awọn metiriki jẹ awọn ilana ti n ṣiṣẹ ninu apo eiyan naa. Wọn tun nilo lati ṣakoso ni ọna kan, ati pe a ṣe eyi pẹlu iranlọwọ ti alabojuto kan. Nikẹhin, S6 n ṣe abojuto itọju ile, ṣiṣe ifihan agbara ati awọn iṣẹ ṣiṣe miiran.

Niwọn igba ti a ti lo awọn ọna ṣiṣe orchestration oriṣiriṣi, lẹhin kikọ ati ṣiṣe, eiyan gbọdọ loye kini agbegbe ti o wa ati ṣiṣẹ ni ibamu si ipo naa. Fun apere:
Eyi n gba wa laaye lati kọ aworan kan ati ṣiṣe ni oriṣiriṣi awọn ọna ṣiṣe orchestration, ati pe yoo ṣe ifilọlẹ ni akiyesi awọn pato ti eto orchestration yii.

 Awọn aworan ti o ṣetan fun awọn k8

Fun eiyan kanna a gba awọn igi ilana oriṣiriṣi ni Docker ati Kubernetes:

Awọn aworan ti o ṣetan fun awọn k8

Awọn isanwo ti wa ni ṣiṣe labẹ abojuto ti S6. San ifojusi si olugba ati awọn iṣẹlẹ - iwọnyi ni awọn aṣoju wa lodidi fun awọn akọọlẹ ati awọn metiriki. Kubernetes ko ni wọn, ṣugbọn Docker ni. Kí nìdí? 

Ti a ba wo sipesifikesonu ti “podu” (lẹhin - Kubernetes pod), a yoo rii pe eiyan iṣẹlẹ ti wa ni pipa ni adarọ-ese kan, eyiti o ni apoti ikojọpọ lọtọ ti o ṣe iṣẹ ti gbigba awọn metiriki ati awọn akọọlẹ. A le lo awọn agbara ti Kubernetes: nṣiṣẹ awọn apoti ninu ọkan podu, ni ilana kan ati / tabi aaye nẹtiwọki. Ni otitọ ṣafihan awọn aṣoju rẹ ki o ṣe awọn iṣẹ kan. Ati pe ti eiyan kanna ba ṣe ifilọlẹ ni Docker, yoo gba gbogbo awọn agbara kanna bi iṣelọpọ, iyẹn ni, yoo ni anfani lati fi awọn igbasilẹ ati awọn metiriki jiṣẹ, nitori awọn aṣoju yoo ṣe ifilọlẹ ni inu. 

Metiriki ati awọn àkọọlẹ

Gbigbe awọn metiriki ati awọn akọọlẹ jẹ iṣẹ-ṣiṣe eka kan. Awọn aaye pupọ lo wa si ipinnu rẹ.
Awọn amayederun ti ṣẹda fun ipaniyan ti sisanwo, kii ṣe fun ifijiṣẹ pupọ ti awọn akọọlẹ. Iyẹn ni, ilana yii gbọdọ ṣee ṣe pẹlu awọn ibeere orisun ohun elo kekere. A tiraka lati ṣe iranlọwọ fun awọn olupilẹṣẹ wa: “Gba apoti Docker Hub kan, ṣiṣẹ, ati pe a le fi awọn akọọlẹ naa ranṣẹ.” 

Awọn keji aspect ti wa ni diwọn awọn iwọn didun ti awọn àkọọlẹ. Ti iwọn didun ti awọn akọọlẹ ba waye ni ọpọlọpọ awọn apoti (ohun elo naa ṣe agbejade itọpa akopọ kan ninu lupu), fifuye lori Sipiyu, awọn ikanni ibaraẹnisọrọ, ati eto ṣiṣe log, ati pe eyi yoo ni ipa lori iṣẹ ti agbalejo bi a odidi ati awọn apoti miiran lori agbalejo, lẹhinna nigbakan eyi nyorisi “isubu” ti ogun naa. 

Abala kẹta ni pe o jẹ dandan lati ṣe atilẹyin bi ọpọlọpọ awọn ọna ikojọpọ awọn metiriki bi o ti ṣee ṣe lati inu apoti. Lati kika awọn faili ati idibo Prometheus-ipari si lilo awọn ilana kan pato ohun elo.

Ati pe apakan ti o kẹhin ni lati dinku lilo awọn orisun.

A yan ojutu-ìmọ-orisun Go ojutu ti a pe ni Telegraf. Eyi jẹ asopo ti gbogbo agbaye ti o ṣe atilẹyin diẹ sii ju awọn oriṣi 140 ti awọn ikanni titẹ sii (awọn afikun igbewọle) ati awọn oriṣi 30 ti awọn ikanni ti o wu jade (awọn afikun igbejade). A ti pari ati ni bayi a yoo sọ fun ọ bi a ṣe le lo Kubernetes bi apẹẹrẹ. 

Awọn aworan ti o ṣetan fun awọn k8

Jẹ ki a sọ pe Olùgbéejáde kan nfi iṣẹ ṣiṣe ṣiṣẹ ati Kubernetes gba ibeere kan lati ṣẹda adarọ-ese kan. Ni aaye yii, eiyan kan ti a pe ni Alakojọpọ ni a ṣẹda laifọwọyi fun podu kọọkan (a lo webhook iyipada). Alakojo jẹ aṣoju wa. Ni ibẹrẹ, eiyan yii tunto ararẹ lati ṣiṣẹ pẹlu Prometheus ati eto ikojọpọ log.

  • Lati ṣe eyi, o nlo awọn akọsilẹ podu, ati da lori akoonu rẹ, ṣẹda, sọ, ipari ipari Prometheus; 
  • Da lori sipesifikesonu podu ati awọn eto eiyan kan pato, o pinnu bi o ṣe le fi awọn igbasilẹ ranṣẹ.

A n gba awọn akọọlẹ nipasẹ Docker API: awọn olupilẹṣẹ kan nilo lati fi wọn sinu stdout tabi stderr, ati Alakojo yoo too jade. Awọn akọọlẹ ni a gba ni awọn ṣoki pẹlu idaduro diẹ lati yago fun apọju ogun ti o ṣeeṣe. 

Awọn wiwọn ti wa ni gbigba kọja awọn iṣẹlẹ fifuye iṣẹ (awọn ilana) ninu awọn apoti. Ohun gbogbo ti jẹ aami: aaye orukọ, labẹ, ati bẹbẹ lọ, ati lẹhinna yipada si ọna kika Prometheus - ati pe o wa fun gbigba (ayafi fun awọn akọọlẹ). A tun firanṣẹ awọn akọọlẹ, awọn metiriki ati awọn iṣẹlẹ si Kafka ati siwaju:

  • Awọn akọọlẹ wa ni Graylog (fun itupalẹ wiwo);
  • Awọn akọọlẹ, awọn metiriki, awọn iṣẹlẹ ni a firanṣẹ si Clickhouse fun ibi ipamọ igba pipẹ.

Ohun gbogbo ṣiṣẹ deede kanna ni AWS, nikan ni a rọpo Graylog pẹlu Kafka pẹlu Cloudwatch. A fi awọn akọọlẹ ranṣẹ sibẹ, ati pe ohun gbogbo wa ni irọrun pupọ: o han lẹsẹkẹsẹ iru iṣupọ ati eiyan ti wọn jẹ. Bakan naa ni otitọ fun Google Stackdriver. Iyẹn ni, ero wa ṣiṣẹ mejeeji lori agbegbe pẹlu Kafka ati ninu awọsanma. 

Ti a ko ba ni Kubernetes pẹlu awọn adarọ-ese, ero naa jẹ diẹ sii idiju, ṣugbọn o ṣiṣẹ lori awọn ipilẹ kanna.

Awọn aworan ti o ṣetan fun awọn k8

Awọn ilana kanna ni a ṣe ninu apo eiyan, wọn jẹ orchestrated nipa lilo S6. Gbogbo awọn ilana kanna n ṣiṣẹ ni inu eiyan kanna.

Bajẹ

A ti ṣẹda ojutu pipe fun kikọ ati ifilọlẹ awọn aworan, pẹlu awọn aṣayan fun gbigba ati jiṣẹ awọn igbasilẹ ati awọn metiriki:

  • A ṣe agbekalẹ ọna ti o ni idiwọn lati ṣajọpọ awọn aworan, ati da lori rẹ a ṣe agbekalẹ awọn awoṣe CI;
  • Awọn aṣoju gbigba data jẹ awọn amugbooro Telegraf wa. A ṣe idanwo wọn daradara ni iṣelọpọ;
  • A lo webhook iyipada lati ṣe awọn apoti pẹlu awọn aṣoju ni awọn adarọ-ese; 
  • Ti ṣepọ si ilolupo ilolupo Kubernetes / Rancher;
  • A le ṣiṣẹ awọn apoti kanna ni awọn ọna ṣiṣe orchestration oriṣiriṣi ati gba abajade ti a nireti;
  • Ṣẹda iṣeto iṣakoso eiyan ti o ni agbara patapata. 

Olukowe: Ilya Prudnikov

orisun: www.habr.com

Fi ọrọìwòye kun