Pag-upgrade sa Kubernetes Cluster nga Walay Downtime

Pag-upgrade sa Kubernetes Cluster nga Walay Downtime

Proseso sa pag-upgrade para sa imong Kubernetes cluster

Sa pila ka punto, kung mogamit usa ka cluster sa Kubernetes, kinahanglan nga i-update ang mga running node. Mahimong maglakip kini sa mga update sa package, mga update sa kernel, o pag-deploy sa bag-ong mga imahe sa virtual machine. Sa terminolohiya sa Kubernetes kini gitawag "Boluntaryong Kasamok".

Kini nga post kabahin sa 4-post nga serye:

  1. Kini nga post.
  2. Husto nga pagsira sa mga pod sa usa ka Kubernetes cluster
  3. Nalangan ang pagtapos sa usa ka pod kung natangtang na
  4. Unsaon Paglikay sa Kubernetes Cluster Downtime Gamit ang PodDisruptionBudgets

(gibanabana. Pagpaabot sa mga hubad sa nahibiling mga artikulo sa serye sa duol nga umaabot)

Sa kini nga artikulo, among ihulagway ang tanan nga mga himan nga gihatag sa Kubernetes aron makab-ot ang zero downtime alang sa mga node nga nagdagan sa imong cluster.

Pagpasabut sa problema

Maghimo kami og usa ka walay pulos nga pamaagi sa una, pag-ila sa mga problema ug pag-assess sa mga potensyal nga risgo niini nga pamaagi, ug pagtukod og kahibalo aron masulbad ang matag usa sa mga problema nga among masugatan sa tibuok nga siklo. Ang resulta mao ang usa ka configuration nga naggamit sa lifecycle hook, ready probes, ug Pod disruption budget aron makab-ot ang among zero downtime nga tumong.

Sa pagsugod sa atong panaw, magkuha kita ug konkretong pananglitan. Ingnon ta nga kita adunay usa ka Kubernetes cluster sa duha ka mga node, diin ang usa ka aplikasyon nagdagan nga adunay duha ka pod nga nahimutang sa luyo. Service:

Pag-upgrade sa Kubernetes Cluster nga Walay Downtime

Magsugod ta sa duha ka pod nga adunay Nginx ug Serbisyo nga nagdagan sa among duha ka Kubernetes cluster node.

Gusto namong i-update ang kernel nga bersyon sa duha ka worker node sa among cluster. Unsaon nato pagbuhat niini? Ang usa ka yano nga solusyon mao ang pag-boot sa bag-ong mga node nga adunay na-update nga configuration ug dayon isira ang daan nga mga node samtang nagsugod ang mga bag-o. Samtang kini molihok, adunay pipila ka mga problema sa kini nga pamaagi:

  • Kung imong i-off ang daan nga mga node, ang mga pod nga nagdagan niini mapalong usab. Unsa kaha kung ang mga pod kinahanglan nga hawanan alang sa maayo nga pagsira? Ang sistema sa virtualization nga imong gigamit mahimong dili maghulat nga makompleto ang proseso sa paglimpyo.
  • Unsa kaha kung imong i-off ang tanan nga mga node sa parehas nga oras? Makuha nimo ang disente nga downtime samtang ang mga pod mobalhin sa bag-ong mga node.

Nagkinahanglan kami og usa ka paagi aron maayo nga mobalhin ang mga pod gikan sa mga daan nga node samtang gisiguro nga wala’y bisan usa sa among mga proseso sa trabahante nga nagdagan samtang nagbag-o kami sa node. O kung maghimo kami usa ka kompleto nga pagpuli sa cluster, sama sa pananglitan (nga mao, gipulihan namon ang mga imahe sa VM), gusto namon nga ibalhin ang mga nagdagan nga aplikasyon gikan sa mga daan nga node ngadto sa mga bag-o. Sa duha nga mga kaso, gusto namon nga pugngan ang mga bag-ong pod gikan sa pag-iskedyul sa mga daan nga node, ug dayon papahawaon ang tanan nga nagdagan nga mga pod gikan kanila. Aron makab-ot kini nga mga tumong mahimo natong gamiton ang sugo kubectl drain.

Pag-apod-apod pag-usab sa tanan nga mga pod gikan sa usa ka node

Ang operasyon sa kanal nagtugot kanimo sa pag-apod-apod pag-usab sa tanan nga mga pod gikan sa usa ka node. Atol sa pag-drayb, ang node gimarkahan nga dili ma-iskedyul (flag NoSchedule). Gipugngan niini ang mga bag-ong pod nga makita niini. Dayon ang pag-agas magsugod sa pagpapahawa sa mga pod gikan sa node, pagsira sa mga sudlanan nga kasamtangang nagdagan sa node, pagpadala og signal TERM mga sudlanan sa usa ka pod.

Bisan pa kubectl drain makahimo og maayo nga trabaho sa pagpalayas sa mga pod, adunay duha ka laing mga hinungdan nga mahimong hinungdan nga mapakyas ang operasyon sa kanal:

  • Ang imong aplikasyon kinahanglan nga makahimo sa pagtapos sa maayong paagi sa pagsumite TERM signal. Kung gipalayas ang mga pod, nagpadala ang Kubernetes og signal TERM mga sudlanan ug maghulat nga sila mohunong sa usa ka piho nga gidugayon sa oras, pagkahuman, kung wala sila mohunong, kini mapugos nga tapuson kini. Sa bisan unsa nga kaso, kung ang imong sudlanan dili makasabut sa signal sa husto, mahimo gihapon nimo mapalong ang mga pod nga dili husto kung kini nagdagan karon (pananglitan, ang usa ka transaksyon sa database nagpadayon).
  • Mawala nimo ang tanan nga mga pod nga adunay sulud sa imong aplikasyon. Mahimong dili kini magamit kung ang mga bag-ong sudlanan gilunsad sa bag-ong mga node, o kung ang imong mga pod gi-deploy nga wala’y mga controller, mahimo nga dili na sila magsugod pag-usab.

Paglikay sa downtime

Aron mamenosan ang downtime gikan sa boluntaryong pagkabalda, sama sa usa ka drain operation sa usa ka node, ang Kubernetes naghatag sa mosunod nga failure handling options:

Sa nahabilin nga serye, among gamiton kini nga mga bahin sa Kubernetes aron maminusan ang epekto sa paglalin sa pod. Aron mas sayon ​​ang pagsunod sa nag-unang ideya, atong gamiton ang atong panig-ingnan sa ibabaw uban sa mosunod nga resource configuration:

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

Kini nga pag-configure usa ka gamay nga pananglitan Deployment, nga nagdumala sa nginx pods sa cluster. Dugang pa, ang configuration naghulagway sa kapanguhaan Service, nga magamit sa pag-access sa nginx pods sa usa ka cluster.

Sa tibuok nga cycle, balik-balikon namo nga palapdan kini nga configuration aron sa katapusan maapil niini ang tanang mga kapabilidad nga gihatag sa Kubernetes aron makunhuran ang downtime.

Para sa bug-os nga gipatuman ug nasulayan nga bersyon sa Kubernetes cluster updates para sa zero downtime sa AWS ug sa unahan pa, bisitaha Gruntwork.io.

Basaha usab ang ubang mga artikulo sa among blog:

Source: www.habr.com

Idugang sa usa ka comment