Uwchraddio Clwstwr Kubernetes Heb Amser Segur

Uwchraddio Clwstwr Kubernetes Heb Amser Segur

Proses uwchraddio ar gyfer eich clwstwr Kubernetes

Ar ryw adeg, wrth ddefnyddio clwstwr Kubernetes, mae angen diweddaru nodau rhedeg. Gall hyn gynnwys diweddariadau pecyn, diweddariadau cnewyllyn, neu ddefnyddio delweddau peiriant rhithwir newydd. Yn nherminoleg Kubernetes gelwir hyn "Amhariad Gwirfoddol".

Mae'r swydd hon yn rhan o gyfres 4 post:

  1. Mae'r post hwn.
  2. Cau codennau'n gywir mewn clwstwr Kubernetes
  3. Gohirio terfynu pod pan gaiff ei ddileu
  4. Sut i Osgoi Amser Segur Clwstwr Kubernetes Gan Ddefnyddio Cyllidebau PodAmhariad

(tua. Disgwyliwch gyfieithiadau o'r erthyglau sy'n weddill yn y gyfres yn y dyfodol agos)

Yn yr erthygl hon, byddwn yn disgrifio'r holl offer y mae Kubernetes yn eu darparu i sicrhau dim amser segur ar gyfer y nodau sy'n rhedeg yn eich clwstwr.

Diffinio'r broblem

Byddwn yn mabwysiadu ymagwedd naΓ―f i ddechrau, yn nodi problemau ac yn asesu risgiau posibl y dull hwn, ac yn adeiladu gwybodaeth i ddatrys pob un o'r problemau y byddwn yn dod ar eu traws trwy gydol y cylchred. Y canlyniad yw cyfluniad sy'n defnyddio bachau cylch bywyd, stilwyr parodrwydd, a chyllidebau aflonyddwch Pod i gyflawni ein nod amser segur sero.

I ddechrau ein taith, gadewch i ni gymryd enghraifft bendant. Gadewch i ni ddweud bod gennym ni glwstwr Kubernetes o ddau nod, lle mae cymhwysiad yn rhedeg gyda dau god y tu Γ΄l i Service:

Uwchraddio Clwstwr Kubernetes Heb Amser Segur

Gadewch i ni ddechrau gyda dau god gyda Nginx a Gwasanaeth yn rhedeg ar ein dau nod clwstwr Kubernetes.

Rydym am ddiweddaru fersiwn cnewyllyn dau nod gweithiwr yn ein clwstwr. Sut ydyn ni'n gwneud hyn? Ateb syml fyddai cychwyn nodau newydd gyda'r ffurfweddiad wedi'i ddiweddaru ac yna cau'r hen nodau wrth gychwyn y rhai newydd. Tra bydd hyn yn gweithio, bydd rhai problemau gyda'r dull hwn:

  • Pan fyddwch yn diffodd hen nodau, bydd y codennau sy'n rhedeg arnynt hefyd yn cael eu diffodd. Beth os oes angen clirio'r codennau ar gyfer cau i lawr yn osgeiddig? Efallai na fydd y system rhithwiroli rydych chi'n ei defnyddio yn aros i'r broses lanhau gael ei chwblhau.
  • Beth os byddwch chi'n diffodd pob nod ar yr un pryd? Byddwch yn cael amser segur teilwng wrth i'r codennau symud i nodau newydd.

Mae angen ffordd arnom i fudo codennau'n osgeiddig o hen nodau tra'n sicrhau nad oes unrhyw un o'n prosesau gweithwyr yn rhedeg wrth i ni wneud newidiadau i'r nod. Neu pan fyddwn yn disodli'r clwstwr yn llwyr, fel yn yr enghraifft (hynny yw, rydym yn disodli delweddau VM), rydym am drosglwyddo cymwysiadau rhedeg o hen nodau i rai newydd. Yn y ddau achos, rydym am atal codennau newydd rhag amserlennu ar hen nodau, ac yna troi pob cod rhedeg allan ohonynt. I gyflawni'r nodau hyn gallwn ddefnyddio'r gorchymyn kubectl drain.

Ailddosbarthu pob cod o nod

Mae gweithrediad y draen yn caniatΓ‘u ichi ailddosbarthu'r holl godennau o nod. Yn ystod gweithrediad draen, mae'r nod wedi'i farcio fel un na ellir ei drefnu (baner NoSchedule). Mae hyn yn atal codennau newydd rhag ymddangos arno. Yna mae draen yn dechrau dadfeddiannu codennau o'r nod, yn cau'r cynwysyddion sy'n rhedeg ar y nod ar hyn o bryd, gan anfon signal TERM cynwysyddion mewn pod.

Er bod kubectl drain yn gwneud gwaith gwych o droi codennau allan, mae dau ffactor arall a all achosi i weithrediad y draen fethu:

  • Rhaid i'ch cais allu dod i ben yn osgeiddig ar Γ΄l ei gyflwyno TERM signal. Pan fydd codennau'n cael eu troi allan, mae Kubernetes yn anfon signal TERM cynwysyddion ac yn aros iddynt stopio am gyfnod penodol o amser, ac ar Γ΄l hynny, os nad ydynt wedi stopio, mae'n eu terfynu'n rymus. Mewn unrhyw achos, os nad yw'ch cynhwysydd yn canfod y signal yn gywir, gallwch chi ddiffodd codennau'n anghywir o hyd os ydynt yn rhedeg ar hyn o bryd (er enghraifft, mae trafodiad cronfa ddata ar y gweill).
  • Rydych chi'n colli'r holl godau sy'n cynnwys eich cais. Efallai na fydd ar gael pan fydd cynwysyddion newydd yn cael eu lansio ar nodau newydd, neu os yw'ch codennau'n cael eu defnyddio heb reolwyr, efallai na fyddant yn ailgychwyn o gwbl.

Osgoi amser segur

Er mwyn lleihau amser segur oherwydd aflonyddwch gwirfoddol, megis gweithrediad draen ar nod, mae Kubernetes yn darparu'r opsiynau trin methiant canlynol:

Yng ngweddill y gyfres, byddwn yn defnyddio'r nodweddion Kubernetes hyn i liniaru effaith mudo codennau. Er mwyn ei gwneud hi'n haws dilyn y prif syniad, byddwn yn defnyddio ein hesiampl uchod gyda'r ffurfweddiad adnoddau canlynol:

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

Mae'r cyfluniad hwn yn enghraifft fach iawn Deployment, sy'n rheoli codennau nginx yn y clwstwr. Yn ogystal, mae'r ffurfweddiad yn disgrifio'r adnodd Service, y gellir ei ddefnyddio i gael mynediad i godau nginx mewn clwstwr.

Trwy gydol y cylch, byddwn yn ehangu'r cyfluniad hwn yn ailadroddol fel ei fod yn y pen draw yn cynnwys yr holl alluoedd y mae Kubernetes yn eu darparu i leihau amser segur.

I gael fersiwn wedi'i gweithredu a'i phrofi'n llawn o ddiweddariadau clwstwr Kubernetes am ddim amser segur ar AWS a thu hwnt, ewch i Gruntwork.io.

Darllenwch erthyglau eraill ar ein blog hefyd:

Ffynhonnell: hab.com

Ychwanegu sylw