Indray andro, nandritra ny fanavaozana nomanina ho an'ny k8s cluster, dia hitanay fa saika ny POD rehetra (eo amin'ny 500 amin'ny 1,000 eo ho eo) amin'ny node vaovao dia tsy afaka nanomboka, ary ny minitra dia niova haingana ho ora. Mikaroka am-pahavitrihana ny fotony izahay, saingy afaka adiny telo, mbola tao amin'ny sata ContainerCreating
ny PODS.
Soa ihany fa tsy ny tontolon'ny prod ary nokasaina ho an'ny faran'ny herinandro ny varavarankely fikojakojana. Nanana fotoana izahay nanadihady ny olana tsy nisy fanerena.
Aiza no tokony hanombohanao ny fikarohanao momba ny fotony? Te hahafantatra bebe kokoa momba ny vahaolana hitanay ve ianao? Ampidiro ary ankafizo!
Ny olana dia nanana sary docker marobe izahay izay mila sintonina ary atomboka amin'ny node tsirairay ao amin'ny cluster amin'ny fotoana iray ihany. Izany dia noho ny fisintonana sary docker maro miaraka amin'ny node tokana dia mety hitarika amin'ny fampiasana kapila avo lenta sy ny fotoana fanombohana mangatsiaka.
Indraindray dia maharitra adiny 3 ny fizotry ny CD mba hisintonana ireo sary. Na izany aza, tamin'ity indray mitoraka ity dia tafahitsoka tanteraka, satria ny habetsahan'ny PODS nandritra ny fanavaozana EKS (inline, rehefa manolo ny node rehetra ao amin'ny cluster) dia avo loatra.
Mipetraka ao amin'ny k8s (miorina amin'ny EKS ) ny fampiharanay rehetra. Mba hitsitsiana ny sarany ho an'ny DEV env, dia mampiasa ohatra amin'ny toerana izahay.
Mampiasa ny sary AmazonLinux2 izahay ho an'ny nodes.
Manana sampana fampiasa (FB) marobe izahay ao amin'ny tontolon'ny fampandrosoana izay apetraka tsy an-kijanona ao amin'ny cluster Kubernetes. Ny FB tsirairay dia manana ny rindranasany manokana, ary ny fampiharana tsirairay dia manana ny fiankinany (ao anaty sary).
Ao amin'ny tetikasanay, efa ho 200 ny apps ary mitombo io isa io. Ny fampiharana tsirairay dia mampiasa ny iray amin'ireo sary docker fototra 7 miaraka amin'ny haben'ny ~ 2 GB. Ny haben'ny totalin'ny sary voatahiry (ao amin'ny ECR ) dia eo amin'ny 3 GB.
Ny sary rehetra dia voatahiry ao amin'ny Amazon Elastic Container Registry (ECR).
Mampiasa ny karazana volume gp3 EBS ho an'ny nodes izahay.
Fotoana fanombohana mangatsiaka miitatra: Mety haharitra adiny 1 mahery ny fanombohana pod vaovao miaraka amin'ny sary vaovao, indrindra rehefa misintona sary maromaro miaraka amin'ny node iray.
Errors ErrImagePull: ErrImagePull
matetika na mijanona amin'ny fanjakana ContainerCreating
, manondro olana amin'ny fisarihana sary.
Fampiasana kapila avo lenta: Mijanona eo akaikin'ny 100% ny fampiasana kapila mandritra ny fizotry ny fisintonana sary, indrindra noho ny kapila I/O mafonja ilaina amin'ny decompression (oh: “unpigz”).
Olana amin'ny System DaemonSet: Ny rafitra sasany DaemonSets (toy ny aws-node
na ebs-csi-node
) dia nifindra tany amin'ny fanjakana "tsy vonona" noho ny tsindry kapila, misy fiantraikany amin'ny fahavononana node.
Tsy misy cache sary eo amin'ny nodes: Satria mampiasa toerana misy toerana izahay, dia tsy afaka mampiasa ny kapila eo an-toerana izahay mba hametahana sary.
Izany dia miteraka fampitandremana marobe amin'ny sampana endri-javatra, indrindra satria ny FB samihafa dia manana andiana sary fototra samihafa.
Taorian'ny fanadihadiana haingana dia hitanay fa ny olana lehibe dia ny fanerena ny kapila amin'ny nodes amin'ny alàlan'ny fizotry unpigz
. Ity dingana ity dia tompon'andraikitra amin'ny famongorana ny sary docker. Tsy nanova ny fikandrana default ho an'ny karazana volume gp3 EBS izahay, satria tsy mety amin'ny raharahanay.
Tamin'ny dingana voalohany dia nanapa-kevitra ny hampihena ny isan'ny POD amin'ny nodes izahay.
Ny hevi-dehibe amin'ny vahaolana dia ny manafana ny nodes alohan'ny hanombohan'ny fizotry ny CD amin'ny ampahany lehibe indrindra amin'ny sary docker (layer dependencies JS), izay ampiasaina ho sary faka ho an'ny fampiharana rehetra. Manana karazany 7 fara fahakeliny amin'ny sary faka miaraka amin'ny fiankinan-doha JS isika, izay mifandray amin'ny karazana fampiharana. Noho izany, andeha hojerentsika ny endrika CI/CD tany am-boalohany.
Ao amin'ny fantsona CI/CD, manana andry 3 izahay:
Pipeline CI/CD tany am-boalohany:
Amin'ny dingana Init
it: manomana ny tontolo iainana/variable isika, mamaritra ny fitambaran'ny sary hamboarina, sns...
Amin'ny dingana Build
: manamboatra ny sary izahay ary manosika azy ireo amin'ny ECR
Amin'ny dingana Deploy
: mametraka ny sary amin'ny k8s (fanavaozana ny fametrahana, sns ...)
Ny antsipiriany bebe kokoa momba ny famolavolana CICD tany am-boalohany:
main
. Ao amin'ny dingan'ny CI dia mamakafaka hatrany ireo andian-tsary izay novaina tao amin'ny FB izahay ary manangana azy ireo. Ny sampana main
dia marin-toerana foana, araka ny famaritana, tokony hisy foana ny dikan-teny farany amin'ny sary fototra.Misy fepetra takiana amin'ny dingana fanafanana.
Mandatory:
ContainerCreating
.Mahafinaritra ny manana fanatsarana:
Taorian'ny famakafakana ny fepetra takiana sy ny teritery, dia nanapa-kevitra ny hampihatra dingana mafana izay hanafana mialoha ny nodes miaraka amin'ny sary cache JS fototra. Ity dingana ity dia hatsangana alohan'ny hanombohan'ny fizotry ny CD, hiantohana fa ny node dia vonona amin'ny fametrahana ny FB, ary manana vintana ambony indrindra isika hamelezana ny cache.
Ity fanatsarana ity dia nozarainay ho dingana lehibe hazo:
Mamorona ny fitambaran'ny nodes (Virtual Node Group) isaky ny FB tsirairay
Ampio sary fototra amin'ny script cloud-init ho an'ireo nodes vaovao
Manampia dingana mialoha ny fametrahana ny DaemonSet miaraka amin'ny fizarana initContainers
mba hisintona ireo sary docker ilaina amin'ny nodes alohan'ny hanombohan'ny fizotry ny CD.
Mamorona andiana node vaovao ho an'ny FB tsirairay amin'ny alàlan'ny antso API (amin'ny rafitra autoscaling antoko faha-3) avy amin'ny fantsona CI.
Olana voavaha:
Isolation : Ny FB tsirairay dia manana ny node manokana, miantoka fa tsy misy fiantraikany amin'ny FB hafa ny tontolo iainana.
Flexibility : Afaka manova mora foana ny karazana node sy ny androm-piainany.
Cost Efficiency : Afaka mamafa ny nodes avy hatrany isika rehefa voafafa ny FB.
Mangarahara : Afaka manara-maso mora foana ny fampiasana sy ny fahombiazan'ny node isika (ny node tsirairay dia manana marika mifandraika amin'ny FB).
Fampiasana mahomby amin'ny trangan-toerana : Manomboka amin'ny sary fototra efa voafaritra mialoha ny trangan-toerana, izany hoe, aorian'ny fanombohan'ny node misy toerana dia efa misy ny sary fototra eo amin'ny node (avy amin'ny sampana lehibe).
Ampidino ny sary fototra JS rehetra avy amin'ny sampana lehibe mankany amin'ireo node vaovao amin'ny alàlan'ny script cloud-init
.
Raha alaina any ambadika any ny sary dia afaka manohy manangana sary vaovao tsy misy olana ny fizotry ny CD. Ankoatr'izay, ireo node manaraka (izay hoforonin'ny rafitra autoscaling) avy amin'ity vondrona ity dia hoforonina miaraka amin'ny angon-drakitra cloud-init
nohavaozina, izay efa misy toromarika hisintonana sary alohan'ny hanombohana.
Olana voavaha:
Famahana olana : Lasa ny tsindry kapila, satria nanavao ny script cloud-init
izahay tamin'ny fampidirana ny fampidinana ny sary fototra avy amin'ny sampana lehibe. Izany dia ahafahantsika mamely ny cache amin'ny fanombohana voalohany ny FB.
Fampiasana mahomby amin'ny trangan-toerana : Manomboka amin'ny angon- cloud-init
nohavaozina ny trangan-toerana. Midika izany fa aorian'ny fanombohan'ny node spot dia efa misy ny sary fototra eo amin'ny node (avy amin'ny sampana lehibe).
Fahombiazana nohatsaraina : Ny fizotry ny CD dia afaka manohy manangana sary vaovao tsy misy olana.
Ity hetsika ity dia nanampy ~ 17 segondra (antso API) amin'ny fantsona CI/CD.
Ity hetsika ity dia tsy misy dikany raha vao manomboka ny FB isika. Amin'ny manaraka, apetrakay amin'ny nodes efa misy ny fampiharana anay, izay efa manana sary fototra, izay natolotray tamin'ny fametrahana teo aloha.
Mila izany dingana izany isika, satria ny sary FB dia tsy mitovy amin'ny sary sampana lehibe. Mila misintona ny sary fototra FB ho any amin'ny nodes isika alohan'ny hanombohan'ny fizotry ny CD. Izany dia hanampy amin'ny fanalefahana ny fotoana fanombohana mangatsiaka lava sy ny fampiasana kapila avo lenta izay mety hitranga rehefa misintona sary mavesatra maro miaraka.
Ny tanjon'ny dingana mialoha ny fametrahana
Atsaharo ny fanerena kapila : Ampidino tsikelikely ny sary mavesatra indrindra amin'ny docker. Aorian'ny dingana init-deploy dia efa manana ny sary fototra amin'ny nodes isika, izay midika fa manana vintana lehibe amin'ny cache voadona isika.
Hatsarao ny fahombiazan'ny fandefasana : Ataovy azo antoka fa mafana ny nodes miaraka amin'ny sary docker tena ilaina, izay mitarika haingana kokoa (saika avy hatrany) ny fotoana fanombohana POD.
Ampitomboy ny fahamarinan-toerana : Ahena ny mety hisian'ny lesoka ErrImagePull
/ ContainerCreating
ary miantoka ny fijanonan'ny daemon rafitra ao anaty fanjakana "vonona".
Eo ambanin'ity dingana ity dia ampiana 10-15 minitra ny fizotry ny CD.
Andininy dingana mialoha ny fametrahana:
initContainers
.initContainers
dia tanterahina alohan'ny hanombohan'ny kaontenera lehibe, miantoka fa ny sary ilaina dia alaina alohan'ny hanombohan'ny kaontenera lehibe.Fampitahana ny dingana tany am-boalohany sy nohavaozina miaraka amin'ny dingan'ny fanamainana mialoha.
Dingana | Atombohy ny dingana fametrahana | Dingana mialoha ny fametrahana | miisa | Fotoana manontolo | Diff |
---|---|---|---|---|---|
Tsy misy fanafanana mialoha | 0 | 0 | 11m 21s | 11m 21s | 0 |
Miaraka amin'ny hafanana mialoha | 8 segondra | 58 segondra | 25 segondra | 1m 31 sy | -9m 50s |
Ny tena zava-dehibe dia niova ny fotoana "Deploy" (avy amin'ny baiko mihatra voalohany mankany amin'ny fanjakana mihazakazaka amin'ny pods) avy amin'ny 11m 21s ka hatramin'ny 25 segondra. Niova ny fotoana manontolo raha 11m 21s ho 1m 31s.
Hevi-dehibe iray, raha tsy misy sary fototra avy amin'ny sampana lehibe, dia hitovy amin'ny fotoana tany am-boalohany na kely kokoa ny fotoana "Deploy". Na izany aza, namaha olana momba ny fanerena ny kapila sy ny fotoana fanombohana mangatsiaka.
Ny olana lehibe ContainerCreating
dia voavaha tamin'ny alàlan'ny dingana fanafanana. Ho tombony dia nahenay be ny fotoana fanombohana mangatsiaka ny PODs.
Lasa ny tsindry kapila, satria efa manana ny sary fototra eo amin'ny nodes izahay. Ny daemonSets rafitra dia ao anatin'ny toe-javatra "vonona" sy "salama" (satria tsy misy tsindry amin'ny kapila), ary tsy nahita lesoka ErrImagePull
mifandraika amin'ity olana ity izahay.
PS: Te-hiteny ho an'ny ekipa teknika lehibe ao amin'ny Justt aho ( https://www.linkedin.com/company/justt-ai ) noho ny asa tsy mety sasatra sy ny fomba fiasa tena mamorona amin'ny olana rehetra atrehin'izy ireo. miaraka amin'ny. Indrindra indrindra, antsoantso ho an'i Ronny Sharaby, ilay mpitarika tsara indrindra izay tompon'andraikitra amin'ny asa lehibe ataon'ny ekipa. Tsy andriko ny hahita ohatra tsara kokoa momba ny fiantraikan'ny famoronanao amin'ny vokatra Justt.