Aġġornament ta' cluster Kubernetes mingħajr ħin ta' waqfien

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:

  1. Din il-kariga.
  2. Tfigħ korrett tal-miżwed fi cluster Kubernetes
  3. Tlestija mdewma ta' pod meta titħassar
  4. 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:

Aġġornament ta' cluster Kubernetes mingħajr ħin ta' waqfien

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:

---
apiVersion: apps/v1
kind: Deployment
metadata:
 name: nginx-deployment
 labels:
   app: nginx
spec:
 replicas: 2
 selector:
   matchLabels:
     app: nginx
 template:
   metadata:
     labels:
       app: nginx
   spec:
     containers:
     - name: nginx
       image: nginx:1.15
       ports:
       - containerPort: 80
---
kind: Service
apiVersion: v1
metadata:
 name: nginx-service
spec:
 selector:
   app: nginx
 ports:
 - protocol: TCP
   targetPort: 80
   port: 80

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.

Aqra wkoll artikli oħra fuq il-blog tagħna:

Sors: www.habr.com

Żid kumment