Kubernetes ရင်းမြစ်တစ်ခုစီအတွက်၊ သင်သည် လိုအပ်ချက်များ အမျိုးအစား နှစ်ခုကို ပြင်ဆင်သတ်မှတ်နိုင်သည် - တောင်းဆိုမှုများနှင့် ကန့်သတ်ချက်များ။ ပထမတစ်ခုသည် ကွန်တိန်နာ သို့မဟုတ် ပေါ့ဒ်ကို အသုံးပြုရန် လိုအပ်သော အခမဲ့ node ရင်းမြစ်များ ရရှိနိုင်မှုအတွက် အနိမ့်ဆုံးလိုအပ်ချက်များကို ဖော်ပြသည်၊ ဒုတိယတစ်ခုသည် ကွန်တိန်နာတွင်ရရှိနိုင်သည့်အရင်းအမြစ်များကို တင်းကျပ်စွာကန့်သတ်ထားသည်။
Kubernetes သည် pods များကို အချိန်ဇယားဆွဲသည့်အခါ၊ ကွန်တိန်နာများ ကောင်းမွန်စွာလုပ်ဆောင်ရန် လုံလောက်သောအရင်းအမြစ်များ ရှိရန် အလွန်အရေးကြီးပါသည်။ အကယ်၍ သင်သည် အရင်းအမြစ်-ကန့်သတ်သော node တွင် ကြီးမားသော အပလီကေးရှင်းတစ်ခုကို ဖြန့်ကျက်ရန် စီစဉ်နေပါက၊ node သည် memory အားနည်းနေသည် သို့မဟုတ် CPU ပါဝါကုန်သွားသောကြောင့် ၎င်းသည် run မည်မဟုတ်ပေ။ ဤဆောင်းပါးတွင်၊ အရင်းအမြစ်တောင်းဆိုမှုများနှင့် ကန့်သတ်ချက်များကို အသုံးပြု၍ ကွန်ပြူတာဓာတ်အားပြတ်တောက်မှုကို သင်မည်ကဲ့သို့ဖြေရှင်းနိုင်သည်ကို လေ့လာပါမည်။
တောင်းဆိုမှုများနှင့် ကန့်သတ်ချက်များသည် CPU နှင့် memory ကဲ့သို့သော အရင်းအမြစ်များကို စီမံခန့်ခွဲရန်အတွက် Kubernetes အသုံးပြုသည့် ယန္တရားများဖြစ်သည်။ တောင်းဆိုချက်များသည် ကွန်တိန်နာသည် တောင်းဆိုထားသော အရင်းအမြစ်ကို လက်ခံရရှိကြောင်း သေချာစေသည့်အရာဖြစ်သည်။ ကွန်တိန်နာတစ်ခုမှ အရင်းအမြစ်တစ်ခု တောင်းဆိုပါက Kubernetes သည် ၎င်းကို ပေးစွမ်းနိုင်သော node တစ်ခုပေါ်တွင်သာ အချိန်ဇယားဆွဲမည်ဖြစ်သည်။ ကွန်တိန်နာမှ တောင်းဆိုထားသော အရင်းအမြစ်များသည် သတ်မှတ်ထားသော တန်ဖိုးထက် မည်သည့်အခါမျှ ကျော်လွန်မည်မဟုတ်ကြောင်း ကန့်သတ်ထိန်းချုပ်ထားသည်။
ကွန်တိန်နာတစ်ခုသည် ၎င်း၏ ကွန်ပြူတာ ပါဝါကို ကန့်သတ်ချက်တစ်ခုအထိသာ တိုးမြှင့်နိုင်သည်၊ ထို့နောက် ၎င်းကို ကန့်သတ်မည်ဖြစ်သည်။ ဘယ်လိုအလုပ်လုပ်လဲ ကြည့်ရအောင်။ ထို့ကြောင့်၊ ပရိုဆက်ဆာနှင့် memory ဟူ၍ နှစ်မျိုးရှိသည်။ Kubernetes အချိန်ဇယားဆွဲသူသည် သင့် pods များကို မည်သည့်နေရာတွင် လုပ်ဆောင်ရမည်ကို ရှာဖွေဖော်ထုတ်ရန် ဤအရင်းအမြစ်များအကြောင်း ဒေတာကို အသုံးပြုပါသည်။ pod တစ်ခုအတွက် ပုံမှန်ရင်းမြစ်သတ်မှတ်ချက်သည် ဤကဲ့သို့ဖြစ်ပုံရသည်။
pod တစ်ခုရှိ ကွန်တိန်နာတစ်ခုစီသည် ၎င်း၏ကိုယ်ပိုင်မေးမြန်းချက်များနှင့် ကန့်သတ်ချက်များကို သတ်မှတ်နိုင်သည်၊ ၎င်းသည် ပေါင်းထည့်မှုဖြစ်သည်။ ပရိုဆက်ဆာအရင်းအမြစ်များကို millicores ဖြင့် သတ်မှတ်သည်။ အကယ်၍ သင့်ကွန်တိန်နာသည် လည်ပတ်ရန် core နှစ်ခု လိုအပ်ပါက၊ သင်သည် တန်ဖိုး 2000m ဟု သတ်မှတ်သည်။ ကွန်တိန်နာသည် core ၏ 1/4 ၏ပါဝါလိုအပ်ပါက၊ တန်ဖိုးသည် 250m ဖြစ်လိမ့်မည်။ အကြီးဆုံး node ၏ cores အရေအတွက်ထက် ပိုကြီးသော CPU အရင်းအမြစ်တန်ဖိုးကို သတ်မှတ်ပါက၊ သင်၏ pod သည် လုံးဝစတင်ရန် စီစဉ်ထားမည်မဟုတ်ကြောင်း မှတ်သားထားပါ။ သင့်တွင် core လေးခုလိုအပ်သည့် Pod တစ်ခုရှိပါက အလားတူအခြေအနေမျိုး ဖြစ်ပေါ်လာမည်ဖြစ်ပြီး Kubernetes အစုအဝေးတွင် ပင်မ virtual machine နှစ်ခုသာ ပါဝင်ပါသည်။
သင်၏အက်ပ်လီကေးရှင်းသည် core အများအပြားကို အခွင့်ကောင်းယူရန် အထူးဒီဇိုင်းထုတ်ထားခြင်းမဟုတ်ပါက (ရှုပ်ထွေးသောသိပ္ပံနည်းကျတွက်ချက်ခြင်းနှင့် ဒေတာဘေ့စ်လုပ်ဆောင်မှုများကဲ့သို့သော ပရိုဂရမ်များ) ကို သတိရမိပါက၊ အကောင်းဆုံးအလေ့အကျင့်မှာ CPU တောင်းဆိုမှုများကို 1 သို့မဟုတ် အောက်သို့သတ်မှတ်ပြီး ချဲ့ထွင်ရန် နောက်ထပ်ပုံစံတူများကို လုပ်ဆောင်ပါ။ ဤဖြေရှင်းချက်သည် စနစ်အား ပိုမိုပြောင်းလွယ်ပြင်လွယ်နှင့် ယုံကြည်စိတ်ချရမှုကိုပေးလိမ့်မည်။
CPU ကန့်သတ်ချက်များနှင့် ပတ်သက်လာလျှင် ၎င်းကို ချုံ့နိုင်သော အရင်းအမြစ်ဟု ယူဆသောကြောင့် အရာများ ပိုမိုစိတ်ဝင်စားလာပါသည်။ သင့်အပလီကေးရှင်းသည် ပရိုဆက်ဆာပါဝါကန့်သတ်ချက်သို့ စတင်ချဉ်းကပ်ပါက၊ CPU Throttling ကိုအသုံးပြု၍ သင်၏ကွန်တိန်နာကို Kubernetes နှေးကွေးစေလိမ့်မည် - ပရိုဆက်ဆာကြိမ်နှုန်းကိုလျှော့ချပါ။ ဆိုလိုသည်မှာ CPU သည် အတုအယောင် အရှိန်အဟုန်ဖြင့် လည်ပတ်နေမည်ဖြစ်ပြီး၊ အပလီကေးရှင်းအား စွမ်းဆောင်ရည် ပိုဆိုးစေသော်လည်း လုပ်ငန်းစဉ်ကို ရပ်ဆိုင်းခြင်း သို့မဟုတ် ဖယ်ရှားခြင်း ပြုလုပ်မည်မဟုတ်ပါ။
Memory အရင်းအမြစ်များကို bytes ဖြင့် သတ်မှတ်သည်။ အများအားဖြင့် ဆက်တင်များရှိတန်ဖိုးကို mebibytes Mib ဖြင့် တိုင်းတာသော်လည်း မည်သည့်တန်ဖိုးကို bytes မှ petabytes အထိ သတ်မှတ်နိုင်သည်။ CPU နှင့် တူညီသော အခြေအနေသည် ဤနေရာတွင် အကျုံးဝင်သည် - အကယ်၍ သင်သည် သင်၏ node များရှိ memory ပမာဏထက် ပိုကြီးသော memory ပမာဏကို တောင်းဆိုပါက၊ ထို pod ကို လုပ်ဆောင်ရန် စီစဉ်ထားမည်မဟုတ်ပါ။ သို့သော် CPU အရင်းအမြစ်များနှင့်မတူဘဲ၊ ၎င်း၏အသုံးပြုမှုကိုကန့်သတ်ရန်နည်းလမ်းမရှိသောကြောင့် memory ကိုချုံ့မထားပါ။ ထို့ကြောင့်၊ ၎င်းအား ခွဲဝေပေးထားသည့် မမ်မိုရီထက်ကျော်လွန်သွားသည်နှင့် ကွန်တိန်နာ၏ လုပ်ဆောင်မှုကို ရပ်တန့်သွားမည်ဖြစ်သည်။
သင့် nodes ပေးစွမ်းနိုင်သော အရင်းအမြစ်များထက် ကျော်လွန်သော တောင်းဆိုမှုများကို သင် configure လုပ်နိုင်မည် မဟုတ်ကြောင်း မှတ်သားထားရန် အရေးကြီးပါသည်။ GKE virtual machines အတွက် မျှဝေထားသော ရင်းမြစ်သတ်မှတ်ချက်များကို ဤဗီဒီယိုအောက်ရှိ လင့်ခ်များတွင် တွေ့နိုင်ပါသည်။
စံပြကမ္ဘာတွင်၊ ကွန်တိန်နာ၏ ပုံသေဆက်တင်များသည် အလုပ်အသွားအလာများကို ချောမွေ့စွာလည်ပတ်နေစေရန် လုံလောက်ပါသည်။ သို့သော် လက်တွေ့ကမ္ဘာသည် ထိုကဲ့သို့မဟုတ်ပေ၊ လူများသည် အရင်းအမြစ်များအသုံးပြုမှုကို အလွယ်တကူပြင်ဆင်ရန် မေ့လျော့သွားနိုင်သည်၊ သို့မဟုတ် ဟက်ကာများသည် အခြေခံအဆောက်အအုံ၏ တကယ့်စွမ်းရည်ထက်ကျော်လွန်သော တောင်းဆိုမှုများနှင့် ကန့်သတ်ချက်များကို သတ်မှတ်ပေးလိမ့်မည်။ ထိုသို့သော အခြေအနေများ မဖြစ်ပွားစေရန် ကာကွယ်ရန်၊ သင်သည် ResourceQuota နှင့် LimitRange အရင်းအမြစ်ခွဲတမ်းများကို စီစဉ်သတ်မှတ်နိုင်ပါသည်။
namespace တစ်ခုဖန်တီးပြီးသည်နှင့်၊ ၎င်းကို quotas ဖြင့်ပိတ်ဆို့နိုင်သည်။ ဥပမာအားဖြင့်၊ သင့်တွင် prod နှင့် dev namespaces များရှိပါက၊ ပုံစံမှာ ထုတ်လုပ်မှုခွဲတမ်းများ လုံးဝမရှိသည့်အပြင် အလွန်တင်းကျပ်သော ဖွံ့ဖြိုးတိုးတက်မှုခွဲတမ်းများဖြစ်သည်။ ၎င်းသည် အသွားအလာ သိသိသာသာ မြင့်တက်လာသောအခါ၊ ရရှိနိုင်သော အရင်းအမြစ် တစ်ခုလုံးကို ထိန်းချုပ်နိုင်ပြီး dev ကို လုံးဝပိတ်ဆို့စေပါသည်။
အရင်းအမြစ်ခွဲတမ်းသည် ဤကဲ့သို့ဖြစ်နိုင်သည်။ ဤဥပမာတွင် အပိုင်း (၄) ပိုင်းရှိသည် - ၎င်းတို့သည် ကုဒ်၏အောက်ခြေစာကြောင်း (၄) ကြောင်းဖြစ်သည်။
သူတို့တစ်ပုံချင်းစီကြည့်ရအောင်။ Requests.cpu သည် namespace ရှိ ကွန်တိန်နာများအားလုံးမှ လာနိုင်သော ပေါင်းစပ် CPU တောင်းဆိုမှု အများဆုံး အရေအတွက်ဖြစ်သည်။ ဤဥပမာတွင်၊ သင့်တွင် 50m တောင်းဆိုမှုရှိသော ကွန်တိန်နာ 10၊ 100m တောင်းဆိုမှုရှိသော ကွန်တိန်နာငါးခု၊ သို့မဟုတ် 500m တောင်းဆိုမှုရှိသော ကွန်တိန်နာတစ်ခုသာ ရှိနိုင်ပါသည်။ ပေးထားသော namespace တစ်ခု၏ စုစုပေါင်း requests.cpu အရေအတွက်သည် 500m ထက်နည်းနေသရွေ့ အရာအားလုံး အဆင်ပြေသွားပါမည်။
Memory တောင်းဆိုထားသော Requests.memory သည် namespace ရှိ ကွန်တိန်နာများအားလုံးရှိနိုင်သည့် ပေါင်းစပ်မှတ်ဉာဏ်တောင်းဆိုမှု အများဆုံးပမာဏဖြစ်သည်။ ယခင်ကိစ္စများတွင်ကဲ့သို့၊ သင့်တွင် namespace တွင် တောင်းဆိုထားသော စုစုပေါင်း memory ပမာဏသည် 50 mebibyte ထက်နည်းသရွေ့ သင့်တွင် 2 20 mib ကွန်တိန်နာများ၊ 100 mib ကွန်တိန်နာငါးခု သို့မဟုတ် 100 mib ကွန်တိန်နာတစ်ခုတွင် ရှိနေနိုင်သည်။
Limits.cpu သည် namespace ရှိ ကွန်တိန်နာများအားလုံး အသုံးပြုနိုင်သော CPU ပါဝါပေါင်းစပ်ထားသော အများဆုံးပမာဏဖြစ်သည်။ ၎င်းကို ပရိုဆက်ဆာ ပါဝါတောင်းဆိုမှုများ၏ ကန့်သတ်ချက်ဟု ကျွန်ုပ်တို့ ယူဆနိုင်ပါသည်။
နောက်ဆုံး၊ limits.memory သည် namespace ရှိ ကွန်တိန်နာအားလုံး အသုံးပြုနိုင်သည့် အများဆုံး မျှဝေထားသည့် မမ်မိုရီပမာဏဖြစ်သည်။ ၎င်းသည် စုစုပေါင်းမှတ်ဉာဏ်တောင်းဆိုမှုများအပေါ် ကန့်သတ်ချက်ဖြစ်သည်။
ထို့ကြောင့်၊ ပုံမှန်အားဖြင့်၊ အကန့်အသတ်မရှိသောတွက်ချက်မှုရင်းမြစ်များဖြင့် လုပ်ဆောင်သည့် Kubernetes အစုအဝေးရှိ ကွန်တိန်နာများ။ အရင်းအမြစ်ခွဲတမ်းများဖြင့်၊ အစုအဝေးစီမံခန့်ခွဲသူများသည် namespace ကိုအခြေခံ၍ အရင်းအမြစ်သုံးစွဲမှုနှင့် အရင်းအမြစ်ဖန်တီးမှုများကို ကန့်သတ်နိုင်သည်။ namespace တစ်ခုတွင်၊ pod သို့မဟုတ် container တစ်ခုသည် namespace အရင်းအမြစ်ခွဲတမ်းမှသတ်မှတ်ထားသည့်အတိုင်း CPU ပါဝါနှင့် memory ကိုစားသုံးနိုင်သည်။ သို့ရာတွင်၊ ဘူးတစ်ခု သို့မဟုတ် ကွန်တိန်နာတစ်ခုသည် ရရှိနိုင်သောအရင်းအမြစ်အားလုံးကို လက်ဝါးကြီးအုပ်ထားနိုင်သည်ဟူသော စိုးရိမ်မှုရှိပါသည်။ ဤအခြေအနေအား ကာကွယ်ရန်၊ ကန့်သတ်ဘောင်ကို အသုံးပြုသည် - namespace တွင် အရင်းအမြစ်များ ( pods သို့မဟုတ် containers များအတွက်) ခွဲဝေကန့်သတ်ခြင်းဆိုင်ရာ မူဝါဒ။
ကန့်သတ်ဘောင်သည် ကန့်သတ်ချက်များကို ပေးဆောင်နိုင်သည်-
- namespace ရှိ module တစ်ခုစီအတွက် ကွန်ပြူတာ သို့မဟုတ် ကွန်တိန်နာအတွက် အနည်းဆုံးနှင့် အများဆုံးအသုံးပြုမှုကို သေချာပါစေ။
- Namespace ရှိ PersistentVolumeClaim တစ်ခုစီအတွက် အနိမ့်ဆုံးနှင့် အများဆုံး Starage Request သိုလှောင်မှု တောင်းဆိုချက်များအား တွန်းအားပေးပါ။
- Namespace ရှိ အရင်းအမြစ်တစ်ခုအတွက် တောင်းဆိုချက်တစ်ခုနှင့် ကန့်သတ်ချက်တစ်ခုကြား ဆက်နွယ်မှုကို တွန်းအားပေးပါ။
- namespace ရှိ တွက်ချက်မှုအရင်းအမြစ်များအတွက် မူရင်းတောင်းဆိုချက်များ/ကန့်သတ်ချက်များကို သတ်မှတ်ပြီး runtime တွင် ကွန်တိန်နာထဲသို့ အလိုအလျောက်ထည့်သွင်းပါ။
ဤနည်းဖြင့် သင်သည် သင်၏ namespace တွင် ကန့်သတ်ဘောင်တစ်ခုကို ဖန်တီးနိုင်သည်။ namespace တစ်ခုလုံးနှင့်သက်ဆိုင်သည့်ခွဲတမ်းတစ်ခုနှင့်မတူဘဲ၊ Limit Range ကို ကွန်တိန်နာတစ်ခုချင်းစီအတွက်အသုံးပြုသည်။ ၎င်းသည် သုံးစွဲသူများအား namespace အတွင်း အလွန်သေးငယ်သော သို့မဟုတ် ဆန့်ကျင်ဘက်အားဖြင့် အလွန်သေးငယ်သော ကွန်တိန်နာများကို ဖန်တီးခြင်းမှ တားဆီးနိုင်သည်။ Limit Range သည် ဤကဲ့သို့ ဖြစ်နိုင်ပါသည်။
ယခင်ကိစ္စများတွင်ကဲ့သို့ အပိုင်း ၄ ပိုင်းကို ဤနေရာတွင် ခွဲခြားနိုင်သည်။ တစ်ပုံချင်းစီကြည့်ရအောင်။
ပုံသေအပိုင်းသည် pod ရှိ ကွန်တိန်နာအတွက် ပုံသေကန့်သတ်ချက်များကို သတ်မှတ်သည်။ အကယ်၍ သင်သည် ဤတန်ဖိုးများကို လွန်ကဲသောအကွာအဝေးတွင် သတ်မှတ်ပါက၊ ဤတန်ဖိုးများကို ပြတ်သားစွာ မသတ်မှတ်ရသေးသည့် မည်သည့်ကွန်တိန်နာများသည် ပုံသေတန်ဖိုးများအတိုင်း လိုက်နေမည်ဖြစ်ပါသည်။
မူရင်းတောင်းဆိုမှုအပိုင်း defaultRequest သည် pod အတွင်းရှိ container အတွက် ပုံသေတောင်းဆိုမှုများကို configure လုပ်သည်။ တဖန်၊ အကယ်၍ သင်သည် ဤတန်ဖိုးများကို လွန်ကဲစွာ သတ်မှတ်ပါက၊ ဤရွေးချယ်မှုများကို ပြတ်သားစွာ မသတ်မှတ်ထားသော ကွန်တိန်နာများသည် ဤတန်ဖိုးများအတွက် ပုံသေဖြစ်လိမ့်မည်။
အမြင့်ဆုံးအပိုင်းသည် pod ရှိ ကွန်တိန်နာအတွက် သတ်မှတ်နိုင်သည့် အများဆုံးကန့်သတ်ချက်များကို သတ်မှတ်ပေးသည်။ ပုံသေကဏ္ဍရှိ တန်ဖိုးများနှင့် ကွန်တိန်နာကန့်သတ်ချက်များကို ဤကန့်သတ်ချက်အထက်တွင် သတ်မှတ်၍မရပါ။ တန်ဖိုးကို အမြင့်ဆုံးအဖြစ် သတ်မှတ်ထားပြီး ပုံသေအပိုင်းမရှိပါက၊ အမြင့်ဆုံးတန်ဖိုးသည် ပုံသေတန်ဖိုးဖြစ်လာကြောင်း သတိပြုရန် အရေးကြီးသည်။
အနိမ့်ဆုံးအပိုင်းသည် pod တစ်ခုရှိ ကွန်တိန်နာအတွက် သတ်မှတ်နိုင်သည့် အနည်းဆုံး တောင်းဆိုမှုများကို သတ်မှတ်ပေးပါသည်။ သို့သော်၊ ကွန်တိန်နာအတွက် ပုံသေကဏ္ဍနှင့် စုံစမ်းမေးမြန်းမှုများရှိ တန်ဖိုးများကို ဤကန့်သတ်ချက်အောက်တွင် သတ်မှတ်၍မရပါ။
ထပ်မံ၍ ဤတန်ဖိုးကို သတ်မှတ်ပါက၊ ပုံသေမဟုတ်ပါ၊ ထို့နောက် အနိမ့်ဆုံးတန်ဖိုးသည် ပုံသေဖော်ပြချက်ဖြစ်လာကြောင်း သတိပြုရန် အရေးကြီးပါသည်။
ဤရင်းမြစ်တောင်းဆိုမှုများကို သင်၏အလုပ်တာဝန်များကိုလုပ်ဆောင်ရန် Kubernetes အစီအစဉ်ဆွဲသူမှ နောက်ဆုံးတွင် အသုံးပြုပါသည်။ သင့်ကွန်တိန်နာများကို မှန်ကန်စွာ ပြင်ဆင်သတ်မှတ်နိုင်ရန်၊ ၎င်းသည် မည်သို့အလုပ်လုပ်သည်ကို နားလည်ရန် အလွန်အရေးကြီးပါသည်။ သင့်အစုအဝေးတွင် ပေါ့ဒ်များစွာကို လုပ်ဆောင်လိုသည်ဟု ဆိုကြပါစို့။ pod သတ်မှတ်ချက်များသည် တရားဝင်သည်ဟု ယူဆပါက၊ Kubernetes အချိန်ဇယားသည် အလုပ်တာဝန်ကိုလုပ်ဆောင်ရန် node တစ်ခုကို ရွေးချယ်ရန် round robin ချိန်ခွင်လျှာကို အသုံးပြုပါမည်။
Kubernetes သည် Node 1 တွင် pod containers များမှ တောင်းဆိုမှုများကို ဖြည့်ဆည်းရန် အရင်းအမြစ်များ လုံလောက်မှုရှိမရှိ စစ်ဆေးမည်ဖြစ်ပြီး၊ မဟုတ်ပါက၊ ၎င်းသည် နောက် node သို့ ဆက်သွားပါမည်။ စနစ်အတွင်းရှိ node တစ်ခုမှ တောင်းဆိုချက်များကို ဖြည့်ဆည်းပေးနိုင်ခြင်းမရှိပါက၊ pods များသည် Pending အခြေအနေသို့ ရောက်ရှိသွားမည်ဖြစ်ပါသည်။ node autoscaling ကဲ့သို့သော Google Kubernetes အင်ဂျင်အင်္ဂါရပ်များကို အသုံးပြု၍ GKE သည် စောင့်ဆိုင်းနေသည့်အခြေအနေကို အလိုအလျောက်သိရှိနိုင်ပြီး နောက်ထပ် node အများအပြားကို ဖန်တီးနိုင်သည်။
အကယ်၍ သင်သည် node စွမ်းရည်ကို နောက်ပိုင်းတွင် ကုန်ဆုံးသွားပါက၊ အလိုအလျောက် အတိုင်းအတာဖြင့် သင့်ငွေကို ချွေတာရန် node အရေအတွက်ကို လျှော့ချပေးလိမ့်မည်။ ထို့ကြောင့် Kubernetes သည် တောင်းဆိုမှုများအပေါ် အခြေခံ၍ pods များကို အချိန်ဇယားဆွဲသည်။ သို့သော်၊ ကန့်သတ်ချက်သည် တောင်းဆိုမှုများထက် ပိုများနိုင်ပြီး အချို့ကိစ္စများတွင် node သည် အမှန်တကယ် အရင်းအမြစ်များ ကုန်သွားနိုင်သည်။ ဒီပြည်နယ်ကို ကတိကဝတ်ပြုတဲ့ပြည်နယ်လို့ ခေါ်ပါတယ်။
ငါပြောခဲ့သည့်အတိုင်း CPU နှင့်ပတ်သက်လာသောအခါ Kubernetes သည် pods များကိုကန့်သတ်ခြင်းစတင်လိမ့်မည်။ pod တစ်ခုစီသည် တောင်းဆိုထားသလောက် ရရှိမည်ဖြစ်သော်လည်း ကန့်သတ်ချက်မပြည့်ပါက၊ throttling စတင်အသုံးပြုမည်ဖြစ်သည်။
မန်မိုရီရင်းမြစ်များနှင့် ပတ်သက်လာလျှင် Kubernetes သည် မည်သည့် pods များကို ဖျက်ရမည်နှင့် စနစ်အရင်းအမြစ်များ မလွတ်မချင်း သို့မဟုတ် စနစ်တစ်ခုလုံး ပျက်စီးသွားသည်အထိ သိမ်းဆည်းရမည်ဟု ဆုံးဖြတ်ချက်များချရတော့မည်ဖြစ်သည်။
သင့်တွင် မမ်မိုရီကုန်နေသည့် စက်တစ်လုံးရှိနေသည့် မြင်ကွင်းတစ်ခုကို စိတ်ကူးကြည့်ကြပါစို့ - Kubernetes က ၎င်းကို မည်သို့ကိုင်တွယ်မည်နည်း။
Kubernetes သည် ၎င်းတို့တောင်းဆိုသည်ထက် အရင်းအမြစ်များကို ပိုမိုအသုံးပြုနေသည့် pods များကို ရှာဖွေမည်ဖြစ်သည်။ ထို့ကြောင့် သင့်ကွန်တိန်နာများတွင် တောင်းဆိုမှုများ လုံးဝမရှိပါက၊ ၎င်းတို့သည် ၎င်းတို့တောင်းဆိုထားသည်ထက် ပိုမိုအသုံးပြုရန် ပျက်ကွက်နေခြင်းဖြစ်သည်၊ ဆိုလိုသည်မှာ ၎င်းတို့သည် တစ်စုံတစ်ရာကို တောင်းဆိုခြင်းမရှိသောကြောင့်ဖြစ်သည်။ ထိုသို့သော ကွန်တိန်နာများကို ပိတ်ပစ်ရန် အဓိက ကိုယ်စားလှယ်လောင်းများ ဖြစ်လာသည်။ နောက်လာမည့် ကိုယ်စားလှယ်လောင်းများသည် ၎င်းတို့၏ တောင်းဆိုချက်အားလုံးကို ကျေနပ်သော်လည်း အမြင့်ဆုံးကန့်သတ်ချက်အောက်တွင် ရှိနေဆဲဖြစ်သည်။
ထို့ကြောင့် Kubernetes သည် ၎င်းတို့၏ တောင်းဆိုချက်ဘောင်များကို ကျော်လွန်သွားသော pod အများအပြားကို တွေ့ရှိပါက၊ ၎င်းတို့ကို ဦးစားပေးအလိုက် စီခွဲပြီး အနိမ့်ဆုံး ဦးစားပေး ပေါ့ဒ်များကို ဖယ်ရှားပါမည်။ pods အားလုံးတွင် တူညီသော ဦးစားပေးရှိလျှင် Kubernetes သည် အခြား pod များထက် ၎င်းတို့၏ တောင်းဆိုမှုများထက် ကျော်လွန်သော အဆိုပါ pods များကို ရပ်ဆိုင်းပါမည်။
အလွန်ရှားပါးသောကိစ္စများတွင်၊ Kubernetes သည် ၎င်းတို့၏တောင်းဆိုမှုများ၏ဘောင်အတွင်းရှိနေဆဲဖြစ်သော pod များကိုဖျက်ပစ်နိုင်သည်။ Kubelet အေးဂျင့် သို့မဟုတ် Docker ကဲ့သို့သော အရေးပါသော စနစ်အစိတ်အပိုင်းများသည် ၎င်းတို့အတွက် သီးသန့်ထားထားသည့် အရင်းအမြစ်များထက် အရင်းအမြစ်များကို ပိုမိုသုံးစွဲလာသောအခါ ၎င်းသည် ဖြစ်ပေါ်လာနိုင်သည်။
ထို့ကြောင့်၊ ကုမ္ပဏီငယ်များ၏ အစောပိုင်းအဆင့်များတွင်၊ အရင်းအမြစ်တောင်းဆိုမှုများနှင့် ကန့်သတ်ချက်များကို မသတ်မှတ်ဘဲ Kubernetes အစုအဖွဲ့သည် ကောင်းမွန်စွာအလုပ်လုပ်နိုင်သော်လည်း သင်၏အဖွဲ့များနှင့် ပရောဂျက်များ အရွယ်အစားကြီးလာသည်နှင့်အမျှ သင်သည် ဤနယ်ပယ်တွင် ပြဿနာများကြုံတွေ့ရနိုင်ခြေရှိသည်။ သင်၏ modules နှင့် namespaces များသို့ queries နှင့် constraints များထည့်ခြင်းသည် အားထုတ်မှုအနည်းငယ်သာလိုအပ်ပြီး အလုပ်များစွာကို သက်သာစေနိုင်သည်။
ကြော်ငြာအချို့ 🙂
ကျွန်ုပ်တို့နှင့်အတူရှိနေသည့်အတွက် ကျေးဇူးတင်ပါသည်။ ကျွန်ုပ်တို့၏ဆောင်းပါးများကို သင်နှစ်သက်ပါသလား။ ပိုစိတ်ဝင်စားစရာကောင်းတဲ့ အကြောင်းအရာတွေကို ကြည့်ချင်ပါသလား။ မှာယူမှုတစ်ခုပြုလုပ်ခြင်း သို့မဟုတ် သူငယ်ချင်းများကို အကြံပြုခြင်းဖြင့် ကျွန်ုပ်တို့အား ပံ့ပိုးကူညီပါ၊
အမ်စတာဒမ်ရှိ Equinix Tier IV ဒေတာစင်တာတွင် Dell R730xd သည် ၂ ဆ စျေးသက်သာသည်။ ဒီမှာသာ
source: www.habr.com