Shan ayaa seegaya markii la geynayo codsiga ugu horreeya ee Kubernetes

Shan ayaa seegaya markii la geynayo codsiga ugu horreeya ee KubernetesWaxaa ku guul daraystay Aris-Dreamer

Dad badan ayaa aaminsan inay ku filan tahay u haajiridda codsiga Kubernetes (ama isticmaalka Helm ama gacanta) wayna ku farxi doonaan. Laakiin sidaas uma fududa.

kooxda Mail.ru Cloud Solutions waxaa turjumay maqaal uu qoray injineerka DevOps Julian Gindi. Waxa uu la wadaagayaa wixii hagardaamo ah ee shirkadiisu la kulantay intii ay ku gudo jirtay hawsha tahriibka si aanad ugu talaabsan mid la mid ah.

Talaabada Koowaad: Dejinta Codsiyada Pod iyo Xadka

Aan ku bilowno sameynta deegaan nadiif ah oo ay kuuskuubyadu socon doonaan. Kubernetes waxa ay qabataa shaqo aad u fiican oo ah jadwalka boodhka iyo maaraynta xaaladaha guuldarada. Laakin waxaa soo baxday in jadwalku mararka qaarkood uusan dhigi karin boodh haddii ay adagtahay in la qiyaaso inta agab ee ay u baahan tahay si ay si guul leh ugu shaqeyso. Tani waa halka ay ka soo baxaan codsiyada kheyraadka iyo xadka. Waxaa jira dood badan oo ku saabsan habka ugu wanaagsan ee dejinta codsiyada iyo xaddidaadda. Mararka qaarkood waxay runtii dareemeysaa inay ka farshaxan badan tahay sayniska. Waa kan habkayaga.

Codsiyada boodhka - Tani waa qiimaha ugu weyn ee uu isticmaalo jadwaleeyaha si uu si fiican ugu dhejiyo boodhka.

Laga soo bilaabo Dukumentiyada Kubernetes: Tallaabada shaandhaynta ayaa go'aamisa godadka qanjidhada halka boodhka la jadwalsan karo. Tusaale ahaan, shaandheynta PodFitsResources waxay hubisaa in noodhka uu leeyahay ilo ku filan si uu u qanciyo codsiyada kheyraadka gaarka ah ee boodhka.

Waxaan isticmaalnaa codsiyada codsiga si loogu isticmaalo qiyaasida inta agab dhab ahaantii Codsigu wuxuu u baahan yahay inuu si sax ah u shaqeeyo. Sidan jadwal-hayehu wuxuu u dhigi karaa noodes si dhab ah. Waxaan markii hore rabnay inaan dejinno codsiyada xad-dhaaf ah si aan u hubinno in boodh walba uu haysto tiro ku filan oo kheyraad ah, laakiin waxaan ogaanay in waqtiyada jadwalka ay si aad ah u kordheen oo qaar ka mid ah galalka aan waligood si buuxda loo jadwaleynin, sidii haddii aan codsi kheyraad loo helin.

Xaaladdan oo kale, jadwalku wuxuu inta badan ka soo saari lahaa boodhadhka oo ma awoodi doono inuu dib u jadwaleeyo sababtoo ah diyaaradda xakamaynta wax fikrad ah kama haysan inta agab ee codsigu u baahan yahay, qayb muhiim ah oo ka mid ah jadwalka jadwalka.

Xadka boodhka - tani waa xaddid cad oo ku saabsan boodhka. Waxay ka dhigan tahay qaddarka ugu sarreeya ee agabka ay kooxdu u qoondayn doonto weelka.

Mar labaad, ka dukumeenti rasmi ah: Haddii weel uu leeyahay 4 GiB xadka xaddidan, markaa kubelet (iyo wakhtiga weelka) ayaa dhaqan galin doona. Wakhtiga runtime ma ogola in weelka uu isticmaalo wax ka badan xadka la cayimay ee kheyraadka. Tusaale ahaan, marka habka ku jira weelka uu isku dayo inuu isticmaalo in ka badan xadiga la oggol yahay ee xusuusta, kernel-ka nidaamka wuxuu ku joojinayaa habka qaladka "Xusuusta ka baxsan" (OOM).

Weelku wuxuu had iyo jeer isticmaali karaa ilo ka badan inta lagu cayimay codsiga kheyraadka, laakiin marnaba ma isticmaali karo wax ka badan inta lagu cayimay xadka. Qiimahani way adag tahay in si sax ah loo dejiyo, laakiin aad bay muhiim u tahay.

Fikrad ahaan, waxaan rabnaa shuruudaha kheyraadka ee boodhka si ay u beddelaan meertada nolosha ee habka iyada oo aan la faragelin hababka kale ee nidaamka-taasi waa hadafka dejinta xad.

Nasiib darro, ma bixin karo tilmaamo gaar ah oo ku saabsan qiyamka la dejinayo, laakiin annagu nafteenna waxaan u hoggaansanahay xeerarka soo socda:

  1. Anaga oo adeegsanayna aaladda tijaabinta culeyska, waxaan ku ekaynaa heerka aasaasiga ah ee taraafikada waxaanan la soconaa isticmaalka agabka boodhka (xusuusta iyo processor-ka).
  2. Waxaan u dejinay codsiyada podska qiimo hoose oo sabab la'aan ah (oo leh xaddid kheyraad ah oo ku dhow 5 jeer qiimaha codsiyada) oo fiiri. Marka codsiyadu aad u hooseeyaan, nidaamku ma bilaaban karo, badanaa wuxuu keenaa khaladaad Runtime Go dahsoon.

Ogsoonow in xaddidaadaha kheyraadka sare ay ka dhigayaan jadwal aad u adag sababtoo ah boodhku wuxuu u baahan yahay nood bartilmaameed leh oo leh ilo ku filan.

Bal qiyaas xaalad aad haysato shabakad shabakadeed oo khafiif ah oo leh xad kheyraad aad u sarreeya, dheh 4 GB oo xusuusta ah. Habkani waxa ay u badan tahay in uu si siman u miisaamo, qayb kasta oo cusubna waa in lagu jadwaleeyaa noodhka leh ugu yaraan 4 GB ee xusuusta la heli karo. Haddi aanu noodhkan oo kale jirin, kooxdu waa in ay soo bandhigtaa noodh cusub si ay u habaynayso boodhkaas, kaas oo qaadan kara wakhti. Waxaa muhiim ah in la ilaaliyo farqiga u dhexeeya codsiyada kheyraadka iyo xadka ilaa ugu yaraan si loo hubiyo miisaanka si degdeg ah oo siman.

Talaabada labaad: dejinta imtixaanada Noolaanshaha iyo Diyaargarowga

Kani waa mawduuc kale oo daahsoon oo inta badan lagaga hadlo bulshada Kubernetes. Waa muhiim inaad si fiican u fahanto imtixaanada Noolaanshaha iyo Diyaargarowga maadaama ay bixinayaan hab software uu si habsami leh ugu shaqeeyo oo uu yareeyo wakhtiga. Si kastaba ha ahaatee, waxay keeni karaan waxqabad halis ah oo ku dhaca codsigaaga haddii aan si sax ah loo habeynin. Hoos waxaa ku qoran kooban sida ay labada muunad yihiin.

Nolol waxay tusinaysaa in weelku socdo iyo in kale. Haddii ay guuldarreysato, kubeletku wuxuu dilayaa weelka oo siyaasad dib u bilaabid ayaa loo oggolaaday. Haddii weelku aanu ku qalabaysanayn baadhitaan Nololeed, markaa xaalada caadiga ahi waxay ahaan doontaa guul - tani waa waxa ay ku leedahay Dukumentiyada Kubernetes.

Baarayaasha noloshu waa inay ahaadaan kuwo raqiis ah, taasoo la macno ah inaysan isticmaalin kheyraad badan, sababtoo ah si joogto ah ayay u shaqeeyaan waxayna u baahan yihiin inay ku wargeliyaan Kubernetes in codsigu socdo.

Haddii aad dejiso ikhtiyaarka aad ku ordi karto ilbiriqsi kasta, tani waxay ku dari doontaa 1 codsi ilbiriqsi kasta, markaa la soco in agabyo dheeraad ah loo baahan doono si loo maareeyo taraafikadan.

Shirkadeena, Tijaabooyin Nololeed ayaa hubiya qaybaha asaasiga ah ee codsiga, xitaa haddii xogta (tusaale, kaydka kaydinta fog ama kaydka) aan si buuxda loo heli karin.

Waxaan ku habbaynay abka leh barta dhamaadka "caafimaadka" oo si fudud u soo celinaysa koodka jawaabta 200. Tani waa calaamad muujinaysa in nidaamku socdo oo awood u leeyahay habaynta codsiyada (laakiin aan wali la socon).

Tusaale Diyaargarow waxay tusinaysaa in weelku diyaar u yahay in lagu gudbiyo codsiyada. Haddii baaritaanka diyaargarowga uu ku guuldareysto, kantaroolaha dhamaadka barta ayaa ka saaraya ciwaanka IP-ga guntiisa dhamaadka dhammaan adeegyada u dhigma boodhka. Tan waxa kale oo lagu sheegay dukumeentiyada Kubernetes.

Baadhitaanada u diyaargarowga ayaa isticmaala khayraad badan sababtoo ah waa in loo diraa gadaasha si ay u muujiso in codsigu diyaar u yahay inuu aqbalo codsiyada.

Waxaa jira dood badan oo bulshada dhexdeeda ah oo ku saabsan in si toos ah loo galo xogta macluumaadka. Marka la eego kharashka dheeraadka ah ( jeegaggu si joogto ah ayaa loo sameeyaa, laakiin waa la hagaajin karaa), waxaanu go'aansanay in codsiyada qaarkood, u diyaargarowga u adeegida gaadiidka la tiriyo oo kaliya ka dib markii la xaqiijiyo in diiwaanada laga soo celiyo xogta. Tijaabooyin diyaarsanaan ah oo si wanaagsan loo nashqadeeyay ayaa xaqiijiyay heerar sare oo la heli karo waxaana meesha laga saaray wakhtiga dhimista inta lagu jiro hawlgelinta.

Haddii aad go'aansato inaad waydiiso xogta xogta si aad u tijaabiso diyaargarowga codsigaaga, hubi inuu yahay mid jaban intii suurtogal ah. Aynu qaadano codsigan:

SELECT small_item FROM table LIMIT 1

Waa kuwan tusaale sida aan u habaynno labadan qiime ee Kubernetes:

livenessProbe: 
 httpGet:   
   path: /api/liveness    
   port: http 
readinessProbe:  
 httpGet:    
   path: /api/readiness    
   port: http  periodSeconds: 2

Waxaad ku dari kartaa qaar ka mid ah xulashooyinka qaabeynta ee dheeraadka ah:

  • initialDelaySeconds - immisa ilbiriqsi ayaa u dhexeeya soo saarista weelka iyo bilowga shaybaarada.
  • periodSeconds - inta u dhaxaysa sugitaanka muunad run ah.
  • timeoutSeconds - tirada ilbiriqsi ka dib unugga waxaa loo arkaa xaalad degdeg ah. Wakhtiga kama dambaysta ah.
  • failureThreshold - tirada guuldarrooyinka imtixaanada ka hor inta aan calaamada dib u bilaabashada loo dirin boodhka.
  • successThreshold - tirada baaritaannada lagu guulaysto ka hor inta aan boodhku gelin xaalad diyaar ah (ka dib guuldarada, marka boodhka uu bilaabo ama soo kabsado).

Talaabada sadexaad: dejinta siyaasadaha shabakada caadiga ah ee pod

Kubernetes waxa ay leedahay muuqaal muuqaal ah oo shabakad β€œflat” ah; sida caadiga ah, dhammaan boodhadhku si toos ah ayay isula xidhiidhaan. Xaaladaha qaarkood tani maahan mid la jecel yahay.

Arrin amni oo suurtagal ah ayaa ah in qofka wax weeraraya uu isticmaali karo hal codsi oo nugul si uu taraafikada ugu diro dhammaan qeybaha shabakadda. Sida meelo badan oo amniga ah, mabda'a mudnaanta ugu yar ayaa halkan khuseeya. Fikrad ahaan, siyaasadaha shabakadu waa inay si cad u qeexaan xidhiidhka ka dhexeeya boodhka la oggol yahay iyo kuwa aan la oggolayn.

Tusaale ahaan, hoos waxaa ah siyaasad fudud oo diidaysa dhammaan taraafikada soo galaya meel magac gaar ah:

---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:  
 name: default-deny-ingress
spec:  
 podSelector: {}  
 policyTypes:  
   - Ingress

Sawirka qaabayntan:

Shan ayaa seegaya markii la geynayo codsiga ugu horreeya ee Kubernetes
(https://miro.medium.com/max/875/1*-eiVw43azgzYzyN1th7cZg.gif)
Faahfaahin dheeraad ah halkan.

Talaabada afraad: habdhaqan caadadii ah iyadoo la isticmaalayo jillaabyada iyo weelasha init

Mid ka mid ah yoolalkayada ugu muhiimsan waxay ahayd inaan bixinno ku-meel-gaar ah Kubernetes iyada oo aan la helin waqti-dhimis horumariyayaal. Tani way adagtahay sababtoo ah waxaa jira fursado badan oo lagu xidho codsiyada iyo in la xoreeyo agabkii ay isticmaaleen.

Dhibaatooyin gaar ah ayaa la yimid Nginx. Waxaan ogaanay in markii galalkaan si isdaba joog ah loo geeyay, isku xirnaanta firfircoon ayaa la tuuray ka hor inta aan si guul leh loo dhameystirin.

Ka dib cilmi baaris ballaaran oo khadka ah, waxay soo baxday in Kubernetes uusan sugin isku xirka Nginx si uu u daaliyo naftiisa ka hor inta uusan joojin boodhka. Isticmaalka jillaab-joojin hore, waxaan hirgelinay shaqeynta soo socota waxaanan gabi ahaanba ka takhalusnay wakhtiga hoos u dhaca:

lifecycle: 
 preStop:
   exec:
     command: ["/usr/local/bin/nginx-killer.sh"]

Laakiin nginx-killer.sh:

#!/bin/bash
sleep 3
PID=$(cat /run/nginx.pid)
nginx -s quit
while [ -d /proc/$PID ]; do
   echo "Waiting while shutting down nginx..."
   sleep 10
done

Halbeeg kale oo aad u faa'iido badan ayaa ah isticmaalka weelasha init si loo xakameeyo bilowga codsiyada gaarka ah. Tani waxay si gaar ah faa'iido u leedahay haddii aad haysatid habka hayaanka xogta xog-ururin ee u baahan inuu socdo ka hor inta uusan arjiga bilaaban. Waxa kale oo aad u cayimi kartaa xadka kheyraadka sare ee habkan adiga oo aan xaddidin codsiga ugu muhiimsan.

Nidaam kale oo caadi ah ayaa ah in la galo siraha ku jira weelka gudaha kaas oo siinaya shahaadooyinkaas cutubka ugu muhiimsan, kaas oo ka hortagaya gelitaanka aan la oggolayn ee siraha qaybta codsiga laftiisa.

Sida caadiga ah, xigasho dukumentiyada: Koonteenarada Init waxay si badbaado leh u maamulaan koodka gaarka ah ama yutiilitiyada taas oo haddii kale hoos u dhigi doonta amniga sawirka weelka codsiga. Adoo kala saaraya qalabka aan loo baahnayn, waxaad xaddidaysaa dusha weerarka ee sawirka weelka codsiga.

Tallaabada Shanaad: Habaynta Kernel-ka

Ugu dambeyntii, aan ka hadalno farsamo aad u horumarsan.

Kubernetes waa madal aad u furfuran oo kuu ogolaanaysa inaad u socodsiiso culayska shaqada sida aad u aragto inay ku habboon tahay. Waxaan haynaa tiro codsiyo ah oo waxqabad sare leh kuwaas oo aad u kheyraad badan. Ka dib markii aanu samaynay tijaabo culus oo culus, waxaanu ogaanay in hal codsi uu ku dhibtoonayay inuu xakameeyo culayska taraafiga ee la filayo markii Kubernetes's' settings default ay shaqaynayeen.

Si kastaba ha noqotee, Kubernetes wuxuu kuu oggolaanayaa inaad socodsiiso weel mudnaan leh oo beddelaya cabbirrada kernel-ka oo keliya boodh gaar ah. Waa kuwan waxa aan beddelnay tirada ugu badan ee isku xirka furan:

initContainers:
  - name: sysctl
     image: alpine:3.10
     securityContext:
         privileged: true
      command: ['sh', '-c', "sysctl -w net.core.somaxconn=32768"]

Tani waa farsamo aad u horumarsan oo aan inta badan loo baahnayn. Laakiin haddii codsigaagu uu la halgamayo sidii uu ula qabsan lahaa culayska culus, waxaad isku dayi kartaa inaad hagaajiso qaar ka mid ah goobahan. Faahfaahin dheeraad ah oo ku saabsan habkan iyo dejinta qiyamka kala duwan - sida had iyo jeer dukumentiyada rasmiga ah.

Gabagabada

Iyadoo Kubernetes laga yaabo inay u ekaato xal diyaar ah oo ka baxsan sanduuqa, waxaa jira dhowr tillaabo oo muhiim ah oo aad u baahan tahay inaad qaado si aad u ilaaliso codsiyadaada si habsami leh.

Inta lagu jiro socdaalkaaga Kubernetes, waxaa muhiim ah inaad raacdo "wareegga tijaabada culeyska": bilaw arjiga, tijaabi, u fiirso mitirka iyo habdhaqanka cabirida, hagaaji qaabaynta ku salaysan xogtaas, ka dibna ku celi wareegga mar kale.

Noqo mid dhab ah oo ku saabsan taraafikada aad filayso oo isku day inaad ka sii gudubto si aad u aragto qaybaha marka hore jebiya. Habkan ku celcelinta ah, kaliya in yar oo ka mid ah talooyinka liiska ayaa ku filnaan kara si loo gaaro guul. Ama waxa laga yaabaa inay u baahato is-beddel qoto dheer.

Mar walba is weydii su'aalahan:

  1. Immisa agab ah ayay arjiyada isticmalaan sideese muggani isu beddeli doonaa?
  2. Waa maxay shuruudaha miisaanka dhabta ah? Celcelis ahaan intee in le'eg oo taraafig ah ayuu appku qaban doonaa? Ka waran gaadiidka ugu sarreeya?
  3. Immisa jeer ayaa adeeggu u baahan doonaa inuu si siman u cabbiro? Intee in le'eg ayay degdeg ugu baahan yihiin gadxyada cusub in la keeno khadka si ay u helaan taraafikada?
  4. Sidee si sax ah loo xidhaa galalka? Tani gabi ahaanba ma lagama maarmaan ma tahay? Suurtagal ma tahay in la gaaro hawlgelinta iyadoon waqti la'aan?
  5. Sideed u yarayn kartaa khataraha amniga oo aad u xaddidi kartaa waxyeelada ka timaadda boob kasta oo la jabsado? Ma jiraan wax adeeg ah oo haysta ogolaansho ama galaangal aanay u baahnayn?

Kubernetes waxay bixisaa madal cajiib ah oo kuu ogolaanaysa inaad ka faa'iidaysato dhaqamada ugu wanaagsan ee lagu geynayo kumanaan adeeg oo koox ah. Si kastaba ha ahaatee, codsi kasta waa ka duwan yahay. Mararka qaarkood hirgelintu waxay u baahan tahay shaqo yar oo dheeraad ah.

Nasiib wanaag, Kubernetes waxay bixisaa qaabeynta lagama maarmaanka ah si loo gaaro dhammaan yoolalka farsamada. Adigoo isticmaalaya isku darka codsiyada kheyraadka iyo xadka, Noolaanshaha iyo u diyaargarowga baaritaanada, weelasha gudaha, siyaasadaha shabakada, iyo hagaajinta kernel-ka caadiga ah, waxaad ku guuleysan kartaa waxqabad sare oo ay weheliso dulqaadka qaladka iyo miisaanka degdega ah.

Maxaa kale oo la akhriyaa:

  1. Hababka ugu fiican iyo hababka ugu wanaagsan ee lagu socodsiiyo weelasha iyo Kubernetes ee deegaanka wax soo saarka.
  2. 90+ qalab waxtar u leh Kubernetes: geynta, maamulka, la socodka, amniga iyo in ka badan.
  3. Kanaalkayaga Kubernetes ee Telegram.

Source: www.habr.com

Add a comment