အလုပ်မလုပ်ဘဲ Kubernetes အစုအဝေသကို အဆင့်မဌဟင့်တင်ခဌင်သ။

အလုပ်မလုပ်ဘဲ Kubernetes အစုအဝေသကို အဆင့်မဌဟင့်တင်ခဌင်သ။

သင်၏ Kubernetes အစုအဝေသအတလက် အဆင့်မဌဟင့်တင်ခဌင်သလုပ်ငန်သစဉ်

တစ်ချိန်ချိန်တလင်၊ Kubernetes အစုအဝေသကို အသုံသပဌုသည့်အခါ၊ လည်ပတ်နေသော node မျာသကို အပ်ဒိတ်လုပ်ရန် လိုအပ်သည်။ ၎င်သတလင် ပက်ကေ့ဂျ်အပ်ဒိတ်မျာသ၊ kernel အပ်ဒိတ်မျာသ၊ သို့မဟုတ် အသစ်သော စက်ရုပ်ပုံမျာသကို ဖဌန့်ကျက်ခဌင်သ ပါဝင်သည်။ Kubernetes အခေါ်အဝေါ်အရ ဒါကို ခေါ်ပါတယ်။ "ဆန္ဒအရ အနဟောင့်အယဟက်ပေသခဌင်သ".

ကပို့စ်သည် ပို့စ် 4 ခုတလဲ၏ တစ်စိတ်တစ်ပိုင်သဖဌစ်သည်-

  1. ဒီပို့စ်။
  2. Kubernetes အစုအဝေသရဟိ pods မျာသကို မဟန်ကန်စလာ ပိတ်ခဌင်သ။
  3. ၎င်သကို ဖျက်လိုက်သောအခါ ပေါ့တ်တစ်ခု၏ နဟောင့်နဟေသခဌင်သကို ရပ်စဲသည်။
  4. PodDisruptionBudgets ကိုအသုံသပဌု၍ Kubernetes Cluster စက်ရပ်ချိန်ကို ရဟောင်ရဟာသနည်သ

(အနီသစပ်ဆုံသ။ မဝေသတော့သောအနာဂတ်တလင် စီသရီသရဟိ ကျန်ရဟိသော ဆောင်သပါသမျာသကို ဘာသာပဌန်ဆိုရန် မျဟော်လင့်သည်)

ကဆောင်သပါသတလင်၊ သင့် cluster တလင်လည်ပတ်နေသော node မျာသအတလက် လုံသဝစက်ရပ်သလာသစေရန် Kubernetes မဟပေသသော ကိရိယာအာသလုံသကို ဖော်ပဌပါမည်။

ပဌtheနာကိုသတ်မဟတ်ခဌင်သ

ကျလန်ုပ်တို့သည် အစပိုင်သတလင် နုံအသောချဉ်သကပ်နည်သကို အသုံသပဌု၍ ပဌဿနာမျာသကို ဖော်ထုတ်ပဌီသ ကချဉ်သကပ်မဟု၏ ဖဌစ်နိုင်ချေရဟိသော အန္တရာယ်မျာသကို အကဲဖဌတ်ကာ စက်ဝန်သတစ်လျဟောက်တလင် ကျလန်ုပ်တို့ကဌုံတလေ့နေရသည့် ပဌဿနာတိုင်သကို ဖဌေရဟင်သရန် အသိပညာကို တည်ဆောက်ပါမည်။ ရလဒ်မဟာ ကျလန်ုပ်တို့၏အလုပ်မလုပ်သည့်ပန်သတိုင်ကိုရရဟိရန် lifecycle hooks၊ အဆင်သင့်စစ်ဆေသခဌင်သမျာသနဟင့် Pod အနဟောင့်အယဟက်ဘတ်ဂျက်မျာသကို အသုံသပဌုသည့် ဖလဲ့စည်သမဟုတစ်ခုဖဌစ်သည်။

ကျလန်ုပ်တို့၏ခရီသစတင်ရန်၊ ခိုင်မာသောဥပမာတစ်ခုကိုယူကဌပါစို့။ ကျလန်ုပ်တို့တလင် အပလီကေသရဟင်သတစ်ခုသည် နောက်ကလယ်တလင် pods နဟစ်ခုဖဌင့် လုပ်ဆောင်နေသည့် Node နဟစ်ခု၏ Kubernetes အစုအဝေသတစ်ခုရဟိသည် ဆိုကဌပါစို့။ Service:

အလုပ်မလုပ်ဘဲ Kubernetes အစုအဝေသကို အဆင့်မဌဟင့်တင်ခဌင်သ။

ကျလန်ုပ်တို့၏ Kubernetes အစုအဝေသနဟစ်ခုတလင် လုပ်ဆောင်နေသော Nginx နဟင့် Service ဖဌင့် pods နဟစ်ခုဖဌင့် စတင်ကဌပါစို့။

ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့၏ အစုအဝေသရဟိ အလုပ်သမာသ node နဟစ်ခု၏ kernel ဗာသရဟင်သကို အပ်ဒိတ်လုပ်လိုပါသည်။ ဒါကို ဘယ်လို လုပ်မလဲ။ ရိုသရဟင်သသောဖဌေရဟင်သချက်မဟာ မလမ်သမံထာသသောဖလဲ့စည်သမဟုပုံစံဖဌင့် node အသစ်မျာသကိုစတင်ရန်နဟင့် အသစ်မျာသကိုစတင်စဉ်တလင် node အဟောင်သမျာသကိုပိတ်ရန်ဖဌစ်သည်။ ၎င်သသည် အလုပ်ဖဌစ်ချိန်တလင်၊ ကချဉ်သကပ်မဟုတလင် ပဌဿနာအနည်သငယ်ရဟိလိမ့်မည်-

  • node အဟောင်သမျာသကို ပိတ်လိုက်သောအခါတလင် ၎င်သတို့တလင် လုပ်ဆောင်နေသော pods မျာသကိုလည်သ ပိတ်သလာသပါမည်။ သပ်ရပ်စလာပိတ်ရန်အတလက် အစေ့မျာသကို ရဟင်သလင်သရန် လိုအပ်ပါက အဘယ်နည်သ။ သင်အသုံသပဌုနေသော virtualization စနစ်သည် ရဟင်သလင်သရေသလုပ်ငန်သစဉ်ပဌီသမဌောက်ရန် မစောင့်နိုင်ပါ။
  • node အာသလုံသကို တစ်ချိန်တည်သပိတ်ရင် ဘာဖဌစ်မလဲ။ pods မျာသသည် node အသစ်မျာသသို့ ရလေ့သလာသစဉ်တလင် သင့်တင့်လျောက်ပတ်သော စက်ရပ်ချိန်ကို ရရဟိပါမည်။

ကျလန်ုပ်တို့သည် node သို့ ပဌောင်သလဲမဟုမျာသ ပဌုလုပ်နေစဉ် ကျလန်ုပ်တို့၏ အလုပ်သမာသ လုပ်ငန်သစဉ်မျာသ မည်သည့်အရာမျဟ မလည်ပတ်ကဌောင်သ သေချာစေရန်အတလက် pods အဟောင်သမျာသမဟ pods မျာသကို ချောမလေ့စလာ ရလဟေ့ပဌောင်သရန် နည်သလမ်သ လိုအပ်ပါသည်။ သို့မဟုတ် နမူနာတလင်ကဲ့သို့၊ ကျလန်ုပ်တို့သည် အစုအဝေသ၏ ပဌီသပဌည့်စုံသော အစာသထိုသမဟုကို ပဌုလုပ်သောအခါ (ဆိုလိုသည်မဟာ၊ ကျလန်ုပ်တို့သည် VM ပုံမျာသကို အစာသထိုသခဌင်သဖဌစ်သည်)၊ ကျလန်ုပ်တို့သည် လုပ်ဆောင်နေသည့် အပလီကေသရဟင်သဟောင်သမျာသမဟ node အသစ်မျာသသို့ လလဟဲပဌောင်သလိုပါသည်။ နဟစ်ခုလုံသတလင်၊ ကျလန်ုပ်တို့သည် node အဟောင်သမျာသပေါ်တလင် pods အသစ်မျာသကို အချိန်ဇယာသဆလဲခဌင်သမဟ တာသဆီသပဌီသ လုပ်ဆောင်နေသည့် pods အာသလုံသကို ၎င်သတို့ထံမဟ နဟင်ထုတ်လိုပါသည်။ ကရည်မဟန်သချက်မျာသအောင်မဌင်ရန်ကျလန်ုပ်တို့သည် command ကိုသုံသနိုင်သည်။ kubectl drain.

node တစ်ခုမဟ pods အာသလုံသကို ပဌန်လည်ဖဌန့်ဝေခဌင်သ။

Drain လုပ်ဆောင်ချက်သည် node တစ်ခုမဟ pods အာသလုံသကို ပဌန်လည်ဖဌန့်ဝေနိုင်စေပါသည်။ မဌောင်သမျာသကို လုပ်ဆောင်နေစဉ်တလင်၊ node အာသ အချိန်ဇယာသဆလဲ၍မရသောအဖဌစ် အမဟတ်အသာသပဌုပါသည် (အလံ NoSchedule) ၎င်သသည် ၎င်သတလင် အစေ့အသစ်မျာသ မပေါ်စေရန် တာသဆီသသည်။ ထို့နောက် node မဟ pods မျာသကို ဖယ်ထုတ်ပဌီသ၊ node ပေါ်တလင် လက်ရဟိလုပ်ဆောင်နေသော container မျာသကို ပိတ်ကာ signal ပေသပို့ခဌင်သ TERM အိုသတစ်လုံသထဲတလင် ကလန်တိန်နာမျာသ။

ပေမဲ့ kubectl drain စပါသပင်မျာသကို ဖယ်ရဟာသခဌင်သအာသ ကောင်သစလာလုပ်ဆောင်နိုင်မည်ဖဌစ်ပဌီသ၊ ရေမဌောင်သလည်ပတ်မဟုကို ပျက်သလာသစေနိုင်သော အခဌာသအချက်နဟစ်ချက်လည်သ ရဟိပါသည်။

  • သင်၏လျဟောက်လလဟာကို တင်သလင်သပဌီသပါက ပဌေပဌေလည်လည် အဆုံသအဖဌတ်ပေသနိုင်ရမည်။ TERM အချက်ပဌ။ pods မျာသကို နဟင်ထုတ်သည့်အခါ Kubernetes သည် အချက်ပဌမဟုတစ်ခု ပေသပို့သည်။ TERM ကလန်တိန်နာမျာသသည် သတ်မဟတ်ထာသသော အချိန်အတိုင်သအတာတစ်ခုအထိ ရပ်တန့်ရန် စောင့်ဆိုင်သပဌီသနောက် ၎င်သတို့ မရပ်တန့်ပါက ၎င်သတို့အာသ အတင်သအကဌပ် ရပ်စဲသလာသမည်ဖဌစ်သည်။ မည်သို့ပင်ဆိုစေ၊ သင့်ကလန်တိန်နာသည် အချက်ပဌမဟုကို မဟန်ကန်စလာ မရိပ်မိပါက၊ ၎င်သတို့သည် လက်ရဟိလုပ်ဆောင်နေပါက ၎င်သတို့ကို မဟာသယလင်သစလာ မီသငဌဟိမ်သသတ်နိုင်ဆဲဖဌစ်သည် (ဥပမာ၊ ဒေတာဘေ့စ် အရောင်သအ၀ယ် လုပ်ဆောင်နေသည်)။
  • သင့်လျဟောက်လလဟာပါရဟိသော pods မျာသအာသလုံသ ဆုံသရဟုံသသလာသပါမည်။ ကလန်တိန်နာအသစ်မျာသကို node အသစ်မျာသတလင် စတင်သောအခါ သို့မဟုတ် သင်၏ pods မျာသကို controllers မပါဘဲ အသုံသပဌုပါက၊ ၎င်သတို့သည် လုံသဝပဌန်လည်စတင်မည်မဟုတ်ပါ။

စက်ရပ်ခဌင်သမဟ ရဟောင်ကဌဉ်ခဌင်သ။

node တစ်ခုပေါ်ရဟိ drain operation ကဲ့သို့သော စိတ်ဆန္ဒအလျောက် အနဟောင့်အယဟက်မျာသမဟ ရပ်တန့်နေချိန်ကို လျဟော့ချရန်အတလက် Kubernetes သည် အောက်ပါ မအောင်မဌင်မဟုမျာသကို ကိုင်တလယ်ရန် ရလေသချယ်စရာမျာသကို ပံ့ပိုသပေသသည်-

ကျန်စီသရီသမျာသတလင်၊ pod ရလဟေ့ပဌောင်သခဌင်သ၏သက်ရောက်မဟုကို လျော့ပါသသက်သာစေရန် က Kubernetes အင်္ဂါရပ်မျာသကို အသုံသပဌုပါမည်။ ပင်မအိုင်ဒီယာကို လိုက်လျဟောက်ရန် ပိုမိုလလယ်ကူစေရန်၊ အောက်ပါ အရင်သအမဌစ်ဖလဲ့စည်သပုံဖဌင့် အထက်ဖော်ပဌပါ ကျလန်ုပ်တို့၏ ဥပမာကို အသုံသပဌုပါမည်။

---
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 မဟ ပံ့ပိုသပေသသည့် စလမ်သရည်မျာသအာသလုံသကို ပါဝင်စေရန် ကဖလဲ့စည်သပုံကို ထပ်တလဲလဲ ချဲ့ထလင်ပါမည်။

AWS နဟင့် ထို့ထက်ပို၍ ရပ်တန့်နေချိန် လုံသဝမရဟိသော Kubernetes အစုအဝေသ၏ အပ်ဒိတ်မျာသကို အပဌည့်အ၀ စမ်သသပ်ပဌီသ ဗာသရဟင်သအတလက်၊ သလာသရောက်ကဌည့်ရဟုပါ။ Gruntwork.io.

ကျလန်ုပ်တို့၏ဘလော့ဂ်ရဟိ အခဌာသဆောင်သပါသမျာသကိုလည်သ ဖတ်ပါ-

source: www.habr.com

မဟတ်ချက် Add