Aġġornament ta' cluster Kubernetes mingħajr ħin ta' waqfien
Proċess ta' aġġornament għall-cluster Kubernetes tiegħek
F'xi punt, meta tuża cluster Kubernetes, hemm bżonn li jiġu aġġornati n-nodi li qed jaħdmu. Dan jista' jinkludi aġġornamenti tal-pakketti, aġġornamenti tal-kernel, jew skjerament ta' immaġini ġodda ta' magni virtwali. Fit-terminoloġija Kubernetes din tissejjaħ "Tfixkil Volontarju".
Din il-kariga hija parti minn serje ta’ 4 post:
Din il-kariga.
Tfigħ korrett tal-miżwed fi cluster Kubernetes
Tlestija mdewma ta' pod meta titħassar
Kif Tevita Waqfien tal-Kubernetes Cluster billi tuża PodDisruptionBudgets
(madwar. Stenna traduzzjonijiet tal-artikli li fadal fis-serje fil-futur qarib)
F'dan l-artikolu, se niddeskrivu l-għodod kollha li Kubernetes jipprovdi biex jinkiseb żero waqfien għan-nodi li jaħdmu fil-cluster tiegħek.
Id-definizzjoni tal-problema
Se nieħdu approċċ naive għall-ewwel, nidentifikaw il-problemi u nevalwaw ir-riskji potenzjali ta 'dan l-approċċ, u nibnu għarfien biex insolvu kull waħda mill-problemi li niltaqgħu magħhom matul iċ-ċiklu. Ir-riżultat huwa konfigurazzjoni li tuża ganċijiet taċ-ċiklu tal-ħajja, sondi ta’ prontezza, u baġits ta’ tfixkil tal-Pods biex nilħqu l-għan tagħna ta’ waqfien żero.
Biex nibdew il-vjaġġ tagħna, ejja nieħdu eżempju konkret. Ejja ngħidu li għandna raggruppament Kubernetes ta 'żewġ nodi, li fihom qed taħdem applikazzjoni b'żewġ imżiewed li jinsabu wara Service:
Nibdew b'żewġ imżiewed b'Nginx u Servizz li jaħdmu fuq iż-żewġ nodi tal-cluster Kubernetes tagħna.
Irridu naġġornaw il-verżjoni tal-kernel ta 'żewġ nodi tal-ħaddiema fil-cluster tagħna. Kif nagħmlu dan? Soluzzjoni sempliċi tkun li tibbutja nodi ġodda bil-konfigurazzjoni aġġornata u mbagħad tagħlaq in-nodi qodma waqt li tibda l-ġodda. Filwaqt li dan se jaħdem, se jkun hemm ftit problemi b'dan l-approċċ:
Meta titfi l-għoqiedi qodma, il-miżwed li jaħdmu fuqhom se jintfew ukoll. X'jiġri jekk il-miżwed jeħtieġ li jiġu kklerjati għal għeluq graceful? Is-sistema ta 'virtwalizzazzjoni li qed tuża tista' ma tistennax biex jitlesta l-proċess tat-tindif.
X'jiġri jekk itfi n-nodi kollha fl-istess ħin? Ikollok waqfien deċenti waqt li l-imżiewed jimxu lejn nodi ġodda.
Għandna bżonn mod kif nimigraw b'mod grazzjuż il-miżwed minn nodi qodma filwaqt li niżguraw li l-ebda proċess tal-ħaddiema tagħna ma jkun qed jaħdem waqt li nagħmlu bidliet fin-nodu. Jew meta nagħmlu sostituzzjoni sħiħa tar-raggruppament, bħal fl-eżempju (jiġifieri, nissostitwixxu immaġini VM), irridu nittrasferixxu applikazzjonijiet li qed jaħdmu minn nodi qodma għal oħrajn ġodda. Fiż-żewġ każijiet, irridu nipprevjenu l-imżiewed ġodda milli jiġu skedati fuq nodi qodma, u mbagħad ikeċċi l-imżiewed kollha li jaħdmu minnhom. Biex niksbu dawn l-għanijiet nistgħu nużaw il-kmand kubectl drain.
Tqassam mill-ġdid il-miżwed kollha minn node
L-operazzjoni tad-drain tippermettilek li tqassam mill-ġdid il-miżwed kollha minn node. Waqt l-eżekuzzjoni tad-drain, in-nodu huwa mmarkat bħala mhux skedabbli (bandiera NoSchedule). Dan jipprevjeni imżiewed ġodda milli jidhru fuqha. Imbagħad ixxotta jibda jkeċċi l-imżiewed min-nodu, jagħlaq il-kontenituri li bħalissa qed jaħdmu fuq in-nodu billi jibgħat sinjal TERM kontenituri fil-miżwed.
Għalkemm kubectl drain se tagħmel biċċa xogħol tajba biex tkeċċi l-imżiewed, hemm żewġ fatturi oħra li jistgħu jikkawżaw l-operazzjoni tad-drenaġġ tonqos:
L-applikazzjoni tiegħek trid tkun tista' tintemm b'mod grazzjuż mal-preżentazzjoni TERM sinjal. Meta l-imżiewed jiġu żgumbrati, Kubernetes jibgħat sinjal TERM kontenituri u jistenna li jieqfu għal ammont speċifikat ta 'żmien, u wara, jekk ma waqfux, ittemmhom bil-forza. Fi kwalunkwe każ, jekk il-kontenitur tiegħek ma jipperċepixxix is-sinjal b'mod korrett, xorta tista 'titfi l-imżiewed b'mod skorrett jekk bħalissa qed jaħdmu (per eżempju, tranżazzjoni ta' database tkun għaddejja).
Titlef il-miżwed kollha li fihom l-applikazzjoni tiegħek. Jista 'ma jkunx disponibbli meta kontenituri ġodda jiġu mnedija fuq nodi ġodda, jew jekk il-miżwed tiegħek jiġu skjerati mingħajr kontrolluri, jistgħu ma jerġgħu jibdew xejn.
Evitar ħin ta' waqfien
Biex timminimizza l-waqfien minn tfixkil volontarju, bħal minn operazzjoni ta' drenaġġ fuq node, Kubernetes jipprovdi l-għażliet li ġejjin għall-immaniġġjar tal-fallimenti:
Fil-bqija tas-serje, se nużaw dawn il-karatteristiċi Kubernetes biex intaffu l-impatt tal-imżiewed li jemigraw. Biex tagħmilha aktar faċli li ssegwi l-idea prinċipali, se nużaw l-eżempju tagħna hawn fuq bil-konfigurazzjoni tar-riżorsi li ġejja:
Din il-konfigurazzjoni hija eżempju minimu Deployment, li tamministra nginx pods fil-cluster. Barra minn hekk, il-konfigurazzjoni tiddeskrivi r-riżorsa Service, li jista 'jintuża biex jaċċessa nginx pods fi cluster.
Matul iċ-ċiklu kollu, aħna se nespandu b'mod iterattiv din il-konfigurazzjoni sabiex eventwalment tinkludi l-kapaċitajiet kollha li Kubernetes jipprovdi biex inaqqas il-ħin ta 'waqfien.
Għal verżjoni implimentata u ttestjata bis-sħiħ tal-aġġornamenti tal-clusters Kubernetes għal żero waqfien fuq AWS u lil hinn, żur Gruntwork.io.