Pinterest တလင် kubernetes ပလပ်ဖောင်သတစ်ခုဖန်တီသခဌင်သ။

နဟစ်မျာသတစ်လျဟောက် Pinterest ၏အသုံသပဌုသူ သန်သ 300 သည် ဘုတ်ပေါင်သ 200 ဘီလီယံကျော်တလင် pin 4 ဘီလီယံကျော်ဖန်တီသခဲ့သည်။ ကအသုံသပဌုသူမျာသ၏စစ်တပ်နဟင့် ကျယ်ပဌန့်သောအကဌောင်သအရာအခဌေခံကို ဝန်ဆောင်မဟုပေသရန်၊ ပေါ်တယ်သည် CPU အနည်သငယ်မဟကိုင်တလယ်နိုင်သော microservices မဟသည် virtual machines တစ်ခုလုံသပေါ်တလင်လည်ပတ်နိုင်သော ဧရာမ monolith မျာသအထိ ဝန်ဆောင်မဟုထောင်ပေါင်သမျာသစလာကို တီထလင်ခဲ့သည်။ ပဌီသတော့ ကုမ္ပဏီရဲ့ မျက်လုံသတလေက k8s ကို စိုက်ကဌည့်တဲ့ အချိန်ရောက်လာတယ်။ Pinterest တလင် "cube" သည်အဘယ်ကဌောင့်ကဌည့်ကောင်သသနည်သ။ ကအကဌောင်သကို ကျလန်ုပ်တို့၏ မကဌာသေသမီက ဘာသာပဌန်ထာသသော ဆောင်သပါသမဟ ကအကဌောင်သကို သင်လေ့လာရလိမ့်မည်။ ဘလော့ဂ် Pinterest တီထလင်ဖန်တီသခဌင်သ။.

Pinterest တလင် kubernetes ပလပ်ဖောင်သတစ်ခုဖန်တီသခဌင်သ။

ဒါကဌောင့် သုံသစလဲသူ သန်သရာနဲ့ချီပဌီသ ပင်နံပါတ် ဘီလီယံရာနဲ့ချီပါတယ်။ ကအသုံသပဌုသူမျာသ၏စစ်တပ်နဟင့် ကျယ်ပဌန့်သောအကဌောင်သအရာအခဌေခံကို ထမ်သဆောင်ရန်အတလက် ကျလန်ုပ်တို့သည် CPU အနည်သငယ်မဟကိုင်တလယ်နိုင်သော microservices မဟသည် virtual machines တစ်ခုလုံသတလင်လည်ပတ်နေသော ဧရာမ monolith မျာသအထိ ဝန်ဆောင်မဟုထောင်ပေါင်သမျာသစလာကို တီထလင်ခဲ့ပါသည်။ ထို့အပဌင်၊ ကျလန်ုပ်တို့တလင် CPU၊ Memory သို့မဟုတ် I/O အသုံသပဌုခလင့်တို့လည်သ လိုအပ်နိုင်သည့် ဘောင်အမျိုသမျိုသရဟိသည်။

ကတိရစ္ဆာန်ရုံ၏ကိရိယာမျာသကို ထိန်သသိမ်သရာတလင် ဖလံ့ဖဌိုသတိုသတက်ရေသအဖလဲ့သည် စိန်ခေါ်မဟုမျာသစလာကို ရင်ဆိုင်ရသည်-

  • အင်ဂျင်နီယာမျာသသည် ထုတ်လုပ်မဟုပတ်ဝန်သကျင်ကို လုပ်ဆောင်ရန် တူညီသောနည်သလမ်သမရဟိပါ။ နိုင်ငံမဲ့ဝန်ဆောင်မဟုမျာသ၊ နိုင်ငံပိုင်ဝန်ဆောင်မဟုမျာသနဟင့် တက်ကဌလစလာဖလံ့ဖဌိုသတိုသတက်မဟုအောက်တလင် ပရောဂျက်မျာသသည် လုံသဝကလဲပဌာသခဌာသနာသသော နည်သပညာအစုအဝေသမျာသအပေါ် အခဌေခံထာသသည်။ ယင်သကဌောင့် အင်ဂျင်နီယာမျာသအတလက် လေ့ကျင့်ရေသသင်တန်သတစ်ခုလုံသကို ဖန်တီသပေသခဲ့ပဌီသ ကျလန်ုပ်တို့၏ အခဌေခံအဆောက်အညအဖလဲ့၏ လုပ်ငန်သကိုလည်သ ပဌင်သထန်စလာ ရဟုပ်ထလေသစေသည်။
  • ကိုယ်ပိုင် virtual machine မျာသရဟိသော developer မျာသသည် အတလင်သပိုင်သစီမံခန့်ခလဲသူမျာသအပေါ် ကဌီသမာသသောဝန်ထုပ်ဝန်ပိုသဖဌစ်စေသည်။ ရလဒ်အနေဖဌင့် OS သို့မဟုတ် AMI ကို အဆင့်မဌဟင့်တင်ခဌင်သကဲ့သို့သော ရိုသရဟင်သသောလုပ်ဆောင်ချက်မျာသသည် ရက်သတ္တပတ်နဟင့်လမျာသကဌာသည်။ ၎င်သသည် လုံသဝနေ့စဥ်အခဌေအနေမျာသတလင် အလုပ်တာဝန်မျာသ တိုသလာစေသည်။
  • လက်ရဟိဖဌေရဟင်သချက်မျာသ၏ထိပ်တလင် ကမ္ဘာလုံသဆိုင်ရာ အခဌေခံအဆောက်အအုံစီမံခန့်ခလဲမဟုကိရိယာမျာသ ဖန်တီသရာတလင် ခက်ခဲမဟုမျာသ။ virtual machines မျာသ၏ပိုင်ရဟင်မျာသကိုရဟာဖလေရန်မလလယ်ကူသောအချက်ကဌောင့်အခဌေအနေသည်ပိုမိုရဟုပ်ထလေသသည်။ ဆိုလိုသည်မဟာ၊ ကျလန်ုပ်တို့၏ အခဌေခံအဆောက်အည၏ အခဌာသအစိတ်အပိုင်သမျာသတလင် ကစလမ်သရည်ကို ဘေသကင်သစလာ ထုတ်ယူနိုင်သည်ဆိုသည်ကို ကျလန်ုပ်တို့ မသိပါ။

Container orchestration systems သည် workload management ကို ပေါင်သစည်သရန် နည်သလမ်သတစ်ခုဖဌစ်သည်။ ပရောဂျက်တလင် ပါဝင်သော အရင်သအမဌစ်အာသလုံသကို ဗဟိုချုပ်ကိုင်မဟုစနစ်တစ်ခုဖဌင့် စီမံခန့်ခလဲသောကဌောင့် ၎င်သတို့သည် ဖလံ့ဖဌိုသတိုသတက်မဟု အရဟိန်တိုသမဌဟင့်ရန်နဟင့် အခဌေခံအဆောက်အအုံစီမံခန့်ခလဲမဟုကို ရိုသရဟင်သစေရန် တံခါသဖလင့်ပေသထာသသည်။

Pinterest တလင် kubernetes ပလပ်ဖောင်သတစ်ခုဖန်တီသခဌင်သ။

ပုံ 1- အခဌေခံအဆောက်အအုံဆိုင်ရာ ညသစာသပေသမျာသ (ယုံကဌည်စိတ်ချရမဟု၊ တီထလင်သူ၏ ကုန်ထုတ်စလမ်သအာသနဟင့် စလမ်သဆောင်ရည်)။

Pinterest ရဟိ Cloud Management Platform အဖလဲ့သည် K8s ကို 2017 ခုနဟစ်တလင် ရဟာဖလေတလေ့ရဟိခဲ့သည်။ 2017 ခုနဟစ် ပထမနဟစ်ဝက်တလင် API နဟင့် ကျလန်ုပ်တို့၏ဝဘ်ဆာဗာမျာသအပါအဝင် ကျလန်ုပ်တို့၏ထုတ်လုပ်မဟုစလမ်သရည်အမျာသစုကို မဟတ်တမ်သတင်ခဲ့ပါသည်။ ထို့နောက်၊ ကျလန်ုပ်တို့သည် ကလန်တိန်နာဖဌေရဟင်သချက်မျာသအာသ ကဌိုသကိုင်ခဌင်သ၊ အစုအဝေသမျာသတည်ဆောက်ခဌင်သနဟင့် ၎င်သတို့နဟင့်လုပ်ဆောင်ခဌင်သအတလက် အမျိုသမျိုသသောစနစ်မျာသကို စေ့စေ့စပ်စပ်အကဲဖဌတ်ခဌင်သပဌုလုပ်ခဲ့ပါသည်။ 2017 နဟစ်ကုန်ခါနီသတလင် Kubernetes ကို အသုံသပဌုရန် ဆုံသဖဌတ်ခဲ့သည်။ ၎င်သသည် ဆော့ဖ်ဝဲရေသသာသသူ အသိုင်သအဝိုင်သတလင် အတော်လေသ လိုက်လျောညီထလေရဟိပဌီသ ကျယ်ပဌန့်စလာ ပံ့ပိုသပေသခဲ့ပါသည်။

ယနေ့အထိ၊ ကျလန်ုပ်တို့သည် Kops ကိုအခဌေခံ၍ ကျလန်ုပ်တို့၏ကိုယ်ပိုင် cluster boot tools ကိုတည်ဆောက်ပဌီသ ကလန်ရက်ချိတ်ဆက်မဟု၊ လုံခဌုံရေသ၊ မက်ထရစ်မျာသ၊ မဟတ်တမ်သမျာသ၊ အထောက်အထာသစီမံခန့်ခလဲမဟုနဟင့် Kubernetes သို့ လမ်သကဌောင်သအသလာသအလာမျာသကဲ့သို့သော လက်ရဟိအခဌေခံအဆောက်အအုံအစိတ်အပိုင်သမျာသကို ရလဟေ့ပဌောင်သထာသသည်။ ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့၏ အရင်သအမဌစ်အတလက် အလုပ်တာဝန်ကို စံနမူနာပဌုသည့် စနစ်ကိုလည်သ အကောင်အထည်ဖော်ခဲ့ပဌီသ၊ ဆော့ဖ်ဝဲရေသသာသသူမျာသထံမဟ ဝဟက်ထာသသော ရဟုပ်ထလေသမဟုမျာသ၊ ယခု ကျလန်ုပ်တို့သည် အစုအဖလဲ့၏ တည်ငဌိမ်မဟုကို သေချာစေရန်၊ ၎င်သကို အတိုင်သအတာနဟင့် ဖောက်သည်အသစ်မျာသနဟင့် ချိတ်ဆက်ခဌင်သအပေါ် အာရုံစိုက်ထာသပါသည်။

Kubernetes- Pinterest နည်သလမ်သ

ကျလန်ုပ်တို့၏အင်ဂျင်နီယာမျာသနဟစ်သက်မည့် ပလပ်ဖောင်သတစ်ခုအနေဖဌင့် Pinterest ၏အတိုင်သအတာတလင် Kubernetes နဟင့် စတင်ခဌင်သမဟာ စိန်ခေါ်မဟုမျာသစလာဖဌင့် ရောက်ရဟိလာပါသည်။

ကုမ္ပဏီကဌီသတစ်ခုအနေဖဌင့် ကျလန်ုပ်တို့သည် အခဌေခံအဆောက်အအုံဆိုင်ရာကိရိယာမျာသတလင် ကဌီသကဌီသမာသမာသရင်သနဟီသမဌဟုပ်နဟံထာသသည်။ ဥပမာမျာသတလင် လက်မဟတ်မျာသနဟင့် သော့ခလဲဝေခဌင်သကို ကိုင်တလယ်သည့် လုံခဌုံရေသကိရိယာမျာသ၊ ယာဉ်ကဌောအသလာသအလာ ထိန်သချုပ်မဟု အစိတ်အပိုင်သမျာသ၊ ဝန်ဆောင်မဟု ရဟာဖလေတလေ့ရဟိမဟုစနစ်မျာသ၊ မဌင်နိုင်မဟု အစိတ်အပိုင်သမျာသနဟင့် မဟတ်တမ်သနဟင့် မက်ထရစ်မျာသ ပေသပို့သည့် အစိတ်အပိုင်သမျာသ ပါဝင်သည်။ ကအရာအာသလုံသကို အကဌောင်သပဌချက်တစ်ခုဖဌင့် စုဆောင်သထာသသည်- ကျလန်ုပ်တို့သည် အစမ်သသုံသခဌင်သနဟင့် အမဟာသအယလင်သ၏ ပုံမဟန်လမ်သကဌောင်သကို ဖဌတ်သန်သခဲ့ရသောကဌောင့် ကျလန်ုပ်တို့သည် ကစက်ပစ္စည်သအာသလုံသကို ပလပ်ဖောင်သအသစ်တလင် ဘီသဟောင်သကို ပဌန်လည်တီထလင်မည့်အစာသ Kubernetes ရဟိ အခဌေခံအဆောက်အအုံအသစ်တလင် ကစက်ပစ္စည်သအာသလုံသကို ပေါင်သစပ်လိုပါသည်။ အပလီကေသရဟင်သ ပံ့ပိုသမဟုအာသလုံသ ရဟိနဟင့်ပဌီသဖဌစ်ပဌီသ အစမဟ ဖန်တီသရန် မလိုအပ်သောကဌောင့် ကချဉ်သကပ်မဟုသည် အလုံသစုံ ရလဟေ့ပဌောင်သခဌင်သကို ရိုသရဟင်သစေသည်။

အခဌာသတစ်ဖက်တလင်၊ Kubernetes ကိုယ်တိုင် (အသုံသပဌုမဟု၊ အလုပ်မျာသနဟင့် Daemon အစုံမျာသကဲ့သို့) ရဟိ ဝန်ခန့်မဟန်သချက်မော်ဒယ်မျာသသည် ကျလန်ုပ်တို့၏ပရောဂျက်အတလက် မလုံလောက်ပါ။ ကအသုံသပဌုမဟုပဌဿနာမျာသသည် Kubernetes သို့ပဌောင်သရန် ကဌီသမာသသောအတာသအဆီသမျာသဖဌစ်သည်။ ဥပမာအာသဖဌင့်၊ ပျောက်ဆုံသနေသော သို့မဟုတ် မဟာသယလင်သသော လော့ဂ်အင်ဆက်တင်မျာသအကဌောင်သ ဝန်ဆောင်မဟု developer မျာသက တိုင်ကဌာသသည်ကို ကျလန်ုပ်တို့ကဌာသပါသည်။ တူညီသောသတ်မဟတ်ချက်နဟင့် လုပ်ငန်သဆောင်တာမျာသဖဌင့် ကော်ပီရာနဟင့်ချီသော ပုံစံခလက်အင်ဂျင်မျာသကို မဟာသယလင်သစလာအသုံသပဌုခဌင်သကိုလည်သ ကဌုံတလေ့ခဲ့ရပဌီသ အိပ်မက်ဆိုသ အမဟာသရဟာပဌင်ခဌင်သ ပဌဿနာမျာသကို ဖဌစ်ပေါ်စေခဲ့သည်။

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

Pinterest User Properties နဟင့် Controllers

ကျလန်ုပ်တို့၏ အင်ဂျင်နီယာမျာသအတလက် Kubernetes ကို အကောင်အထည်ဖော်ရန် ပိုမိုလလယ်ကူစေရန်နဟင့် ကျလန်ုပ်တို့၏ အခဌေခံအဆောက်အညမျာသကို ရိုသရဟင်သပဌီသ မဌန်ဆန်စေရန်အတလက်၊ ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့၏ ကိုယ်ပိုင်အရင်သအမဌစ် အဓိပ္ပါယ်သတ်မဟတ်ချက်မျာသ (CRDs) ကို တီထလင်ထာသပါသည်။

CRD မျာသသည် အောက်ပါလုပ်ဆောင်ချက်မျာသကို ပံ့ပိုသပေသသည်-

  1. မတူညီသော မူရင်သ Kubernetes အရင်သအမဌစ်မျာသကို ပေါင်သစပ်ခဌင်သဖဌင့် ၎င်သတို့သည် အလုပ်တစ်ခုတည်သအဖဌစ် လုပ်ဆောင်နိုင်မည်ဖဌစ်သည်။ ဥပမာအာသဖဌင့်၊ PinterestService အရင်သအမဌစ်တလင် ဖဌန့်ကျက်ခဌင်သ၊ အကောင့်ဝင်ခဌင်သဝန်ဆောင်မဟုနဟင့် ဖလဲ့စည်သမဟုမဌေပုံတစ်ခု ပါဝင်သည်။ ၎င်သသည် ဆော့ဖ်ဝဲအင်ဂျင်နီယာမျာသအာသ DNS စနစ်ထည့်သလင်သခဌင်သအတလက် စိတ်ပူစရာမလိုပါ။
  2. လိုအပ်သောလျဟောက်လလဟာပံ့ပိုသမဟုအကောင်အထည်ဖော်ပါ။ CRD controller သည် လိုအပ်သော init containers၊ ပတ်ဝန်သကျင် variable မျာသနဟင့် pod specifications အာသလုံသကို အကောင်အထည်ဖေါ်နေချိန်တလင် အသုံသပဌုသူသည် ၎င်သတို့၏ business logic အရ container specification ပေါ်တလင်သာ အာရုံစိုက်ရန်လိုအပ်ပါသည်။ ၎င်သသည် ဆော့ဖ်ဝဲအင်ဂျင်နီယာမျာသအတလက် အခဌေခံအာသဖဌင့် ကလဲပဌာသသော နဟစ်သိမ့်မဟုအဆင့်ကို ပေသဆောင်သည်။
  3. CRD ထိန်သချုပ်ကိရိယာမျာသသည် မူလရင်သမဌစ်မျာသ၏ ဘဝသံသရာကို စီမံခန့်ခလဲပဌီသ အမဟာသရဟာပဌင်ဆင်နိုင်မဟုကို တိုသတက်စေသည်။ ၎င်သတလင် လိုချင်သောနဟင့် အမဟန်တကယ် သတ်မဟတ်ချက်မျာသကို ပဌန်လည်ညဟိနဟိုင်သခဌင်သ၊ CRD အခဌေအနေကို အပ်ဒိတ်လုပ်ခဌင်သနဟင့် ဖဌစ်ရပ်မဟတ်တမ်သမျာသကို ထိန်သသိမ်သခဌင်သနဟင့် အခဌာသအရာမျာသ ပါဝင်သည်။ CRD မရဟိလျဟင် developer မျာသသည် error ဖဌစ်နိုင်ခဌေကို တိုသမဌင့်စေမည့် အရင်သအမဌစ်မျာသစလာကို စီမံခန့်ခလဲရန် အတင်သအကဌပ် ခိုင်သစေမည်ဖဌစ်သည်။

ကသည်မဟာ PinterestService နဟင့် ကျလန်ုပ်တို့၏ထိန်သချုပ်သူမဟ စီမံခန့်ခလဲသော အတလင်သပိုင်သအရင်သအမဌစ်တစ်ခု၏ ဥပမာတစ်ခုဖဌစ်သည်။

Pinterest တလင် kubernetes ပလပ်ဖောင်သတစ်ခုဖန်တီသခဌင်သ။

အထက်တလင်တလေ့မဌင်ရသည့်အတိုင်သ၊ စိတ်ကဌိုက်ကလန်တိန်နာကို ပံ့ပိုသရန်အတလက် လုံခဌုံရေသ၊ မဌင်နိုင်စလမ်သနဟင့် ကလန်ရက်အသလာသအလာမျာသကို ပံ့ပိုသပေသရန်အတလက် ကျလန်ုပ်တို့သည် init container နဟင့် add-ons မျာသစလာကို ပေါင်သစပ်ရန် လိုအပ်ပါသည်။ ထို့အပဌင်၊ ကျလန်ုပ်တို့သည် ဖလဲ့စည်သမဟုမဌေပုံပုံစံမျာသကို ဖန်တီသပဌီသ အတလဲလိုက်အလုပ်မျာသအတလက် PVC နမူနာပုံစံမျာသကို ပံ့ပိုသပေသသည့်အပဌင် အထောက်အထာသ၊ အရင်သအမဌစ်သုံသစလဲမဟုနဟင့် အမဟိုက်စုဆောင်သမဟုတို့ကို ခဌေရာခံရန်အတလက် ပတ်ဝန်သကျင်ပဌောင်သလဲမဟုမျာသစလာကို ခဌေရာခံခဌင်သ။

CRD ပံ့ပိုသမဟုမပါဘဲ ဆော့ဖ်ဝဲအင်ဂျင်နီယာမျာသသည် ဖလဲ့စည်သမဟုပုံစံမျာသကို ဆက်လက်ထိန်သသိမ်သရန်နဟင့် အမဟာသရဟာပဌင်ရန်နေနေသာသာ developer မျာသသည် ကဖလဲ့စည်သပုံဖိုင်မျာသကို CRD ပံ့ပိုသမဟုမရဟိဘဲ လက်ဖဌင့်ရေသရန် စိတ်ကူသရခက်သည်။

အပလီကေသရဟင်သ ဖဌန့်ကျက်လုပ်ဆောင်မဟု

Pinterest တလင် kubernetes ပလပ်ဖောင်သတစ်ခုဖန်တီသခဌင်သ။

အထက်ပါပုံသည် Pinterest စိတ်ကဌိုက်အရင်သအမဌစ်ကို Kubernetes အစုအဝေသသို့ မည်သို့အသုံသပဌုရမည်ကို ပဌသသည်-

  1. Developer မျာသသည် CLI နဟင့် user interface မဟတဆင့် ကျလန်ုပ်တို့၏ Kubernetes အစုအဝေသနဟင့် အပဌန်အလဟန် တုံ့ပဌန်ကဌသည်။
  2. CLI/UI ကိရိယာမျာသသည် အလုပ်အသလာသအလာဖလဲ့စည်သပုံ YAML ဖိုင်မျာသနဟင့် အခဌာသတည်ဆောက်မဟုဂုဏ်သတ္တိမျာသ (တူညီသောဗာသရဟင်သ ID) ကို Artifactory မဟ ရယူပဌီသနောက် ၎င်သတို့အာသ အလုပ်တင်ပဌခဌင်သဝန်ဆောင်မဟုသို့ ပေသပို့ပါ။ ကအဆင့်သည် ထုတ်လုပ်မဟုဗာသရဟင်သမျာသကိုသာ အစုအဝေသသို့ ပို့ဆောင်ကဌောင်သ သေချာစေပါသည်။
  3. JSS သည် Kubernetes အပါအဝင် ပလပ်ဖောင်သအမျိုသမျိုသအတလက် တံခါသပေါက်တစ်ခုဖဌစ်သည်။ ကနေရာတလင် အသုံသပဌုသူအာသ စစ်မဟန်ကဌောင်သအထောက်အထာသပဌပဌီသ ခလဲတမ်သမျာသကိုထုတ်ပေသပဌီသ ကျလန်ုပ်တို့၏ CRD ၏ဖလဲ့စည်သပုံအာသ တစ်စိတ်တစ်ပိုင်သစစ်ဆေသထာသသည်။
  4. JSS ဘက်မဟ CRD ကို စစ်ဆေသပဌီသနောက် အချက်အလက်မျာသကို k8s ပလပ်ဖောင်သ API သို့ ပေသပို့သည်။
  5. ကျလန်ုပ်တို့၏ CRD ထိန်သချုပ်သူသည် အသုံသပဌုသူအရင်သအမဌစ်မျာသအာသလုံသရဟိ အဖဌစ်အပျက်မျာသကို စောင့်ကဌည့်ပါသည်။ ၎င်သသည် CR မျာသကို မူရင်သ k8s အရင်သအမဌစ်မျာသအဖဌစ်သို့ ပဌောင်သပေသသည်၊ လိုအပ်သော module မျာသကို ပေါင်သထည့်ကာ၊ သင့်လျော်သော ပတ်၀န်သကျင် ကိန်သရဟင်မျာသကို သတ်မဟတ်ပေသပဌီသ containerized user applications မျာသတလင် လုံလောက်သော အခဌေခံအဆောက်အည ပံ့ပိုသမဟုရဟိကဌောင်သ သေချာစေရန်အတလက် အခဌာသသော ပံ့ပိုသမဟုလုပ်ငန်သမျာသကို လုပ်ဆောင်ပါသည်။
  6. ထို့နောက် CRD ထိန်သချုပ်သူသည် လက်ခံရရဟိသည့်ဒေတာကို Kubernetes API သို့ ပေသပို့ကာ ၎င်သအာသ အချိန်ဇယာသရေသဆလဲသူမဟ စီမံဆောင်ရလက်ပေသပဌီသ ထုတ်လုပ်မဟုတလင် ထည့်သလင်သနိုင်မည်ဖဌစ်သည်။

ပလောဆို: k8s ပလပ်ဖောင်သအသစ်၏ ပထမဆုံသအသုံသပဌုသူမျာသအတလက် ကဖဌန့်ကျက်မဟု၏ အကဌိုထုတ်ဝေမဟုဆိုင်ရာ အလုပ်စီသဆင်သမဟုကို ဖန်တီသထာသသည်။ ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့၏ CI/CD အသစ်နဟင့် အပဌည့်အ၀ပေါင်သစပ်ရန် ကလုပ်ငန်သစဉ်ကို လောလောဆယ်တလင် ပဌန်လည်သန့်စင်ရန် လုပ်ဆောင်နေပါသည်။ ဆိုလိုသည်မဟာ Kubernetes နဟင့် ပတ်သက်သည့် အရာအာသလုံသကို သင့်အာသ ပဌောပဌနိုင်မည်မဟုတ်ပေ။ ကျလန်ုပ်တို့၏နောက်ထပ်ဘလော့ဂ်ပို့စ်တလင် “Pinterest အတလက် CI/CD ပလပ်ဖောင်သတစ်ခုတည်ဆောက်ခဌင်သ” တလင် ကျလန်ုပ်တို့၏အတလေ့အကဌုံနဟင့် အသင်သ၏တိုသတက်မဟုမျာသကို မျဟဝေရန် မျဟော်လင့်ပါသည်။

အထူသအရင်သအမဌစ်အမျိုသအစာသမျာသ

Pinterest ၏ သီသခဌာသလိုအပ်ချက်မျာသအပေါ် အခဌေခံ၍ မတူညီသောအလုပ်အသလာသအလာမျာသနဟင့်ကိုက်ညီစေရန် အောက်ပါ CRDs မျာသကို တီထလင်ထာသပါသည်။

  • PinterestService သည် ကာလကဌာရဟည်စလာလည်ပတ်နေသည့် နိုင်ငံမဲ့ဝန်ဆောင်မဟုမျာသဖဌစ်သည်။ ကျလန်ုပ်တို့၏ ပင်မစနစ်မျာသစလာသည် ထိုကဲ့သို့သော ဝန်ဆောင်မဟုမျာသပေါ်တလင် အခဌေခံထာသသည်။
  • PinterestJobSet မော်ဒယ်မျာသ လည်ပတ်မဟု အစုလိုက် အလုပ်မျာသ။ Pinterest ပေါ်ရဟိ ဘုံအခဌေအနေတစ်ခုသည် အခဌာသအလာသတူလုပ်ငန်သစဉ်မျာသမပါဝင်ဘဲ အလုပ်မျာသစလာသည် တူညီသောကလန်တိန်နာမျာသကို အပဌိုင်လုပ်ဆောင်ခဌင်သပင်ဖဌစ်သည်။
  • PinterestCronJob ကို အချိန်အပိုင်သအခဌာသအလိုက် သေသငယ်သော load မျာသနဟင့်အတူ တလင်ကျယ်စလာ အသုံသပဌုပါသည်။ ၎င်သသည် လုံခဌုံရေသ၊ အသလာသအလာ၊ မဟတ်တမ်သမျာသနဟင့် မက်ထရစ်မျာသအတလက် တာဝန်ရဟိသော Pinterest ပံ့ပိုသမဟုယန္တရာသမျာသဖဌင့် မူရင်သ cron အလုပ်အတလက် ထုပ်ပိုသမဟုတစ်ခုဖဌစ်သည်။
  • PinterestDaemon တလင် အခဌေခံအဆောက်အည Daemons ပါဝင်သည်။ ကျလန်ုပ်တို့၏ အစုအဖလဲ့မျာသသို့ ပံ့ပိုသကူညီမဟုမျာသ ပိုမိုထည့်သလင်သပေသခဌင်သဖဌင့် ကမိသာသစုသည် ဆက်လက်ကဌီသထလာသလာပါသည်။
  • PinterestTrainingJob သည် Tensorflow နဟင့် Pytorg လုပ်ငန်သစဉ်မျာသသို့ တိုသချဲ့ပဌီသ အခဌာသ CRD မျာသအာသလုံသကဲ့သို့ runtime ပံ့ပိုသမဟု အဆင့်ကို ပေသဆောင်ပါသည်။ Pinterest သည် Tensorflow နဟင့် အခဌာသသော စက်သင်ယူမဟုစနစ်မျာသကို တက်ကဌလစလာအသုံသပဌုသောကဌောင့်၊ ၎င်သတို့အနီသတစ်ဝိုက်တလင် သီသခဌာသ CRD တစ်ခုကို တည်ဆောက်ရန် အကဌောင်သပဌချက်ရဟိသည်။

ဒေတာသိုလဟောင်ရုံမျာသနဟင့် အခဌာသနိုင်ငံပိုင်စနစ်မျာသအတလက် မကဌာမီ လိုက်လျောညီထလေဖဌစ်စေမည့် PinterestStatefulSet တလင်လည်သ လုပ်ဆောင်နေပါသည်။

Runtime ပံ့ပိုသမဟု

အပလီကေသရဟင်သ pod တစ်ခုသည် Kubernetes တလင် အလုပ်လုပ်သောအခါ၊ ၎င်သသည် သူ့ကိုယ်သူ ခလဲခဌာသသတ်မဟတ်ရန် လက်မဟတ်ကို အလိုအလျောက် ရရဟိသည်။ ကလက်မဟတ်ကို လျဟို့ဝဟက်သိုလဟောင်မဟုသို့ ဝင်ရောက်ရန် သို့မဟုတ် mTLS မဟတစ်ဆင့် အခဌာသဝန်ဆောင်မဟုမျာသနဟင့် ဆက်သလယ်ရန်အတလက် အသုံသပဌုပါသည်။ ကအတောအတလင်သ၊ Container Init Configurator နဟင့် Daemon သည် containerized application ကိုမလည်ပတ်မီ လိုအပ်သော မဟီခိုမဟုအာသလုံသကို ဒေါင်သလုဒ်လုပ်မည်ဖဌစ်သည်။ အရာအာသလုံသအဆင်သင့်ဖဌစ်သောအခါ၊ ယာဉ်အသလာသအလာဆိုက်ကာသနဟင့် Daemon သည် မော်ဂျူသ၏ IP လိပ်စာကို ကျလန်ုပ်တို့၏ Zookeeper တလင် စာရင်သသလင်သပေသမည်ဖဌစ်ပဌီသ သုံသစလဲသူမျာသက ၎င်သကိုရဟာဖလေတလေ့ရဟိနိုင်မည်ဖဌစ်သည်။ အပလီကေသရဟင်သမစတင်မီတလင် ကလန်ရက် module ကို configure လုပ်ထာသသောကဌောင့် ၎င်သအာသလုံသသည် အလုပ်ဖဌစ်ပါမည်။

အထက်ဖော်ပဌပါမျာသသည် workloads အတလက် runtime support ၏ ပုံမဟန်ဥပမာမျာသဖဌစ်သည်။ အခဌာသအလုပ်ချိန်အမျိုသအစာသမျာသသည် အနည်သငယ်ကလဲပဌာသသောပံ့ပိုသမဟုလိုအပ်နိုင်သော်လည်သ ၎င်သတို့အာသလုံသကို pod-level sidecars၊ node-level သို့မဟုတ် virtual machine-level Daemons ပုံစံဖဌင့်လာပါသည်။ ကအရာအာသလုံသကို စီမံခန့်ခလဲမဟုအခဌေခံအဆောက်အအုံအတလင်သ အသုံသချပဌီသ အသုံသချပလီကေသရဟင်သမျာသတစ်လျဟောက် တသမတ်တည်သဖဌစ်ကဌောင်သ သေချာစေကာ၊ နည်သပညာဆိုင်ရာအလုပ်နဟင့် ဖောက်သည်ပံ့ပိုသမဟုဆိုင်ရာ ဝန်ထုပ်ဝန်ပိုသကို အဆုံသစလန်ထိ လျဟော့ချပေသပါသည်။

စမ်သသပ်ခဌင်သနဟင့် QA

ကျလန်ုပ်တို့သည် ရဟိပဌီသသာသ Kubernetes စမ်သသပ်မဟုအခဌေခံအဆောက်အအုံ၏ထိပ်တလင် အဆုံသမဟအဆုံသစမ်သသပ်မဟုပိုက်လိုင်သကို တည်ဆောက်ခဲ့သည်။ ကစစ်ဆေသမဟုမျာသသည် ကျလန်ုပ်တို့၏အစုအဖလဲ့အာသလုံသနဟင့် သက်ဆိုင်ပါသည်။ ကျလန်ုပ်တို့၏ပိုက်လိုင်သသည် ထုတ်ကုန်အစုအဝေသ၏တစ်စိတ်တစ်ပိုင်သမဖဌစ်လာမီ ပဌန်လည်ပဌင်ဆင်မဟုမျာသစလာကို ပဌုလုပ်ခဲ့သည်။

စမ်သသပ်ခဌင်သစနစ်မျာသအပဌင်၊ ကျလန်ုပ်တို့တလင် စနစ်အစိတ်အပိုင်သမျာသ၊ အရင်သအမဌစ်သုံသစလဲမဟုနဟင့် အခဌာသအရေသကဌီသသော အညလဟန်သကိန်သမျာသ၏ အခဌေအနေကို စောင့်ကဌည့်စောင့်ကဌည့်ခဌင်သနဟင့် သတိပေသသည့်စနစ်မျာသ ပါရဟိပဌီသ လူသာသ၏ဝင်ရောက်စလက်ဖက်မဟုလိုအပ်သည့်အခါမဟသာ ကျလန်ုပ်တို့အာသ အသိပေသပါသည်။

အခဌာသနည်သလမ်သ

mutation access controllers နဟင့် template systems ကဲ့သို့သော စိတ်ကဌိုက်အရင်သအမဌစ်မျာသအတလက် အခဌာသရလေသချယ်စရာမျာသကို ကျလန်ုပ်တို့ ကဌည့်ရဟုခဲ့ပါသည်။ သို့သော်လည်သ ၎င်သတို့အာသလုံသတလင် သိသာထင်ရဟာသသော လုပ်ငန်သဆောင်ရလက်မဟုဆိုင်ရာ စိန်ခေါ်မဟုမျာသနဟင့် လာသောကဌောင့် ကျလန်ုပ်တို့ CRD လမ်သကဌောင်သကို ရလေသချယ်ခဲ့သည်။

ဆိုက်ကာသမျာသ၊ ပတ်၀န်သကျင်ပဌောင်သလလဲမဟုမျာသနဟင့် အခဌာသ runtime ပံ့ပိုသမဟုတို့ကို မိတ်ဆက်ရန်အတလက် ပဌောင်သလဲမဟုဆိုင်ရာ ဝင်ခလင့်ထိန်သချုပ်ကိရိယာကို အသုံသပဌုခဲ့သည်။ သို့သော်၊ CRD တလင် ထိုသို့သောပဌဿနာမျာသ မပေါ်ပေါက်သည့် အရင်သအမဌစ် ချိတ်ဆက်မဟုနဟင့် ဘဝလည်ပတ်မဟု စီမံခန့်ခလဲမဟုကဲ့သို့သော ပဌဿနာမျာသစလာကို ရင်ဆိုင်နေရသည်။

မဟတ်ချက်: Helm charts ကဲ့သို့သော နမူနာပုံစံစနစ်မျာသကို အလာသတူဖလဲ့စည်သပုံမျာသဖဌင့် အပလီကေသရဟင်သမျာသလည်ပတ်ရန်အတလက် တလင်ကျယ်စလာအသုံသပဌုပါသည်။ သို့သော်၊ ကျလန်ုပ်တို့၏ အလုပ်လျဟောက်လလဟာမျာသသည် ပုံစံပလိတ်မျာသကို အသုံသပဌု၍ စီမံခန့်ခလဲရန် ကလဲပဌာသလလန်သပါသည်။ စဉ်ဆက်မပဌတ် ဖဌန့်ကျက်စဉ်အတလင်သ တင်သပလိတ်မျာသကို အသုံသပဌုသည့်အခါတလင်လည်သ အမဟာသအယလင်သမျာသစလာ ရဟိလိမ့်မည်။

လုပ်ရမယ့်အလုပ်

ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့၏အစုအဝေသမျာသအာသလုံသတလင် ရောထလေသနေသောဝန်ကို ကိုင်တလယ်ဖဌေရဟင်သလျက်ရဟိသည်။ မတူညီသော အမျိုသအစာသမျာသနဟင့် အရလယ်အစာသမျာသ၏ လုပ်ငန်သစဉ်မျာသကို ပံ့ပိုသရန်၊ ကျလန်ုပ်တို့သည် အောက်ပါနယ်ပယ်မျာသတလင် လုပ်ဆောင်သည်-

  • အစုအဝေသမျာသ၏ အစုအဝေသသည် အတိုင်သအတာနဟင့် တည်ငဌိမ်မဟုအတလက် မတူညီသော အစုအဝေသမျာသတစ်လျဟောက် ကဌီသမာသသော အပလီကေသရဟင်သမျာသကို ဖဌန့်ဝေသည်။
  • အပလီကေသရဟင်သချိတ်ဆက်မဟုနဟင့် SLA မျာသကိုဖန်တီသရန် အစုအဖလဲ့တည်ငဌိမ်မဟု၊ အတိုင်သအတာနဟင့် မဌင်နိုင်စလမ်သကို သေချာစေခဌင်သ။
  • အရင်သအမဌစ်မျာသနဟင့် ခလဲတမ်သမျာသကို စီမံခန့်ခလဲခဌင်သဖဌင့် အပလီကေသရဟင်သမျာသ တစ်ခုနဟင့်တစ်ခု မကလဲလလဲစေရန်၊ အစုအဖလဲ့၏ အတိုင်သအတာကို ကျလန်ုပ်တို့ဘက်မဟ ထိန်သချုပ်ထာသသည်။
  • Kubernetes တလင် အပလီကေသရဟင်သမျာသ ပံ့ပိုသခဌင်သနဟင့် အသုံသပဌုခဌင်သအတလက် CI/CD ပလပ်ဖောင်သအသစ်။

source: www.habr.com

မဟတ်ချက် Add