DomClick ရဟိ Kubernetes- 1000 microservices အစုအဝေသကို ငဌိမ်သချမ်သစလာ အိပ်စက်နည်သ

ကျလန်ုပ်၏အမည်မဟာ Viktor Yagofarov ဖဌစ်ပဌီသ Ops (လုပ်ငန်သဆောင်ရလက်မဟု) အဖလဲ့ရဟိ နည်သပညာပိုင်သဆိုင်ရာ ဖလံ့ဖဌိုသတိုသတက်မဟုမန်နေဂျာအဖဌစ် DomClick တလင် Kubernetes ပလပ်ဖောင်သကို ဖော်ဆောင်လျက်ရဟိသည်။ ကျလန်ုပ်တို့၏ Dev <-> Ops လုပ်ငန်သစဉ်မျာသ၊ ရုရဟာသနိုင်ငံရဟိ အကဌီသဆုံသ k8s အစုအဝေသမျာသထဲမဟ တစ်ခုလုပ်ဆောင်ခဌင်သ၏ အင်္ဂါရပ်မျာသနဟင့် ကျလန်ုပ်တို့အဖလဲ့အသုံသပဌုသည့် DevOps/SRE အလေ့အကျင့်မျာသအကဌောင်သ ဆလေသနလေသလိုပါသည်။

DomClick ရဟိ Kubernetes- 1000 microservices အစုအဝေသကို ငဌိမ်သချမ်သစလာ အိပ်စက်နည်သ

Team Ops

Ops အဖလဲ့သည် လက်ရဟိတလင် လူ ၁၅ ညသရဟိသည်။ ၎င်သတို့ သုံသညသသည် ရုံသတလင် တာဝန်ရဟိပဌီသ နဟစ်ညသသည် မတူညီသော အချိန်ဇုန်တလင် အလုပ်လုပ်ကဌပဌီသ ညဘက်တလင် အပါအဝင်ဖဌစ်သည်။ ထို့ကဌောင့်၊ Ops မဟတစ်စုံတစ်ညသသည် အမဌဲစောင့်ကဌည့်နေပဌီသ မည်သည့်ရဟုပ်ထလေသမဟု၏အဖဌစ်အပျက်ကိုမဆို တုံ့ပဌန်ရန် အသင့်ရဟိနေပါသည်။ ကျလန်ုပ်တို့တလင် ညဆိုင်သမျာသမရဟိသည့်အတလက် ကျလန်ုပ်တို့၏ စိတ်ဓာတ်ကို သက်သာစေပဌီသ လူတိုင်သအတလက် လုံလောက်သော အိပ်စက်မဟုနဟင့် ကလန်ပဌူတာတလင်သာမက အာသလပ်ချိန်မျာသကို ကုန်ဆုံသစေသည်။

DomClick ရဟိ Kubernetes- 1000 microservices အစုအဝေသကို ငဌိမ်သချမ်သစလာ အိပ်စက်နည်သ

လူတိုင်သတလင် မတူညီသောအရည်အချင်သမျာသ- ကလန်ရက်ချိတ်ဆက်သူမျာသ၊ DBAs၊ ELK stack အထူသကုမျာသ၊ Kubernetes စီမံခန့်ခလဲသူမျာသ/ဆော့ဖ်ဝဲအင်ဂျင်နီယာမျာသ၊ စောင့်ကဌည့်ခဌင်သ၊ virtualization၊ ဟာ့ဒ်ဝဲကျလမ်သကျင်သူမျာသ စသည်တို့ဖဌစ်သည်။ အရာတစ်ခုက လူတိုင်သကို စည်သလုံသညီညလတ်စေသည် - လူတိုင်သသည် ကျလန်ုပ်တို့ကို အတိုင်သအတာတစ်ခုအထိ အစာသထိုသနိုင်သည်- ဥပမာ၊ k8s အစုအဝေသတလင် node အသစ်မျာသကို မိတ်ဆက်ပါ၊ PostgreSQL ကို အပ်ဒိတ်လုပ်ပါ၊ CI / CD + Ansible ပိုက်လိုင်သတစ်ခုရေသပါ၊ Python / Bash / Go တလင် တစ်ခုခုကို အလိုအလျောက်ပဌုလုပ်ပါ၊ အပိုင်သတစ်ခုကို ချိတ်ဆက်ပါ။ DPC သို့ ဟာ့ဒ်ဝဲ။ မည်သည့်နယ်ပယ်တလင်မဆို ခိုင်မာသောအရည်အချင်သမျာသသည် လဟုပ်ရဟာသမဟု၏ညသတည်ချက်ပဌောင်သလဲခဌင်သနဟင့် အခဌာသနယ်ပယ်အချို့တလင် စတင်စုပ်ယူခဌင်သကို အနဟောင့်အယဟက်မပဌုပါ။ ဥပမာအာသဖဌင့်၊ ကျလန်ုပ်သည် PostgreSQL အထူသကျလမ်သကျင်သူအဖဌစ် ကုမ္ပဏီတစ်ခုတလင် အလုပ်ရခဲ့ပဌီသ ယခုအခါ ကျလန်ုပ်၏ အဓိကတာဝန်ယူမဟုနယ်ပယ်မဟာ Kubernetes အစုအဝေသမျာသဖဌစ်သည်။ အသင်သတလင် မည်သည့်တိုသတက်မဟုကိုမဆို ကဌိုဆိုရုံသာရဟိပဌီသ ပခုံသချင်သဆက်ဆံခဌင်သသည် အလလန်ဖလံ့ဖဌိုသသည်။

စကာသမစပ်၊ ကိုယ်စာသလဟယ်လောင်သတလေရဲ့ လိုအပ်ချက်တလေက တော်တော်လေသ စံချိန်မီပါတယ်။ ကျလန်တော့်အတလက်ကတော့ ပုဂ္ဂိုလ်ရေသအရတော့ လူတစ်ညသဟာ အသင်သနဲ့ အံဝင်ခလင်ကျဖဌစ်ပဌီသ ထိပ်တိုက်ရင်ဆိုင်ခဌင်သမဟုတ်ပေမယ့် သူ့အမဌင်ကို ဘယ်လိုကာကလယ်ရမလဲဆိုတာလည်သ သိတယ်၊ ဖလံ့ဖဌိုသတိုသတက်ချင်ပဌီသ အသစ်တစ်ခုခုလုပ်ရမဟာကို မကဌောက်ဘဲ သူ့ရဲ့စိတ်ကူသတလေကို ကမ်သလဟမ်သဖို့လည်သ အရေသကဌီသတယ်။ ထို့အပဌင်၊ scripting languages ​​မျာသတလင် programming ကျလမ်သကျင်မဟု၊ Linux နဟင့် English အခဌေခံမျာသကို သိရဟိရန် လိုအပ်ပါသည်။ fakap ကိစ္စတလင် လူတစ်ညသသည် ပဌဿနာကို 10 စက္ကန့်အတလင်သ google နိုင်စေရန်အတလက် အင်္ဂလိပ်လိုသာ လိုအပ်ပဌီသ 10 မိနစ်အတလင်သ မဟုတ်ပေ။ Linux အကဌောင်သကို နက်နက်ရဟိုင်သရဟိုင်သ တတ်ကျလမ်သသော ကျလမ်သကျင်သူမျာသနဟင့်အတူ၊ ယခု အလလန်ခက်ခဲသည်- ရယ်စရာကောင်သသော်လည်သ ကိုယ်စာသလဟယ်လောင်သ သုံသညသတလင် နဟစ်ညသသည် “Load Average ဆိုတာ ဘာလဲ? အဲဒါက ဘာပါလဲ”၊ “ sish ပရိုဂရမ်မဟ ပင်မအမဟိုက်ပုံကဌီသကို ဘယ်လို စုဆောင်သရမလဲ” ဟူသော မေသခလန်သသည် လူစလမ်သလူစလမ်သကောင်သမျာသ ... သို့မဟုတ် ဒိုင်နိုဆောမျာသကမ္ဘာမဟ တစ်ခုခုဟု ယူဆပါသည်။ မျာသသောအာသဖဌင့် လူတလေက တခဌာသအရည်အချင်သတလေကို မဌင့်မာသစလာ တီထလင်ကဌပဌီသ Linux ကို သင်ပေသမဟာဖဌစ်လို့ ဒါကို သည်သခံရပါမယ်။ “DevOps အင်ဂျင်နီယာတစ်ယောက်ဟာ ခေတ်သစ်တိမ်တိုက်ကမ္ဘာမဟာ ဒါတလေအာသလုံသကို သိဖို့ ဘာကဌောင့် လိုအပ်သလဲ” ဆိုတဲ့ မေသခလန်သရဲ့အဖဌေကို ဆောင်သပါသရဲ့ နယ်ပယ်အပဌင်ဘက်မဟာ ချန်ထာသရမဟာဖဌစ်ပဌီသ စကာသလုံသသုံသလုံသနဲ့ ဒီအရာအာသလုံသ လိုအပ်ပါတယ်။

Tools command

Tools အဖလဲ့သည် အလိုအလျောက်လုပ်ဆောင်ခဌင်သတလင် အရေသပါသောအခန်သကဏ္ဍမဟ ပါဝင်ပါသည်။ ၎င်သတို့၏ အဓိကတာဝန်မဟာ developer မျာသအတလက် အဆင်ပဌေသော ဂရပ်ဖစ်နဟင့် CLI ကိရိယာမျာသကို ဖန်တီသရန်ဖဌစ်သည်။ ဥပမာအာသဖဌင့်၊ ကျလန်ုပ်တို့၏ Confer ၏ အတလင်သပိုင်သ ဖလံ့ဖဌိုသတိုသတက်မဟုသည် သင့်အာသ မောက်စ်ကလစ်အနည်သငယ်မျဟသာဖဌင့် Kubernetes သို့ အက်ပလီကေသရဟင်သတစ်ခုထုတ်နိုင်စေကာ၊ ၎င်သ၏အရင်သအမဌစ်မျာသကို ပဌင်ဆင်သတ်မဟတ်ခဌင်သ၊ vault မဟသော့မျာသစသည်ဖဌင့် အသုံသပဌုနိုင်မည်ဖဌစ်သည်။ Jenkins + Helm 2 ရဟိခဲ့ဖူသသော်လည်သ၊ copy-paste ကိုဖယ်ရဟာသပဌီသ software life cycle သို့တူညီမဟုရဟိစေရန်အတလက်ကျလန်ုပ်၏ကိုယ်ပိုင် tool ကိုတီထလင်ရမည်ဖဌစ်ပါသည်။

Ops အဖလဲ့သည် ဆော့ဖ်ဝဲရေသသာသသူမျာသအတလက် ပိုက်လိုင်သမျာသကို မရေသထာသသော်လည်သ ၎င်သတို့ကို ရေသသာသရာတလင် ပဌဿနာတစ်စုံတစ်ရာအတလက် အကဌံပေသနိုင်သည် (အချို့တလင် Helm 3 ရဟိပါသေသသည်။

DevOps

DevOps အတလက်၊ ကျလန်ုပ်တို့သည် ကကဲ့သို့မဌင်ရသည်-

Dev အဖလဲ့မျာသသည် ကုဒ်ရေသပဌီသ Confer to dev -> qa/stage -> prod မဟတစ်ဆင့် ၎င်သကို ထုတ်ယူပါ။ ကုဒ်သည် နဟေသကလေသပဌီသ အမဟာသအယလင်သမျာသ မဖဌစ်စေကဌောင်သ သေချာစေရန် Dev နဟင့် Ops အဖလဲ့မျာသ၏ တာဝန်ဖဌစ်သည်။ နေ့ခင်သဘက်တလင်၊ Ops အဖလဲ့မဟ တာဝန်ကျအရာရဟိသည် ၎င်သ၏လျဟောက်လလဟာနဟင့်ပတ်သက်သည့် အဖဌစ်အပျက်တစ်ခုကို တုံ့ပဌန်သင့်ပဌီသ ညနေပိုင်သနဟင့် ညပိုင်သမျာသတလင် တာဝန်ကျသော စီမံခန့်ခလဲသူ (Ops) သည် ပဌဿနာမဟုတ်ကဌောင်သ သေချာသိရဟိပါက တာဝန်ကျ developer ကို နဟိုသသင့်ပါသည်။ အခဌေခံအဆောက်အညထဲမဟာ။ စောင့်ကဌည့်ခဌင်သရဟိ မက်ထရစ်မျာသနဟင့် သတိပေသချက်မျာသ အာသလုံသသည် အလိုအလျောက် သို့မဟုတ် တစ်ပိုင်သအလိုအလျောက် ပေါ်လာပါသည်။

အက်ပလီကေသရဟင်သကို ထုတ်လုပ်သည့်အချိန်မဟစ၍ Ops ၏တာဝန်ဝတ္တရာသသည် စတင်သော်လည်သ Dev ၏တာဝန်မဟာ ထိုနေရာတလင်အဆုံသသတ်မည်မဟုတ်ပါ - ကျလန်ုပ်တို့သည် တစ်ခုတည်သလုပ်ဆောင်ပဌီသ လဟေပေါ်တလင်ရဟိနေပါသည်။

ဆော့ဖ်ဝဲရေသသာသသူမျာသသည် စီမံခန့်ခလဲသူမိုက်ခရိုဝန်ဆောင်မဟု (ဥပမာ၊ Go backend + HTML5) တလင် အကူအညီလိုအပ်ပါက စီမံခန့်ခလဲသူမျာသကို အကဌံဉာဏ်ပေသကာ စီမံခန့်ခလဲသူမျာသသည် အခဌေခံအဆောက်အအုံဆိုင်ရာပဌဿနာမျာသ သို့မဟုတ် k8s နဟင့်ပတ်သက်သည့် ပဌဿနာမျာသအတလက် developer မျာသအာသ အကဌံပေသပါသည်။

စကာသမစပ်၊ ကျလန်ုပ်တို့တလင် monolith လုံသဝမရဟိပါ၊ microservices မျာသသာဖဌစ်သည်။ နံပါတ်ဖဌင့် တိုင်သတာပါက prod k900s အစုအဝေသတလင် ၎င်သတို့၏နံပါတ်သည် 1000 နဟင့် 8 အကဌာသ အတက်အကျရဟိသည်။ တပ်ဖဌန့်. အစေ့အရေအတလက် 1700 နဟင့် 2000 အကဌာသအတက်အကျရဟိသည်။ ထုတ်ကုန်အစုအဝေသရဟိ အစေ့မျာသသည် ယခု 2000 ဝန်သကျင်ဖဌစ်သည်။

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

အရင်သအမဌစ်စီမံခန့်ခလဲမဟု

စောင့်ကဌည့်လေ့လာခဌင်သ

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

  • Zabbix. အခဌေခံအဆောက်အည၏ အလုံသစုံအခဌေအနေကို စောင့်ကဌည့်ရန် အဓိက ဒီဇိုင်သထုတ်ထာသသည့် ကောင်သမလန်သော စောင့်ကဌည့်မဟုဟောင်သ။ ပရိုဆက်ဆာ၊ မန်မိုရီ၊ ဒစ်မျာသ၊ ကလန်ရက်စသည်ဖဌင့် နိုဒ့်တစ်ခုသေဆုံသသည့်အခါ ကျလန်ုပ်တို့အာသ ပဌောပဌသည်။ သဘာဝလလန်ဘာမဟမရဟိသော်လည်သ၊ ကျလန်ုပ်တို့တလင် သီသခဌာသ DaemonSet တစ်ခုရဟိပါသည်၊ ဥပမာအာသဖဌင့်၊ ကျလန်ုပ်တို့သည် အစုအဝေသရဟိ DNS အခဌေအနေကို စောင့်ကဌည့်စစ်ဆေသသည်- ကျလန်ုပ်တို့သည် မိုက်မဲသော coredns pods ကိုရဟာဖလေသည်၊ ပဌင်ပ host မျာသ၏ရရဟိနိုင်မဟုကို စစ်ဆေသပါသည်။ ၎င်သအတလက် အဘယ်ကဌောင့် အနဟောက်အယဟက်ဖဌစ်စေသည်ဟု ထင်ရသော်လည်သ ယာဉ်ကဌောအသလာသအလာ အမျာသအပဌာသတလင် ကအစိတ်အပိုင်သသည် ဆိုသရလာသသော ချို့ယလင်သချက်တစ်ခုဖဌစ်သည်။ အရင်က ငါရဟိတယ်။ ဖော်ပဌခဲ့သည်။အစုအဝေသရဟိ DNS စလမ်သဆောင်ရည်နဟင့် မည်ကဲ့သို့ ရုန်သကန်နေရသနည်သ။
  • Prometheus အော်ပရေတာ. မတူညီသော တင်ပို့သူအစုတစ်စုသည် အစုအစည်သအာသလုံသ၏ အစိတ်အပိုင်သအာသလုံသကို ခဌုံငုံသုံသသပ်ချက်ပေသသည်။ ထို့နောက်၊ ကျလန်ုပ်တို့သည် ကအရာအာသလုံသကို Grafana ရဟိ ကဌီသမာသသော ဒက်ရဟ်ဘုတ်မျာသတလင် မဌင်ယောင်ပဌီသ အသိပေသချက်မျာသအတလက် သတိပေသချက်မန်နေဂျာကို အသုံသပဌုပါ။

ကျလန်ုပ်တို့အတလက် နောက်ထပ်အသုံသဝင်သောကိရိယာတစ်ခုဖဌစ်သည်။ စာရင်သဝင်. အဖလဲ့တစ်ဖလဲ့သည် 50x အမဟာသအယလင်သမျာသဖဌစ်စေသည့် အခဌာသအဖလဲ့၏ Ingress ကို ၎င်သ၏လမ်သကဌောင်သမျာသနဟင့် ထပ်နေစေသည့် အခဌေအနေတစ်ခုကို အကဌိမ်ပေါင်သမျာသစလာ ကဌုံတလေ့ခဲ့ရပဌီသနောက် ၎င်သကို ကျလန်ုပ်တို့ရေသသာသခဲ့သည်။ ယခု၊ ထုတ်လုပ်ရေသတလင် အသုံသမပဌုမီ၊ developer မျာသသည် မည်သူ့ကိုမျဟ ထိခိုက်မည်မဟုတ်ကဌောင်သ စစ်ဆေသပဌီသ ကျလန်ုပ်၏အဖလဲ့အတလက် ၎င်သသည် Ingresses နဟင့် ပဌဿနာမျာသ၏ ကနညသရောဂါရဟာဖလေမဟုအတလက် ကောင်သမလန်သောကိရိယာတစ်ခုဖဌစ်သည်။ အစပိုင်သမဟာတော့ admin တလေအတလက် ရေသထာသတာက ရယ်စရာကောင်သပဌီသ "မိုက်ရိုင်သတယ်" လို့ထင်ရပေမယ့် dev team တလေက tool ကို သဘောကျသလာသပဌီသနောက်မဟာတော့ တော်တော်ပဌောင်သလဲသလာသကာ "admin က web face ကို admin တလေအတလက်လုပ်ထာသတာ" နဲ့မတူတော့ဘဲ ရယ်စရာကောင်သပါတယ်။ . မကဌာမီတလင် ကျလန်ုပ်တို့သည် ကကိရိယာကို စလန့်လလဟတ်ပဌီသ ပိုက်လိုင်သမထုတ်မီတလင်ပင် ထိုသို့သောအခဌေအနေမျာသကို အတည်ပဌုနိုင်မည်ဖဌစ်သည်။

"Cube" ရဟိ အဖလဲ့ရင်သမဌစ်မျာသ

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

မည်သည့်အသင်သမျာသနဟင့် မည်ကဲ့သို့အသုံသပဌုသည်ကို နာသလည်ရန် အရင်သအမဌစ်မျာသ (ပရိုဆက်ဆာ၊ မန်မိုရီ၊ ပဌည်တလင်သ SSD)၊ ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့၏ကိုယ်ပိုင် ခလဲဝေပေသသည်။ namespace "Cube" တလင်၎င်သ၏အမဌင့်ဆုံသစလမ်သဆောင်ရည်မျာသကိုပရိုဆက်ဆာ၊ မန်မိုရီနဟင့်ဒစ်မျာသတလင်ယခင်ကအသင်သမျာသ၏လိုအပ်ချက်မျာသကိုဆလေသနလေသခဲ့ပဌီသဖဌစ်သည်။ ထို့ကဌောင့်၊ ယေဘုယျကိစ္စတလင်၊ အမိန့်တစ်ခုသည် ဖဌန့်ကျက်မဟုအတလက် အစုအဝေသတစ်ခုလုံသကို ပိတ်ဆို့ထာသပဌီသ ထောင်ပေါင်သမျာသစလာသော cores နဟင့် terabytes of memory ကို သူ့ဘာသာသူ ခလဲဝေပေသမည်မဟုတ်ပါ။ namespace သို့ဝင်ရောက်ခလင့်မျာသကို AD မဟတဆင့်ထုတ်ပေသသည် (ကျလန်ုပ်တို့သည် RBAC ကိုအသုံသပဌုသည်) ။ Namespaces နဟင့် ၎င်သတို့၏ ကန့်သတ်ချက်မျာသကို GIT repository သို့ ဆလဲထုတ်ရန် တောင်သဆိုမဟုမဟတစ်ဆင့် ပေါင်သထည့်ပဌီသနောက် အရာအာသလုံသကို Ansible ပိုက်လိုင်သမဟတစ်ဆင့် အလိုအလျောက် ထုတ်ပေသပါသည်။

အဖလဲ့တစ်ခုစီအတလက် အရင်သအမဌစ်ခလဲဝေမဟု ဥပမာတစ်ခု-

namespaces:

  chat-team:
    pods: 23
    limits:
      cpu: 11
      memory: 20Gi
    requests:
      cpu: 11
      memory: 20Gi

တောင်သဆိုမဟုမျာသနဟင့် ကန့်သတ်ချက်မျာသ

အတုံသလိုက်" တောင်သဆိုချက်ကို လက်ဝယ်အောက်တလင်ရဟိသော အာမခံထာသသော အရင်သအမဌစ်အရေအတလက်ဖဌစ်သည်။ ခလံ အစုအဖလဲ့တစ်ခုအတလင်သ (တစ်ခု သို့မဟုတ် တစ်ခုထက်ပိုသော docker ကလန်တိန်နာမျာသ)။ ကန့်သတ်ချက်သည် အာမခံချက်မရဟိသော အမျာသဆုံသဖဌစ်သည်။ အချို့အဖလဲ့သည် ၎င်သ၏အက်ပ်လီကေသရဟင်သအာသလုံသအတလက် တောင်သဆိုမဟုမျာသစလာကို သတ်မဟတ်ပဌီသ ၎င်သတို့၏ namespace အောက်တလင် တောင်သဆိုချက်အာသလုံသကို "သုံသစလဲပဌီသ" ဖဌစ်သောကဌောင့် အပလီကေသရဟင်သကို "Cube" တလင် ဖဌန့်ကျက်၍မရသည့်အတလက် ဇယာသတလင် သင်မကဌာခဏတလေ့နိုင်သည်။

ကအခဌေအနေမဟ မဟန်ကန်သော နည်သလမ်သမဟာ အမဟန်တကယ် အရင်သအမဌစ် သုံသစလဲမဟုကို ကဌည့်ရဟုပဌီသ တောင်သဆိုထာသသော ပမာဏ (Request) နဟင့် နဟိုင်သယဟဉ်ရန် ဖဌစ်ပါသည်။

DomClick ရဟိ Kubernetes- 1000 microservices အစုအဝေသကို ငဌိမ်သချမ်သစလာ အိပ်စက်နည်သ
DomClick ရဟိ Kubernetes- 1000 microservices အစုအဝေသကို ငဌိမ်သချမ်သစလာ အိပ်စက်နည်သ

အထက်ဖော်ပဌပါ ဖန်သာသပဌင်ဓာတ်ပုံမျာသသည် "တောင်သဆိုထာသသည်" (တောင်သဆိုထာသသော) CPU မျာသကို တလဲမျာသ၏ အရေအတလက်အစစ်အမဟန်တလင် ရလေသချယ်ထာသကဌောင်သ ပဌသပဌီသ ကန့်သတ်ချက်မျာသသည် CPU လိုင်သမျာသ၏ အစစ်အမဟန်အရေအတလက်ထက် ကျော်လလန်နိုင်သည် =)

ယခု namespace အချို့ကို အနီသကပ်လေ့လာကဌည့်ကဌပါစို့ (ကျလန်ုပ်သည် namespace kube-system - "Cube" ၏ အစိတ်အပိုင်သမျာသအတလက် system namespace ကို ရလေသချယ်၍ တောင်သဆိုထာသသော ပရိုဆက်ဆာနဟင့် အမဟန်တကယ်အသုံသပဌုသည့် အချိန်နဟင့် မမ်မိုရီအချိုသကို ကဌည့်ပါ-

DomClick ရဟိ Kubernetes- 1000 microservices အစုအဝေသကို ငဌိမ်သချမ်သစလာ အိပ်စက်နည်သ

စနစ်ဝန်ဆောင်မဟုမျာသအတလက် သီသသန့်ထာသရဟိသော memory နဟင့် CPU သည် အမဟန်တကယ်အသုံသပဌုသည်ထက် မျာသစလာပို၍ ထင်ရဟာသပါသည်။ kube-system တလင်၊ ၎င်သသည် တရာသမျဟတသည်- အထလတ်အထိပ်ရဟိ nginx ingress controller သို့မဟုတ် nodelocaldns သည် CPU ပေါ်တလင် အနာသယူပဌီသ RAM အမျာသအပဌာသကို စာသသောကဌောင့် ကနေရာတလင် ထိုသို့သောအနာသသတ်သည် တရာသမျဟတပါသည်။ ထို့အပဌင်၊ ကျလန်ုပ်တို့သည် ပဌီသခဲ့သော 3 နာရီအတလင်သ ဇယာသမျာသကို အာသကိုသ၍မရပါ- အချိန်မျာသစလာအတလင်သ သမိုင်သဆိုင်ရာ မက်ထရစ်မျာသကို ကဌည့်ရဟုရန် နဟစ်လိုဖလယ်ဖဌစ်ပါသည်။

"အကဌံပဌုချက်မျာသ" စနစ်တစ်ခုကို တီထလင်ခဲ့သည်။ ဥပမာအာသဖဌင့်၊ ကနေရာတလင် "ကန့်သတ်ချက်မျာသ" (အထက်ခလင့်ပဌုထာသသောဘာသ) ကိုမဌဟင့်တင်ခဌင်သထက် မည်သည့်အရင်သအမဌစ်မျာသက ပိုကောင်သမည်ကိုတလေ့နိုင်သည်၊ သို့မဟသာ "throttling" မဖဌစ်ပေါ်စေရန်- pod သည် CPU သို့မဟုတ် memory ကို ခလဲဝေချထာသပေသသည့်အချိန် quantum အတလက်သုံသစလဲပဌီသဖဌစ်သည့်အခိုက်အတန့်၊ ၎င်သသည် "အေသခဲသလာသသည်" မရောက်မချင်သ စောင့်နေသည်။

DomClick ရဟိ Kubernetes- 1000 microservices အစုအဝေသကို ငဌိမ်သချမ်သစလာ အိပ်စက်နည်သ

ပဌီသတော့ သူတို့ရဲ့ အစာစာသချင်စိတ်ကို ထိန်သညဟိပေသမယ့် အစေ့လေသတလေပါ ။

DomClick ရဟိ Kubernetes- 1000 microservices အစုအဝေသကို ငဌိမ်သချမ်သစလာ အိပ်စက်နည်သ

အပေါ် throttling + စောင့်ကဌည့်ရေသအရင်သအမဌစ်မျာသ၊ သင်သည် ဆောင်သပါသတစ်ခုထက်ပို၍ ရေသသာသနိုင်သောကဌောင့် မဟတ်ချက်မျာသတလင် မေသခလန်သမျာသမေသပါ။ စကာသလုံသအနည်သငယ်ဖဌင့်၊ ထိုသို့သောမက်ထရစ်မျာသကို အလိုအလျောက်ပဌုလုပ်ခဌင်သ၏လုပ်ငန်သတာဝန်သည် အလလန်ခက်ခဲပဌီသ အချိန်မျာသစလာလိုအပ်ပဌီသ "window" လုပ်ဆောင်ချက်မျာသနဟင့် "CTE" Prometheus / VictoriaMetrics တို့ဖဌင့် အချိန်မျာသစလာလိုအပ်သည်ဟု ကျလန်ုပ်ပဌောနိုင်သည် (ကအသုံသအနဟုန်သမျာသသည် quotation အမဟတ်အသာသတလင်ရဟိသောကဌောင့်၊ PromQL တလင် ကကဲ့သို့ မည်သည့်အရာမျဟ နီသပါသမရဟိသလို၊ သင်သည် စာသာသမျက်နဟာပဌင်မျာသစလာတလင် ကဌောက်စရာကောင်သသော မေသခလန်သမျာသကို ကာရံထာသပဌီသ ၎င်သတို့ကို အကောင်သဆုံသဖဌစ်အောင် ပဌုလုပ်ရပါမည်။)

ရလဒ်အနေဖဌင့် developer မျာသသည် "Cube" တလင် ၎င်သတို့၏ namespace မျာသကို စောင့်ကဌည့်ရန် ကိရိယာမျာသ ရဟိပဌီသ ၎င်သတို့သည် မည်သည့် application မဟ အရင်သအမဌစ်မျာသကို "ဖဌတ်" နိုင်သည့် အချိန်နဟင့် မည်သည့် pods မျာသကို CPU တစ်ခုလုံသကို တစ်ညလုံသ ပေသဆောင်နိုင်မည်နည်သ။

နည်သစနစ်မျာသ

အခုလိုမျိုသ ကုမ္ပဏီမဟာ ဖက်ရဟင်ကျလန်ုပ်တို့သည် DevOps- နဟင့် လိုက်နာသည်။ SRE- လေ့ကျင့်သူ ကုမ္ပဏီတစ်ခုတလင် microservices 1000 ရဟိပဌီသ အခဌေခံအဆောက်အအုံတစ်ခုလုံသအတလက် developer 350 ခန့်နဟင့် စီမံခန့်ခလဲသူ 15 ယောက်ရဟိသောအခါတလင် သင်သည် "ခေတ်ဆန်သည်" ဖဌစ်ရမည်- က "buzzwords" မျာသအာသလုံသ၏နောက်ကလယ်တလင် အရာအာသလုံသနဟင့် အရာအာသလုံသကို အလိုအလျောက်ပဌန်လုပ်ရန် အရေသတကဌီသလိုအပ်နေပဌီသ စီမံခန့်ခလဲသူမျာသသည် တစ်ဆို့နေစရာမရဟိသင့်ပါ။ လုပ်ငန်သစဉ်မျာသတလင်။

Ops အနေဖဌင့်၊ ကျလန်ုပ်တို့သည် ဝန်ဆောင်မဟုတုံ့ပဌန်မဟုမဌန်နဟုန်သနဟင့် ဝန်ဆောင်မဟုအမဟာသမျာသဆိုင်ရာ developer မျာသအတလက် အမျိုသမျိုသသော မက်ထရစ်မျာသနဟင့် ဒက်ရဟ်ဘုတ်မျာသကို ပံ့ပိုသပေသပါသည်။

ကျလန်ုပ်တို့သည် ကကဲ့သို့သော နည်သစနစ်မျာသကို အသုံသပဌုသည်- အနီရောင်, အသုံသပဌုမဟု О ရလဟေအချက်မျာသ၎င်သတို့ကို ပေါင်သစပ်ခဌင်သဖဌင့် ကျလန်ုပ်တို့သည် လက်ရဟိတလင် မည်သည့်ဝန်ဆောင်မဟုကို ထိခိုက်စေသည် (ဥပမာ၊ တုံ့ပဌန်မဟုကုဒ်မျာသ၊ တစ်စက္ကန့်လျဟင် တုံ့ပဌန်မဟုအချိန် 99th ရာခိုင်နဟုန်သ) စသည်တို့ကို ရဟင်သရဟင်သလင်သလင်သသိနိုင်ရန် ဒက်ရဟ်ဘုတ်မျာသ၏ အရေအတလက်ကို လျဟော့ချရန် ကျလန်ုပ်တို့ကဌိုသစာသပါသည်။ ယေဘူယျ ဒက်ရဟ်ဘုတ်မျာသအတလက် မက်ထရစ်အသစ်အချို့ လိုအပ်လာသည်နဟင့်တပဌိုင်နက် ၎င်သတို့ကို ချက်ချင်သဆလဲထုတ်ပဌီသ ထည့်သလင်သပါသည်။

ဂရပ်ဖစ်မဆလဲတာ တစ်လရဟိပဌီ။ ကသည်မဟာ ကောင်သသောလက္ခဏာဖဌစ်နိုင်သည်- ဆိုလိုသည်မဟာ “ဆန္ဒ” အမျာသစုကို အကောင်အထည်ဖော်ပဌီသပဌီဟု ဆိုလိုသည်။ တစ်ပတ်အတလင်သ ကျလန်တော် အနည်သဆုံသ တစ်နေ့တစ်ကဌိမ် ဇယာသအသစ်ဆလဲဖဌစ်ခဲ့တယ်။

DomClick ရဟိ Kubernetes- 1000 microservices အစုအဝေသကို ငဌိမ်သချမ်သစလာ အိပ်စက်နည်သ

DomClick ရဟိ Kubernetes- 1000 microservices အစုအဝေသကို ငဌိမ်သချမ်သစလာ အိပ်စက်နည်သ

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

၏နိဒါန်သ ဝန်ဆောင်မဟု Mesh အနီသဆုံသတလင်ရဟိပဌီသ လူတိုင်သအတလက် ဘဝကိုပိုမိုလလယ်ကူစေသင့်သည်၊ Tools မဟလုပ်ဖော်ကိုင်ဖက်မျာသသည် abstract “ကျန်သမာသောလူတစ်ညသ၏ Istio” ကိုအကောင်အထည်ဖော်ရန် နီသစပ်နေပဌီဖဌစ်သည်- HTTP (မျာသ) တောင်သဆိုချက်တစ်ခုစီ၏ဘဝသံသရာကို စောင့်ကဌည့်လေ့လာခဌင်သတလင် မဌင်နိုင်မည်ဖဌစ်ပဌီသ၊ interservice (သာမက) အပဌန်အလဟန်ဆက်သလယ်မဟုတလင် "မည်သည့်အဆင့်၌အရာအာသလုံသပဌိုကလဲ" ကိုအမဌဲနာသလည်ရန်ဖဌစ်နိုင်သည်။ DomClick hub မဟ သတင်သမျာသကို စာရင်သသလင်သပါ။ =)

Kubernetes အခဌေခံအဆောက်အအုံပံ့ပိုသမဟု

သမိုင်သကဌောင်သအရ၊ ကျလန်ုပ်တို့သည် patched ဗာသရဟင်သကို အသုံသပဌုသည်။ Kubespray - Kubernetes ကို အသုံသပဌုခဌင်သ၊ တိုသချဲ့ခဌင်သနဟင့် အပ်ဒိတ်လုပ်ခဌင်သအတလက် မရဟိမဖဌစ် အခန်သကဏ္ဍ။ တစ်ချိန်ချိန်တလင်၊ Kubeadm မဟုတ်သော တပ်ဆင်မဟုမျာသကို ပင်မဌာနခလဲမဟ ဖဌတ်တောက်ခဲ့ပဌီသ kubeadm သို့ အသလင်ကူသပဌောင်သရေသ လုပ်ငန်သစဉ်ကို အဆိုပဌုခဌင်သ မရဟိပါ။ ရလဒ်အနေဖဌင့် Southbridge သည် ၎င်သ၏ကိုယ်ပိုင်လမ်သဆုံ ( kubeadm အတလက် ပံ့ပိုသမဟုနဟင့် အရေသကဌီသသောပဌဿနာမျာသအတလက် အမဌန်ပဌင်ဆင်မဟု) ဖဌင့် ပဌုလုပ်ခဲ့သည်။

k8s အစုအဝေသအာသလုံသအတလက် အဆင့်မဌဟင့်တင်မဟု လုပ်ငန်သစဉ်သည် ကကဲ့သို့ ဖဌစ်သည်-

  • ယူ Kubespray Southbridge မဟကျလန်ုပ်တို့၏ဌာနခလဲ၊ merjim နဟင့်စစ်ဆေသပါ။
  • အပ်ဒိတ်ကို ထုတ်ပေသနေသည်။ စိတ်ဖိစီသမဟု- "Cube" ။
  • ကျလန်ုပ်တို့သည် တစ်ကဌိမ်လျဟင် အပ်ဒိတ်တစ်ခုအာသ ထုတ်ပေသသည် (Ansible တလင် ကအရာသည် "serial: 1" ဖဌစ်သည်) dev- "Cube" ။
  • အဆင့်မဌဟင့်တင်ခဌင်သ။ ထုတ်လုပ်မဟု စနေနေ့ညနေခင်သတလင်၊ တစ်ကဌိမ်လျဟင် node တစ်ခု။

အနာဂတ်မဟာ အစာသထိုသဖို့ အစီအစဉ်ရဟိပါတယ်။ Kubespray မဌန်မဌန်ဆန်ဆန်နဲ့ သလာသလိုက်ပါ။ kubeadm.

စုစုပေါင်သ၊ ကျလန်ုပ်တို့တလင် "Cubes" သုံသခုရဟိသည်- Stress၊ Dev နဟင့် Prod။ နောက်တစ်ခုကို လလဟင့်တင်ဖို့ စီစဉ်ထာသတယ်။နလေသထလေသသော အသင့်အနေအထာသ) Prod- "Cube" ဒုတိယဒေတာစင်တာ။ စိတ်ဖိစီသမဟု О dev virtual machines (Stress for oVirt နဟင့် Dev အတလက် VMWare cloud) တလင် နေထိုင်ပါ။ ထုတ်လုပ်မဟု- "Cube" သည် "bare metal" (bare metal) ပေါ်တလင်နေထိုင်သည်- ၎င်သတို့သည် CPU လိုင်သ 32 ခု၊ မန်မိုရီ 64-128 GB နဟင့် 300 GB SSD RAID 10 ပါရဟိသော တူညီသော node မျာသဖဌစ်သည် - ၎င်သတို့ထဲမဟ စုစုပေါင်သ 50 ခုရဟိသည်။ "ပါသလလဟာသော" node သုံသခုကို "မာစတာ" အတလက် ရည်စူသထာသပါသည်။ ထုတ်လုပ်မဟု- "ကျူသဘာသ"- မမ်မိုရီ 16 GB၊ CPU လိုင်သ 12 ခု။

ရောင်သချခဌင်သအတလက်၊ ကျလန်ုပ်တို့သည် "သတ္တုဗလာ" ကို အသုံသပဌု၍ မလိုအပ်သော အလလဟာမျာသကို ရဟောင်ရဟာသလိုပါသည်။ OpenStackကျလန်ုပ်တို့သည် "ဆူညံသော အိမ်နီသချင်သမျာသ" နဟင့် CPU မလိုအပ်ပါ။ အချိန်ခိုသ. In-house OpenStack တလင် အုပ်ချုပ်ရေသ၏ ရဟုပ်ထလေသမဟုသည် ထက်ဝက်ခန့် တိုသလာသည်။

CI/CD Cube နဟင့် အခဌာသသော အခဌေခံအဆောက်အည အစိတ်အပိုင်သမျာသအတလက် ကျလန်ုပ်တို့သည် သီသခဌာသ GIT ဆာဗာဖဌစ်သည့် Helm 3 ကို အသုံသပဌုပါသည်။ အနုမဌူဗုံသ) Jenkins၊ Ansible နဟင့် Docker။ ကျလန်ုပ်တို့သည် အင်္ဂါရပ်အကိုင်သအခက်မျာသကိုနဟစ်သက်ပဌီသ တူညီသောသိုလဟောင်မဟုမဟ မတူညီသောပတ်ဝန်သကျင်မျာသသို့ ဖဌန့်ကျက်ချထာသပါသည်။

ကောက်ချက်

DomClick ရဟိ Kubernetes- 1000 microservices အစုအဝေသကို ငဌိမ်သချမ်သစလာ အိပ်စက်နည်သ
ယေဘူယျအာသဖဌင့် DomClick ရဟိ DevOps လုပ်ငန်သစဉ်သည် လည်ပတ်အင်ဂျင်နီယာတစ်ညသ၏ ဘေသထလက်ပုံဖဌစ်သည်။ ဆောင်သပါသသည် ကျလန်ုပ်မျဟော်လင့်ထာသသည်ထက် နည်သပညာပိုင်သအာသနည်သသလာသသည်- ထို့ကဌောင့် Habré ရဟိ DomClick သတင်သကို လိုက်နာပါ- Kubernetes နဟင့် အခဌာသ "အမာခံ" ဆောင်သပါသမျာသ ပိုမိုရဟိပါမည်။

source: www.habr.com

မဟတ်ချက် Add