Dimy no tsy hita tamin'ny fametrahana ny fampiharana voalohany amin'ny Kubernetes

Dimy no tsy hita tamin'ny fametrahana ny fampiharana voalohany amin'ny KubernetesFail nataon'i Aris Dreamer

Maro no mihevitra fa ampy ny mamindra ny fampiharana amin'ny Kubernetes (na mampiasa Helm na tanana) - ary hisy ny fahasambarana. Saingy tsy ny zava-drehetra dia tsotra.

ekipa Mail.ru Cloud Solutions nandika lahatsoratra avy amin'ny injeniera DevOps Julian Gindy. Lazainy izay fandrika natrehin'ny orinasany nandritra ny fizotry ny fifindra-monina mba tsy hidiranao amin'ny raokandro iray ihany.

Dingana voalohany: Mametraha fangatahana sy fetra Pod

Andeha isika hanomboka amin'ny fametrahana tontolo madio izay handehanan'ny pods. Kubernetes dia tsara amin'ny fandaharam-potoana pod sy failover. Saingy hita fa ny mpandrindra indraindray dia tsy afaka mametraka pod raha sarotra ny manombatombana hoe firy ny loharanon-karena ilainy mba hiasa tsara. Eo no mipoitra ny fangatahana loharanon-karena sy fetra. Be dia be ny adihevitra momba ny fomba tsara indrindra hametrahana fangatahana sy fetra. Indraindray dia toa kanto kokoa noho ny siansa izany. Ity ny fomba fiasantsika.

Fangatahana pod no sanda lehibe ampiasain'ny mpandrindra mba hametrahana tsara ny pod.

avy amin'ny Documentation Kubernetes: Ny dingan'ny sivana dia mamaritra andiana node azo amboarina ny Pod. Ohatra, ny sivana PodFitsResources dia manamarina raha toa ka manana loharano ampy ny node iray mba hanomezana fahafaham-po ny fangatahana loharano manokana avy amin'ny pod.

Mampiasa ny fangatahana fangatahana izahay amin'ny fomba ahafahantsika manombatombana hoe firy ny loharanon-karena raha ny marina Mila azy io ny fampiharana mba hiasa tsara. Amin'izany fomba izany dia afaka mametraka ny nodes amin'ny fomba tena izy ny mpandrindra. Tany am-boalohany dia te-hanao fandaharam-potoana be loatra izahay mba hahazoana antoka fa ampy ny loharanon-karena ho an'ny Pod tsirairay, saingy tsikaritray fa nitombo be ny fotoanan'ny fandaharam-potoana, ary ny Pods sasany dia tsy voalahatra tanteraka, toy ny hoe tsy misy fangatahana loharanon-karena ho azy ireo.

Amin'ity tranga ity, ny mpandrindra dia matetika "maniry" ny pods ary tsy afaka mamerina azy ireo satria ny fiaramanidina fanaraha-maso dia tsy nahalala hoe ohatrinona ny loharano ilain'ny fampiharana, izay singa manan-danja amin'ny algorithm amin'ny fandaharam-potoana.

Pod limits dia fetra mazava kokoa ho an'ny pod. Izy io dia maneho ny habetsaky ny loharanon-karena ambony indrindra izay hatolotry ny kluster ho an'ny kaontenera.

Avy amin'ny antontan-taratasy ofisialy: Raha manana fetra fitadidiana 4 GiB ny kaontenera iray, dia hampihatra izany ny kubelet (sy ny fotoana fampandehanana ny kaontenera). Ny fotoana fampandehanana dia manakana ny kaontenera tsy hampiasa mihoatra ny fetran'ny loharano voatondro. Ohatra, rehefa misy dingana iray ao anaty kaontenera iray manandrana mampiasa mihoatra ny haben'ny fitadidiana navela, ny kernel rafitra dia mamarana ny dingana miaraka amin'ny hadisoana "tsy misy fitadidiana" (OOM).

Ny kaontenera dia afaka mampiasa loharanon-karena bebe kokoa noho ny fangatahan'ny loharanon-karena, saingy tsy afaka mampiasa mihoatra ny fetran'ny fetra. Sarotra ny mametraka tsara io sanda io, saingy tena zava-dehibe.

Ny tsara indrindra dia tiantsika ny hiova ny fepetra takian'ny pod iray mandritra ny androm-piainan'ny dingana iray nefa tsy manelingelina ireo dingana hafa ao amin'ny rafitra - izany no tanjon'ny fametrahana fetra.

Indrisy anefa, tsy afaka manome torolΓ lana manokana momba ny soatoavina tokony hapetraka aho, fa ny tenantsika dia manaraka ireto fitsipika manaraka ireto:

  1. Amin'ny fampiasana fitaovana fitiliana enta-mavesatra, dia maka tahaka ny haavon'ny fifamoivoizana izahay ary mandinika ny fampiasana ny loharano pod (fahatsiarovana sy processeur).
  2. Apetraho amin'ny sanda ambany tsy misy dikany ny fangatahana pod (miaraka amin'ny fetran'ny loharanon-karena eo amin'ny 5 heny amin'ny sandan'ny fangatahana) ary diniho. Rehefa ambany loatra ny fangatahana dia tsy afaka manomboka ny dingana, matetika miteraka hadisoana amin'ny fotoana fandehanan'ny Go.

Marihiko fa ny fetran'ny loharanon-karena avo kokoa dia manasarotra ny fandaharam-potoana satria ny pod dia mila node kendrena misy loharanon-karena ampy.

Alaivo sary an-tsaina ny toe-javatra misy anao manana mpizara tranonkala maivana miaraka amin'ny fetran'ny loharanon-karena avo be, toy ny fahatsiarovana 4 GB. Ity dingana ity dia azo inoana fa mila ahena mitsivalana, ary ny pod vaovao tsirairay dia mila apetraka amin'ny node misy fahatsiarovana 4 GB farafahakeliny. Raha tsy misy node toy izany dia tsy maintsy mampiditra node vaovao ny cluster mba hikarakarana ity pod ity, izay mety haka fotoana kely. Zava-dehibe ny hahazoana ny fahasamihafana kely indrindra eo amin'ny fangatahana loharanon-karena sy ny fetra mba hiantohana ny fisondrotana haingana sy milamina.

Dingana faharoa: Mametraha fitsapana momba ny fahavelomana sy ny fahavononana

Lohahevitra an-kolaka iray hafa resahina matetika ao amin'ny vondrom-piarahamonina Kubernetes ity. Zava-dehibe ny fahafantarana tsara ny andrana Liveness and Readiness satria manome fomba fiasa ho an'ny fampandehanana ny lozisialy tsy miovaova izy ireo ary manamaivana ny fotoana tsy ampoizina. Na izany aza, mety hisy fiantraikany lehibe amin'ny fampandehanan'ny fampiharana anao izy ireo raha tsy voarindra tsara. Ity ambany ity ny famintinana ireo santionany roa ireo.

Fiainana mampiseho raha mandeha ny kaontenera. Raha tsy mahomby izany, ny kubelet dia mamono ny fitoeran-javatra ary ny politikan'ny fanombohana dia alefa ho azy. Raha tsy misy fitaovana Liveness Probe ny kaontenera, dia ho fahombiazana ny fanjakana default - araka ny voalaza ao Documentation Kubernetes.

Tokony ho mora ny fitsikilovana liveness, izany hoe tsy mandany loharanon-karena be, satria mandeha matetika izy ireo ary tokony hampahafantatra an'i Kubernetes fa mandeha ny fampiharana.

Raha apetrakao ny safidy handehanana isaky ny segondra, dia hanampy fangatahana 1 isan-tsegondra izany, koa tandremo fa ilaina ny fitaovana fanampiny handaminana ity fifamoivoizana ity.

Ao amin'ny orinasanay, ny fitsapana Liveness dia manandrana ireo singa fototra amin'ny fampiharana iray, na dia tsy misy tanteraka aza ny angon-drakitra (ohatra, avy amin'ny angon-drakitra lavitra na cache).

Nametraka teboka farany "fahasalamana" izahay ao amin'ny fampiharana izay mamerina fotsiny ny fehezan-dalΓ na valiny 200. Izany dia famantarana fa mandeha ny dingana ary afaka mitantana ny fangatahana (fa tsy mbola fifamoivoizana).

fitsapana fahavononana manondro raha vonona ny hanolotra fangatahana ny fitoeran-javatra. Raha tsy mahomby ny famotopotorana fahavononana dia esorin'ny mpanara-maso ny teboka farany ny adiresy IP an'ny pod amin'ny faran'ny serivisy rehetra mifanandrify amin'ny pod. Voalaza ao amin'ny antontan-taratasy Kubernetes ihany koa izany.

Mandany loharanon-karena bebe kokoa ny famotopotorana fahavononana, satria tsy maintsy mamely ny backend izy ireo amin'ny fomba hanehoana fa vonona ny hanaiky ny fangatahana ny fampiharana.

Be dia be ny adihevitra eo amin'ny fiarahamonina momba ny fidirana mivantana amin'ny angon-drakitra. Raha jerena ny overhead (matetika ny fisavana, saingy azo fehezina izy ireo), dia nanapa-kevitra izahay fa ho an'ny fampiharana sasany, ny fahavononana hanompo ny fifamoivoizana dia isaina aorian'ny fanamarinana fa naverina avy amin'ny angon-drakitra ny rakitra. Ny fitsapana fahavononana voalamina tsara dia niantoka ny haavon'ny fahafahana ambony kokoa ary nanafoana ny fotoana fitsaharana nandritra ny fametrahana.

Raha manapa-kevitra ny hanontany ny angon-drakitra ianao mba hitsapana ny fahavononan'ny fampiharanao, ataovy azo antoka fa mora araka izay azo atao izany. Andeha horaisintsika ity fanontaniana ity:

SELECT small_item FROM table LIMIT 1

Ity misy ohatra iray amin'ny fomba amboary ireo soatoavina roa ireo ao amin'ny Kubernetes:

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

Azonao atao ny manampy safidy fanitsiana fanampiny vitsivitsy:

  • initialDelaySeconds - firy segondra no lasa eo anelanelan'ny fandefasana ny kaontenera sy ny fanombohan'ny fandefasana ny probe.
  • periodSeconds - elanelam-piandrasana eo anelanelan'ny fandehanana santionany.
  • timeoutSeconds - ny isan'ny segondra aorian'izay dia heverina ho vonjy maika ny pod. Fotoana mahazatra.
  • failureThreshold dia ny isan'ny tsy fahombiazan'ny fitsapana alohan'ny handefasana famantarana fanombohana amin'ny pod.
  • successThreshold dia ny isan'ny fitsapana mahomby alohan'ny hifindran'ny pod ho amin'ny toetra vonona (aorian'ny tsy fahombiazana rehefa manomboka na miverina ny pod).

Dingana fahatelo: Fametrahana ny politikan'ny tamba-jotra Default an'ny Pod

Kubernetes dia manana topografika tamba-jotra "fisaka", raha ny mahazatra dia mifandray mivantana amin'ny tsirairay ny pods rehetra. Amin'ny toe-javatra sasany dia tsy ilaina izany.

Olana iray mety ho fiarovana dia ny hoe azon'ny mpanafika iray mampiasa rindranasa marefo iray handefasana fifamoivoizana amin'ny pods rehetra ao amin'ny tambajotra. Toy ny amin'ny lafiny maro amin'ny fiarovana, dia mihatra eto ny fitsipiky ny tombontsoa faran'izay kely indrindra. Raha ny tokony ho izy, ny politikan'ny tambajotra dia tokony hilaza mazava tsara hoe iza avy ny fifandraisana misy eo amin'ny pods azo atao ary iza no tsy azo.

Ohatra, ity manaraka ity dia politika tsotra izay mandΓ  ny fifamoivoizana rehetra miditra ho an'ny sehatra anarana manokana:

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

Famantarana an'ity konfigurasi ity:

Dimy no tsy hita tamin'ny fametrahana ny fampiharana voalohany amin'ny Kubernetes
(https://miro.medium.com/max/875/1*-eiVw43azgzYzyN1th7cZg.gif)
More details eto.

Dingana fahefatra: Fitondran-tena manokana miaraka amin'ny hooks sy ny kaontenera Init

Ny iray amin'ireo tanjonay lehibe indrindra dia ny hanome fametrahana ao amin'ny Kubernetes tsy misy fotoana fitsaharana ho an'ny mpamorona. Sarotra izany satria misy safidy maro amin'ny fanakatonana ny rindranasa sy ny famoahana ny loharanon-karenany.

Nipoitra ny fahasarotana manokana Nginx. Tsikarinay fa tamin'ny fametrahana ireo Pods ireo amin'ny filaharana dia tapaka ny fifandraisana mavitrika alohan'ny hamitana azy.

Taorian'ny fikarohana lalina tao amin'ny Internet dia hita fa tsy miandry ny fifandraisana Nginx ho reraka ny Kubernetes alohan'ny hanakatona ny pod. Miaraka amin'ny fanampian'ny hook mialoha ny fijanonana, dia nampihatra ity fampiasa manaraka ity izahay ary nanaisotra tanteraka ny fotoana fiatoana:

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

ary eto 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

Ny paradigma tena mahasoa iray hafa dia ny fampiasana kaontenera init hiatrehana ny fandefasana fampiharana manokana. Tena ilaina tokoa izany raha manana fizotry ny fifindra-monina angon-drakitra misy loharanon-karena izay tsy maintsy atao alohan'ny hanombohan'ny fampiharana. Azonao atao ihany koa ny mamaritra fetran'ny loharanon-karena ambony kokoa ho an'ity dingana ity nefa tsy mametraka fetra toy izany ho an'ny fampiharana lehibe.

Ny tetika mahazatra iray hafa dia ny fidirana amin'ny tsiambaratelo ao amin'ny kaontenera init, izay manome ireo mari-pamantarana ireo ho an'ny maody lehibe, izay manakana ny fidirana tsy nahazoana alalana amin'ny tsiambaratelo avy amin'ny maody fampiharana lehibe.

Toy ny mahazatra, teny nalaina avy amin'ny antontan-taratasy: init containers dia mampandeha soa aman-tsara ny kaody mpampiasa na fitaovana izay mety hanimba ny fiarovana ny sarin'ny fitoeran'ny fampiharana. Amin'ny alΓ lan'ny fanavahana ireo fitaovana tsy ilaina dia mametra ny sarin'ny fanafihan'ny sarin'ny fitoeran'ny fampiharana ianao.

Dingana fahadimy: Configuration Kernel

Farany, andeha isika hiresaka momba ny teknika mandroso kokoa.

Ny Kubernetes dia sehatra mora azo ampiasaina izay ahafahanao mampandeha enta-mavesatra araka izay hitanao fa mety. Manana fampiharana maro tena mahomby izahay izay tena be loharanon-karena. Taorian'ny fanaovana fitiliana enta-mavesatra be dia be, dia hitanay fa sahirana ny iray amin'ireo rindranasa manaraka ny enta-mavesatry ny fifamoivoizana andrasana rehefa mihatra ny fandrindrana Kubernetes default.

Na izany aza, ny Kubernetes dia ahafahanao mitantana fitoeran-javatra manokana izay manova ny mari-pamantarana kernel ho an'ny pod manokana. Ity no nampiasanay hanovana ny isan'ny fifandraisana misokatra be indrindra:

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

Ity dia teknika mandroso kokoa izay matetika tsy ilaina. Saingy raha sahirana amin'ny fiatrehana enta-mavesatra ny fampiharana anao dia azonao atao ny manandrana manitsy ny sasany amin'ireo toe-javatra ireo. Fanazavana bebe kokoa momba ity dingana ity sy ny fametrahana soatoavina samihafa - toy ny mahazatra ao amin'ny antontan-taratasy ofisialy.

Ho famaranana

Na dia toa vahaolana ivelan'ny boaty aza ny Kubernetes, dia misy dingana lehibe vitsivitsy tsy maintsy atao mba hampandehanana tsara ny fampiharana.

Mandritra ny fifindra-monina mankany Kubernetes dia zava-dehibe ny manaraka ny "tsingerin'ny fitsapana enta-mavesatra": mandehana ny fampiharana, andramo eo ambanin'ny enta-mavesatra, diniho ny metrika sy ny fitondran-tenan'ny scaling, amboary ny fikirakirana mifototra amin'ity data ity, ary avereno indray ity tsingerina ity.

Aoka ianao ho tena zava-misy momba ny fifamoivoizana andrasana ary andramo ny hihoatra izany mba hahitana hoe iza no singa simba voalohany. Miaraka amin'ity fomba fiasa miverimberina ity, vitsivitsy amin'ireo tolo-kevitra voatanisa ihany no mety ho ampy hahazoana fahombiazana. Na mety ilaina ny fanamboarana lalindalina kokoa.

Anontanio ny tenanao foana ireto fanontaniana ireto:

  1. Firy ny loharanon-karena lanin'ny fampiharana ary ahoana no hiova io vola io?
  2. Inona avy ireo fepetra takian'ny scaling? Ohatrinona ny fifamoivoizan'ny fampiharana amin'ny antsalany? Ahoana ny amin'ny fifamoivoizana be indrindra?
  3. Impiry impiry ny serivisy no mila mihalehibe? Haingana ve no ilain'ny pod vaovao hitsangana sy hihazakazaka mba hahazoana fifamoivoizana?
  4. Manao ahoana ny fanakatonana ny pods? Tena ilaina ve izany? Azo atao ve ny manatratra ny fametrahana tsy misy fiatoana?
  5. Ahoana no hanamaivanana ny risika amin'ny fiarovana sy hamerana ny fahasimbana avy amin'ireo pods simba? Misy serivisy manana alalana na fidirana tsy ilainy ve?

Kubernetes dia manome sehatra tsy mampino izay ahafahanao mampiasa fomba fanao tsara indrindra amin'ny fametrahana serivisy an'arivony ao anaty cluster. Na izany aza, samy hafa ny fampiharana rehetra. Indraindray ny fampiharana dia mitaky asa bebe kokoa.

Soa ihany fa ny Kubernetes dia manome ny toe-javatra ilaina mba hahatratrarana ny tanjona ara-teknika rehetra. Amin'ny alΓ lan'ny fampiasana fitambaran'ny fangatahana loharanon-karena sy fetra, fitsikilovana Liveness sy Readiness, container init, politikan'ny tambajotra, ary fanitsiana kernel mahazatra, dia azonao atao ny manatratra fahombiazana avo lenta miaraka amin'ny fandeferana ny hadisoana sy ny scalability haingana.

Inona koa no vakiana:

  1. Fomba fanao tsara indrindra sy fomba fanao tsara indrindra ho an'ny kaontenera mihazakazaka sy Kubernetes amin'ny tontolo famokarana.
  2. 90+ Fitaovana mahasoa ho an'ny Kubernetes: Fametrahana, Fitantanana, Fanaraha-maso, Fiarovana ary maro hafa.
  3. Ny fantsonay Manodidina ny Kubernetes ao amin'ny Telegram.

Source: www.habr.com

Add a comment