Amelyore yon gwoup Kubernetes san D'

Amelyore yon gwoup Kubernetes san D'

Pwosesis ajou pou gwoup Kubernetes ou a

Nan kèk pwen, lè w ap itilize yon gwoup Kubernetes, gen yon bezwen mete ajou k ap kouri nœuds. Sa a ka gen ladan mizajou pake, mizajou nwayo, oswa deplwaman nouvo imaj machin vityèl. Nan tèminoloji Kubernetes yo rele sa "Dezòd volontè".

Pòs sa a fè pati yon seri 4 pòs:

  1. Pòs sa a.
  2. Fèmen kòrèk gous nan yon gwoup Kubernetes
  3. Retasyon an reta nan yon gous lè li efase
  4. Kijan pou Evite D' Kubernetes Cluster Sèvi ak PodDisruptionBudgets

(apeprè. Atann tradiksyon atik ki rete yo nan seri a nan fiti prè)

Nan atik sa a, nou pral dekri tout zouti ke Kubernetes bay pou reyalize zewo D' pou nœuds yo kouri nan gwoup ou a.

Defini pwoblèm nan

Nou pral pran yon apwòch nayif okòmansman, idantifye pwoblèm yo epi evalye risk potansyèl apwòch sa a, epi konstwi konesans pou rezoud chak pwoblèm nou rankontre pandan tout sik la. Rezilta a se yon konfigirasyon ki sèvi ak kwòk sik lavi, sond preparasyon, ak bidjè dezòd Pod pou reyalize objektif zewo tan nou an.

Pou kòmanse vwayaj nou an, ann pran yon egzanp konkrè. Ann di nou gen yon gwoup Kubernetes de nœuds, kote yon aplikasyon ap kouri ak de gous ki chita dèyè. Service:

Amelyore yon gwoup Kubernetes san D'

Ann kòmanse ak de gous ak Nginx ak Sèvis ki kouri sou de nœuds gwoup Kubernetes nou yo.

Nou vle mete ajou vèsyon nwayo de nœuds travayè nan gwoup nou an. Ki jan nou fè sa? Yon solisyon senp ta dwe demaraj nouvo nœuds ak konfigirasyon an mete ajou ak Lè sa a, fèmen nœuds yo fin vye granmoun pandan y ap kòmanse nouvo yo. Pandan ke sa a pral travay, pral gen kèk pwoblèm ak apwòch sa a:

  • Lè ou fèmen ansyen nœuds, gous yo ap kouri sou yo tou ap fèmen. E si gous yo bezwen netwaye pou fèmen grasyeuz? Sistèm Virtualization w ap itilize a ka pa tann pou pwosesis netwayaj la fini.
  • E si ou fèmen tout nœuds an menm tan? Ou pral jwenn desan D 'pandan gous yo deplase nan nouvo nœuds.

Nou bezwen yon fason pou emigre gous yo nan ansyen nœuds yo pandan n ap asire ke okenn nan pwosesis travayè nou yo pa kouri pandan n ap fè chanjman nan nœuds la. Oswa lè nou fè yon ranplasman konplè nan gwoup la, tankou nan egzanp lan (ki se, nou ranplase imaj VM), nou vle transfere aplikasyon kouri soti nan nœuds fin vye granmoun nan nouvo. Nan de ka yo, nou vle anpeche nouvo gous nan orè sou ansyen nœuds, ak Lè sa a, degèpi tout gous k ap kouri nan men yo. Pou reyalize objektif sa yo nou ka itilize kòmandman an kubectl drain.

Redistribiye tout gous soti nan yon ne

Operasyon drenaj la pèmèt ou redistribiye tout gous ki soti nan yon ne. Pandan egzekisyon drenaj la, node a make kòm ki pa gen randevou (drapo NoSchedule). Sa a anpeche nouvo gous parèt sou li. Lè sa a, drenaj kòmanse degèpi gous soti nan ne la, fèmen resipyan yo ki kounye a ap kouri sou ne a, voye yon siyal. TERM resipyan nan yon gous.

Malgre ke kubectl drain pral fè yon bon travay nan degèpi gous, gen de lòt faktè ki ka lakòz operasyon drenaj la echwe:

  • Aplikasyon w la dwe kapab fini avèk gras lè w soumèt li TERM siyal. Lè gous yo degèpi, Kubernetes voye yon siyal TERM resipyan yo epi tann pou yo sispann pou yon kantite tan espesifye, apre sa, si yo pa sispann, li mete fen nan yo lafòs. Nan nenpòt ka, si veso ou a pa wè siyal la kòrèkteman, ou ka toujou etenn gous mal si yo kounye a ap kouri (pa egzanp, yon tranzaksyon baz done ap pwogrese).
  • Ou pèdi tout gous ki genyen aplikasyon w lan. Li ka pa disponib lè nouvo resipyan yo lanse sou nouvo nœuds, oswa si gous ou yo deplwaye san yo pa contrôleur, yo ka pa rekòmanse ditou.

Evite D '

Pou minimize tan D 'nan dezòd volontè, tankou nan yon operasyon drenaj sou yon ne, Kubernetes bay opsyon sa yo manyen echèk:

Nan rès seri a, nou pral sèvi ak karakteristik Kubernetes sa yo pou bese enpak migrasyon gous la. Pou fè li pi fasil yo swiv lide prensipal la, nou pral sèvi ak egzanp nou an pi wo a ak konfigirasyon resous sa a:

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

Konfigirasyon sa a se yon egzanp minim Deployment, ki jere gous nginx nan gwoup la. Anplis de sa, konfigirasyon an dekri resous la Service, ki ka itilize pou jwenn aksè nan gous nginx nan yon gwoup.

Pandan tout sik la, nou pral iterativman elaji konfigirasyon sa a pou li evantyèlman gen ladan tout kapasite Kubernetes bay pou diminye tan yo.

Pou yon vèsyon totalman aplike ak teste nan mizajou gwoup Kubernetes pou zewo D' sou AWS ak pi lwen, vizite Gruntwork.io.

Epitou li lòt atik sou blog nou an:

Sous: www.habr.com

Add nouvo kòmantè