Kusasisha Nguzo ya Kubernetes Bila Wakati wa Kupungua

Kusasisha Nguzo ya Kubernetes Bila Wakati wa Kupungua

Mchakato wa kuboresha kwa kundi lako la Kubernetes

Wakati fulani, unapotumia nguzo ya Kubernetes, kuna haja ya kusasisha nodi zinazoendesha. Hii inaweza kujumuisha masasisho ya kifurushi, masasisho ya kernel, au uwekaji wa picha mpya za mashine pepe. Katika istilahi ya Kubernetes hii inaitwa "Usumbufu wa hiari".

Chapisho hili ni sehemu ya mfululizo wa machapisho 4:

  1. Chapisho hili.
  2. Uzimaji sahihi wa maganda katika kundi la Kubernetes
  3. Imechelewa kukamilika kwa ganda linapofutwa
  4. Jinsi ya Kuepuka Kupungua kwa Nguzo ya Kubernetes Kutumia PodDisruptionBudgets

(takriban. Tarajia tafsiri za makala yaliyosalia katika mfululizo katika siku za usoni)

Katika makala haya, tutaelezea zana zote ambazo Kubernetes hutoa ili kufikia muda wa chini wa sifuri kwa nodi zinazoendesha kwenye nguzo yako.

Ufafanuzi wa Tatizo

Tutachukua mbinu ya ujinga mwanzoni, kutambua matatizo na kutathmini hatari zinazoweza kutokea za mbinu hii, na kujenga maarifa ya kutatua kila moja ya matatizo tunayokumbana nayo katika kipindi chote cha mzunguko. Matokeo yake ni usanidi unaotumia ndoano za mzunguko wa maisha, uchunguzi wa utayari, na bajeti za kukatizwa kwa Pod ili kufikia lengo letu la muda usiopungua sifuri.

Ili kuanza safari yetu, tuchukue mfano halisi. Wacha tuseme tunayo nguzo ya Kubernetes ya nodi mbili, ambayo programu inaendeshwa na maganda mawili yaliyo nyuma. Service:

Kusasisha Nguzo ya Kubernetes Bila Wakati wa Kupungua

Wacha tuanze na maganda mawili na Nginx na Huduma inayoendeshwa kwenye nodi zetu mbili za nguzo za Kubernetes.

Tunataka kusasisha toleo la kernel la nodi mbili za wafanyikazi kwenye nguzo yetu. Je, tunafanyaje hili? Suluhisho rahisi litakuwa kuanzisha nodi mpya na usanidi uliosasishwa na kisha kuzima nodi za zamani wakati wa kuanza mpya. Ingawa hii itafanya kazi, kutakuwa na shida chache na mbinu hii:

  • Unapozima nodi za zamani, maganda yanayoendesha juu yao pia yatazimwa. Je, ikiwa maganda yanahitaji kusafishwa ili kuzimwa kwa njia nzuri? Mfumo wa uboreshaji unaotumia unaweza usisubiri mchakato wa kusafisha ukamilike.
  • Je, ikiwa utazima nodi zote kwa wakati mmoja? Utapata wakati mzuri wa kupumzika wakati maganda yanahamia kwenye nodi mpya.

Tunahitaji njia ya kuhamisha maganda kutoka kwa nodi za zamani huku tukihakikisha kuwa hakuna mchakato wowote wa wafanyikazi wetu unaoendelea tunapofanya mabadiliko kwenye nodi. Au tunapofanya uingizwaji kamili wa nguzo, kama katika mfano (yaani, tunabadilisha picha za VM), tunataka kuhamisha programu zinazoendesha kutoka nodi za zamani hadi mpya. Katika visa vyote viwili, tunataka kuzuia maganda mapya yasiratibiwe kwenye nodi za zamani, na kisha tuondoe maganda yote yanayokimbia kutoka kwao. Ili kufikia malengo haya tunaweza kutumia amri kubectl drain.

Kusambaza tena maganda yote kutoka kwa nodi

Uendeshaji wa kukimbia hukuruhusu kusambaza tena maganda yote kutoka kwa nodi. Wakati wa utekelezaji wa kukimbia, nodi imewekwa alama kama isiyoweza kuratibiwa (bendera NoSchedule) Hii inazuia maganda mapya kuonekana juu yake. Kisha kukimbia huanza kutoa maganda kutoka kwa nodi, kuzima vyombo ambavyo kwa sasa vinaendesha kwenye nodi kwa kutuma ishara. TERM vyombo katika ganda.

Ingawa kubectl drain itafanya kazi nzuri ya kufukuza maganda, kuna mambo mengine mawili ambayo yanaweza kusababisha operesheni ya kukimbia kushindwa:

  • Maombi yako lazima yaweze kusitishwa kwa uzuri baada ya kuwasilisha TERM ishara. Wakati maganda yanapoondolewa, Kubernetes hutuma ishara TERM vyombo na kusubiri kwao kuacha kwa muda maalum, baada ya hapo, ikiwa hawajaacha, huwakomesha kwa nguvu. Kwa hali yoyote, ikiwa chombo chako hakitambui ishara kwa usahihi, bado unaweza kuzima maganda kwa makosa ikiwa yanaendeshwa kwa sasa (kwa mfano, shughuli ya hifadhidata inaendelea).
  • Unapoteza maganda yote ambayo yana programu yako. Huenda isipatikane wakati kontena mpya zinapozinduliwa kwenye nodi mpya, au ikiwa maganda yako yatatumwa bila vidhibiti, huenda yasianze upya kabisa.

Kuepuka wakati wa kupumzika

Ili kupunguza muda kutoka kwa usumbufu wa hiari, kama vile kutoka kwa operesheni ya kukimbia kwenye nodi, Kubernetes hutoa chaguo zifuatazo za kushughulikia kushindwa:

Katika mfululizo uliosalia, tutatumia vipengele hivi vya Kubernetes ili kupunguza athari za maganda yanayohama. Ili iwe rahisi kufuata wazo kuu, tutatumia mfano wetu hapo juu na usanidi wa rasilimali ufuatao:

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

Usanidi huu ni mfano mdogo Deployment, ambayo inasimamia maganda ya nginx kwenye nguzo. Kwa kuongeza, usanidi unaelezea rasilimali Service, ambayo inaweza kutumika kufikia maganda ya nginx kwenye nguzo.

Katika kipindi chote cha mzunguko, tutapanua usanidi huu mara kwa mara ili hatimaye ujumuishe uwezo wote unaotolewa na Kubernetes ili kupunguza muda wa kupumzika.

Kwa toleo lililotekelezwa kikamilifu na lililojaribiwa la masasisho ya Nguzo ya Kubernetes kwa muda usiopungua kazi kwenye AWS na zaidi, tembelea Gruntwork.io.

Pia soma nakala zingine kwenye blogi yetu:

Chanzo: mapenzi.com

Kuongeza maoni