ያለማቋረጥ የኩበርኔትስ ስብስብን ማሻሻል

ያለማቋረጥ የኩበርኔትስ ስብስብን ማሻሻል

ለKubernetes ክላስተርዎ ሂደትን ያሻሽሉ።

አንዳንድ ጊዜ የኩበርኔትስ ክላስተር ሲጠቀሙ የሩጫ ኖዶችን ማዘመን ያስፈልጋል። ይህ የጥቅል ዝማኔዎችን፣ የከርነል ዝማኔዎችን ወይም አዲስ የቨርቹዋል ማሽን ምስሎችን ማሰማራትን ሊያካትት ይችላል። በኩበርኔትስ የቃላት አቆጣጠር ይህ ይባላል "የፈቃደኝነት ረብሻ".

ይህ ልጥፍ የ4-ልጥፍ ተከታታይ አካል ነው፡-

  1. ይህ ልጥፍ.
  2. በኩበርኔትስ ክላስተር ውስጥ ያሉ ፖዶችን በትክክል መዘጋት
  3. ፖድ ሲሰረዝ የዘገየ መቋረጥ
  4. PodDisruptionBudgets በመጠቀም የኩበርኔትስ ክላስተር እረፍት ጊዜን እንዴት ማስወገድ እንደሚቻል

(በግምት. የቀሩትን ተከታታይ መጣጥፎች በቅርብ ጊዜ ውስጥ ትርጉሞችን ይጠብቁ)

በዚህ ጽሑፍ ውስጥ በክላስተርዎ ውስጥ ለሚሰሩ አንጓዎች ዜሮ ጊዜን ለማሳካት Kubernetes የሚያቀርባቸውን ሁሉንም መሳሪያዎች እንገልፃለን ።

ችግሩን መግለፅ

መጀመሪያ ላይ የዋህ አቀራረብን እንወስዳለን፣ ችግሮችን ለይተን በዚህ አካሄድ ሊከሰቱ የሚችሉትን አደጋዎች እንገመግማለን፣ እና በዑደቱ ውስጥ የሚያጋጥሙንን እያንዳንዱን ችግሮች ለመፍታት እውቀትን እንገነባለን። ውጤቱ የዜሮ ጊዜ ግባችን ላይ ለመድረስ የህይወት ኡደት መንጠቆዎችን፣ የዝግጁነት መመርመሪያዎችን እና የPod መቋረጥ ባጀትን የሚጠቀም ውቅር ነው።

ጉዟችንን ለመጀመር አንድ ተጨባጭ ምሳሌ እንውሰድ። አፕሊኬሽኑ ከኋላ ከሚገኙት ሁለት እንክብሎች ጋር የሚሰራበት የኩበርኔትስ ክላስተር አለን እንበል። Service:

ያለማቋረጥ የኩበርኔትስ ስብስብን ማሻሻል

በሁለት ፖድ በNginx እና ሰርቪስ በሁለቱ የኩበርኔትስ ክላስተር ኖዶች ላይ በመስራት እንጀምር።

በእኛ ክላስተር ውስጥ ያሉትን ሁለት የሰራተኛ አንጓዎች የከርነል ሥሪት ማዘመን እንፈልጋለን። ይህንን እንዴት እናደርጋለን? ቀላል መፍትሄ አዲስ ኖዶችን በተዘመነው ውቅረት ማስነሳት እና አዲሶቹን ሲጀምሩ የድሮውን ኖዶች መዝጋት ነው። ይህ የሚሰራ ቢሆንም፣ በዚህ አሰራር ላይ ጥቂት ችግሮች ሊኖሩ ይችላሉ፡-

  • የቆዩ አንጓዎችን ሲያጠፉ በእነሱ ላይ የሚሄዱት ፖዶች እንዲሁ ይጠፋል። ለቆንጆ መዘጋት ፖድዎቹ ማጽዳት ቢፈልጉስ? እየተጠቀሙበት ያለው የቨርቹዋል ሲስተም የማጽዳት ሂደቱ እስኪጠናቀቅ ድረስ ላይጠብቅ ይችላል።
  • ሁሉንም አንጓዎች በተመሳሳይ ጊዜ ቢያጠፉስ? ፖድቹ ወደ አዲስ አንጓዎች በሚሸጋገሩበት ጊዜ ጥሩ የእረፍት ጊዜ ያገኛሉ።

በመስቀለኛ መንገድ ላይ ለውጦችን በምናደርግበት ጊዜ የትኛውም የሰራተኛ ሂደታችን እንደማይሮጥ እያረጋገጥን ከአሮጌ አንጓዎች ላይ እንክብሎችን በጸጋ የምንፈልስበት መንገድ እንፈልጋለን። ወይም የክላስተር ሙሉ ምትክ ስናደርግ፣ እንደ ምሳሌው (ማለትም፣ ቪኤም ምስሎችን እንተካለን)፣ አሂድ አፕሊኬሽኖችን ከአሮጌ ኖዶች ወደ አዲስ ማስተላለፍ እንፈልጋለን። በሁለቱም ሁኔታዎች አዲስ ፖድዎች በአሮጌ አንጓዎች ላይ መርሃ ግብር እንዳያዘጋጁ እና ሁሉንም የሩጫ ፓዶችን ከነሱ ማስወጣት እንፈልጋለን። እነዚህን ግቦች ለማሳካት ትዕዛዙን መጠቀም እንችላለን kubectl drain.

ሁሉንም እንክብሎች ከአንድ መስቀለኛ መንገድ እንደገና በማሰራጨት ላይ

የማፍሰሻ ክዋኔው ሁሉንም እንክብሎችን ከአንድ መስቀለኛ መንገድ እንደገና ለማሰራጨት ያስችልዎታል. የፍሳሽ ማስፈጸሚያ በሚካሄድበት ጊዜ መስቀለኛ መንገድ መርሐግብር እንደሌለው ምልክት ይደረግበታል (ባንዲራ NoSchedule). ይህ በላዩ ላይ አዳዲስ እንክብሎች እንዳይታዩ ይከላከላል። ከዚያም የውሃ ማፍሰሻ ቡቃያዎችን ከመስቀያው ላይ ማስወጣት ይጀምራል, አሁን በመስቀለኛ መንገድ ላይ የሚሰሩትን ኮንቴይነሮች ይዘጋል, ምልክት ይልካል. TERM በፖዳ ውስጥ መያዣዎች.

ምንም እንኳ kubectl drain እንክብሎችን በማባረር ጥሩ ስራ ይሰራል ፣ የፍሳሽ ማስወገጃው እንዲሳካ የሚያደርጉ ሌሎች ሁለት ምክንያቶች አሉ ።

  • ማመልከቻዎ ከገባ በኋላ በሚያምር ሁኔታ መቋረጥ አለበት። TERM ምልክት. እንክብሎች ሲወጡ ኩበርኔትስ ምልክት ይልካል TERM ኮንቴይነሮች እና ለተወሰነ ጊዜ እንዲቆሙ ይጠብቃቸዋል, ከዚያ በኋላ, ካላቆሙ, በግዳጅ ያቋርጣቸዋል. ያም ሆነ ይህ ኮንቴይነርዎ ምልክቱን በትክክል ካልተረዳ፣ አሁን እየሰሩ ከሆነ (ለምሳሌ የውሂብ ጎታ ግብይት በሂደት ላይ ነው) አሁንም ፖድቹን በስህተት ማጥፋት ይችላሉ።
  • አፕሊኬሽን የያዙትን ሁሉንም ፖድዎች ታጣለህ። አዲስ ኮንቴይነሮች በአዲስ ኖዶች ላይ ሲነሱ ላይገኝ ይችላል፣ ወይም የእርስዎ ፖድ ያለ ተቆጣጣሪዎች ከተሰማሩ፣ ጨርሶ ላይነሱ ይችላሉ።

የእረፍት ጊዜን ማስወገድ

እንደ በመስቀለኛ መንገድ ላይ ካለው የፍሳሽ ማስወገጃ ከመሳሰሉት በፈቃደኝነት መቋረጥ የሚደርስበትን ጊዜ ለመቀነስ ኩበርኔትስ የሚከተሉትን የብልሽት አያያዝ አማራጮች ይሰጣል።

በቀሪዎቹ ተከታታይ ክፍሎች የፖድ ፍልሰትን ተፅእኖ ለመቀነስ እነዚህን የኩበርኔትስ ባህሪያትን እንጠቀማለን። ዋናውን ሃሳብ ለመከተል ቀላል ለማድረግ ከላይ ያለውን ምሳሌያችንን በሚከተለው የንብረት ውቅር እንጠቀማለን።

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

ይህ ውቅረት አነስተኛ ምሳሌ ነው። Deploymentበክላስተር ውስጥ nginx pods የሚያስተዳድር። በተጨማሪም, አወቃቀሩ ሀብቱን ይገልፃል Serviceበክላስተር ውስጥ nginx pods ለመድረስ የሚያገለግል።

በዑደቱ ውስጥ፣ ይህንን ውቅር ደጋግመን እናሰፋዋለን በዚህም ውሎ አድሮ Kubernetes የእረፍት ጊዜን ለመቀነስ የሚያቀርባቸውን ሁሉንም ችሎታዎች ያካትታል።

ሙሉ ለሙሉ ለተተገበረ እና ለተፈተነ የKubernetes ክላስተር ዝማኔዎች በAWS እና ከዚያ በላይ ላለው ዜሮ የስራ ጊዜ፣ ይጎብኙ Gruntwork.io.

በብሎጋችን ላይ ሌሎች ጽሑፎችን ያንብቡ፡-

ምንጭ: hab.com

አስተያየት ያክሉ