ထိပ်တန်သ Kubernetes လဟည့်ကလက်မျာသနဟင့် အကဌံဉာဏ် ၁၀ ခု

ထိပ်တန်သ Kubernetes လဟည့်ကလက်မျာသနဟင့် အကဌံဉာဏ် ၁၀ ခု

အင်တာနက်မဟာ အကိုသအကာသစာပေတလေ အမျာသကဌီသရဟိပေမယ့် တစ်ခါတစ်ရံမဟာ အရိုသရဟင်သဆုံသအကဌံဉာဏ်က တန်ဖိုသအရဟိဆုံသပါပဲ။ အသင်သအဖလဲ့ Mail.ru မဟ Kubernetes aaS ဘာသာပဌန် လဟည့်ကလက်ဆယ်ခုနဟင့် အကဌံဥာဏ်မျာသ ရလေသချယ်ခဌင်သ။Kubernetes နဟင့် တစ်နဟစ်အလုပ်လုပ်ပဌီသနောက် ဆောင်သပါသကို ရေသသာသသူမဟ စုဆောင်သရယူခဲ့သည်။ အကဌံပဌုချက်မျာသကို အရေသပါမဟုအလိုက် စီထာသခဌင်သမဟုတ်သော်လည်သ လူတိုင်သသည် ၎င်သတို့အတလက် အသုံသဝင်သော အရာတစ်ခုကို တလေ့ရဟိလိမ့်မည်ဟု ကျလန်ုပ်တို့ထင်မဌင်ပါသည်။

Kubernetes နဟင့် လုပ်ဆောင်ရန် အရိုသရဟင်သဆုံသ ညလဟန်ကဌာသချက်

စတင်ရန်၊ Kubernetes နဟင့် လုပ်ဆောင်ရာတလင် အရိုသရဟင်သဆုံသနဟင့် အအသုံသဝင်ဆုံသလုပ်ဆောင်ချက်ဖဌစ်နိုင်သည်။ အောက်ပါ command သည် command completion ကို ဖလင့်ပေသသည်။ kubectl bash shell တလင်-

echo "source <(kubectl completion bash)" >> ~/.bashrc

Autofill kubectl .bashrc ဖိုင်တလင် စာရေသမည်ဖဌစ်ပဌီသ shell ကို စတင်ချိန်တိုင်သ အလိုအလျောက် activated ပေသမည်ဖဌစ်သည်။ ၎င်သသည် ရဟည်လျာသသော command မျာသနဟင့် parameters မျာသကဲ့သို့သော စာရိုက်ခဌင်သကို မဌန်ဆန်စေသည်။ all-namespaces. နောက်ထပ်အသေသစိတ်အချက်မျာသထဲတလင် Kubernetes bash အကူအညီ.

မူရင်သမဟတ်ဉာဏ်နဟင့် CPU သည် namespace တလင် ကန့်သတ်ချက်မျာသရဟိသည်။

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

၎င်သကိုကာကလယ်ရန်၊ Kubernetes သည် သင့်အာသ namespace အလိုက် ပုံသေကန့်သတ်ချက်မျာသကို သတ်မဟတ်ခလင့်ပဌုသည်။ ၎င်သတို့ကို တိကျသော namespace အတလက် yaml ဖိုင်တလင် ရေသထာသသည်။ ကသည်မဟာ ကကဲ့သို့သောဖိုင်၏ ဥပမာတစ်ခုဖဌစ်သည်။

apiVersion: v1
kind: LimitRange
metadata:
  name: mem-limit-range
spec:
  limits:
  - default:
      memory: 512Mi
    defaultRequest:
      memory: 256Mi
    type: Container

ထိုကဲ့သို့သော yaml ကိုဖန်တီသပဌီသမည်သည့် namespace ကိုမဆိုအသုံသပဌုပါ။ ဥပမာအာသဖဌင့်၊ namespace ကို limit-example. ယခု ကကလန်တိန်နာအတလက် အခဌာသကန့်သတ်ချက်တစ်ခုကို ထပ်လောင်သမသတ်မဟတ်ပါက ယခု က namespace တလင် အသုံသပဌုထာသသော မည်သည့်ကလန်တိန်နာမဆို 512Mi ကန့်သတ်ချက်ရဟိပါမည်။

Kubernetes ဗာသရဟင်သအဟောင်သမျာသတလင် အမဟိုက်စုဆောင်သခဌင်သ။

ပုံသေအာသဖဌင့် Kubelet သည် မည်သည့်အချိန်တလင် အမဟိုက်စုဆောင်သခဌင်သကို စတင်သည်။ var/lib/docker ရနိုင်သော disk space ၏ 90% ကို ယူထာသသည်။ သို့သော် Kubernetes 1.7 မတိုင်မီအထိ ၎င်သသည် ဖိုင်စနစ်ရဟိ ဖိုင်အရေအတလက်နဟင့် ကိုက်ညီသော အသုံသပဌုသည့် inode အရေအတလက်အပေါ် ပုံသေကန့်သတ်ချက်မရဟိပေ။

ဖဌစ်နိုင်ချေရဟိသော သင်၏ကလန်တိန်နာ var/lib/docker disk space ၏ 50% ကိုသာ အသုံသပဌုနိုင်ပဌီသ အလုပ်သမာသမျာသအတလက် ပဌဿနာဖဌစ်စေမည့် inode မျာသ ကုန်ဆုံသသလာသနိုင်သည်။

kubelet ဗာသရဟင်သအဟောင်သ 1.4 မဟ 1.6 တလင် ကအလံကို ထည့်ရပါမည်-

--eviction-hard
=memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%

1.7 နဟင့် နောက်ပိုင်သဗာသရဟင်သမျာသတလင် ကအလံကို ပုံသေသတ်မဟတ်ထာသသည်။ သို့သော်လည်သ ယခင်ဗာသရဟင်သမျာသသည် inode ကန့်သတ်ချက်ကို စောင့်ကဌည့်မနေပါ။

Minikube... သေသငယ်သော်လည်သ အာသကောင်သသည့် ဒေသတလင်သ Kubernetes

Minikube သည် ဒေသတလင်သ Kubernetes အစုအဝေသကို လုပ်ဆောင်ရန် အလလယ်ကူဆုံသနည်သလမ်သဖဌစ်သည်။ ၎င်သကို ရိုသရဟင်သသော အမိန့်ဖဌင့် စတင်သည်-

minikube start

ကအမိန့်ကို လုပ်ဆောင်ခဌင်သဖဌင့် သင့်ကလန်ပျူတာပေါ်တလင် အမဟန်တကယ်လည်ပတ်နေသည့် Kubernetes အစုအဝေသကို ဖဌစ်ပေါ်စေသည်။

ထိပ်တန်သ Kubernetes လဟည့်ကလက်မျာသနဟင့် အကဌံဉာဏ် ၁၀ ခု
သရုပ်ဖော်ပုံ အရင်သအမဌစ်

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

Docker သည် ပုံအာသ ဒေသတလင်သ Kubernetes အစုအဝေသသို့ တလန်သအာသပေသရန်၊ docker စက်အာသ အောက်ပါ command ကို ပေသသည်-

eval $(minikube docker-env)

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

လူတိုင်သကို kubectl ဝင်ခလင့်မပေသပါနဲ့။

၎င်သသည် ထင်ရဟာသပုံရသည်၊ သို့သော် အသင်သမျာသစလာသည် ၎င်သတို့၏ အက်ပ်လီကေသရဟင်သအတလက် တူညီသောအစုအဝေသကို အသုံသပဌုနေပါက (ထိုအရာသည် Kubernetes အတလက် ဖန်တီသထာသသည့်အရာဖဌစ်သည်)၊ သင်သည် လူတိုင်သကို ပေသရုံမျဟမက၊ kubectl. ညလဟန်ကဌာသချက်မျာသကို ခလဲထုတ်ခဌင်သ၊ ၎င်သတို့တစ်ခုစီကို ၎င်သ၏ကိုယ်ပိုင် namespace သတ်မဟတ်ခဌင်သနဟင့် RBAC မူဝါဒမျာသကို အသုံသပဌု၍ ဝင်ရောက်ခလင့်ကို ကန့်သတ်ခဌင်သသည် ပိုကောင်သသည်။

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

Pod Budgets ကို စီမံပါ။

Kubernetes အစုအဝေသရဟိ အက်ပလီကေသရဟင်သအတလက် စက်ရပ်ချိန်မရဟိစေရန် မည်သို့ပဌုလုပ်ရမည်နည်သ။ PodDisruptionBudget နဟင့် နောက်တစ်ကဌိမ် PodDisruptionBudget။

အစုအဝေသမျာသကို အခါအာသလျော်စလာ အပ်ဒိတ်လုပ်ထာသပဌီသ node မျာသကို ရဟင်သထာသသည်။ ဘယ်အရာမဟ မတည်မဌဲဘူသ၊ ဒါအမဟန်တရာသပဲ။ သာဓကတစ်ခုထက်ပိုသော အသုံသချမဟုတိုင်သတလင် PDB (PodDisruptionBudget) ပါဝင်သင့်သည်။ ၎င်သကို အစုအဝေသသို့ အသုံသချသည့် ရိုသရဟင်သသော yaml ဖိုင်ဖဌင့် ဖန်တီသထာသသည်။ PDB တစ်ခုခု၏ လလဟမ်သခဌုံဧရိယာကို တံဆိပ်ရလေသချယ်သူမျာသမဟ ဆုံသဖဌတ်သည်။

မဟတ်ချက်: ဘတ်ဂျက်ချိုသဖောက်မဟုကို နောက်ပဌန်လဟည့်နိုင်မဟသာ PDB ဘတ်ဂျက်ကို ထည့်သလင်သစဉ်သစာသသည် (ဆန္ဒအလျောက် အနဟောင့်အယဟက်ပေသခဌင်သ) ဟာ့ဒ်ဝဲ ချို့ယလင်သမဟုမျာသကဲ့သို့ အခဌေအနေမျိုသတလင် PDB အလုပ်မလုပ်ပါ။

ဥပမာ PDB-

apiVersion: policy/v1beta1
kind: PodDisruptionBudget
metadata:
  name: app-a-pdb
spec:
  minAvailable: 2
  selector:
      matchLabels:
        app: app-a

အဓိက parameter နဟစ်ခုရဟိသည်။ matchLabels О minAvailable. ပထမ ကန့်သတ်ချက်သည် မည်သည့် ဘတ်ဂျက်အတလက် အသုံသချမည်ကို သတ်မဟတ်ပေသသည် ။ ဥပမာအာသဖဌင့်၊ ကျလန်ုပ်တလင် အညလဟန်သမျာသဖဌင့် ဖဌန့်ကျက်ထာသလျဟင် app: app-a О app: app-bထို့နောက် က PDB သည် ပထမတစ်ခုနဟင့်သာ သက်ဆိုင်မည်ဖဌစ်သည်။

parameter သည် minAvailable node ကိုရဟင်သလင်သခဌင်သ (သန့်ရဟင်သရေသ) သောအခါထည့်သလင်သစဉ်သစာသသည်။ ဥပမာအာသဖဌင့်၊ ကျလန်ုပ်တို့၏ဥပမာတလင်၊ အလလတ်ထုတ်နေစဉ်အတလင်သ၊ ဖဌစ်ရပ်အာသလုံသကို နဟင်ထုတ်ခံရသည်။ app: app-aနဟစ်ခုမဟလလဲ၍

၎င်သသည် သင့်အာသ သတ်မဟတ်အချိန်အတလင်သ အပလီကေသရဟင်သ၏ မည်မျဟလုပ်ဆောင်သင့်သည်ကို ထိန်သချုပ်နိုင်စေပါသည်။

လျဟောက်လလဟာကျန်သမာရေသစောင့်ကဌည့်

ထိုသို့သော စောင့်ကဌည့်ခဌင်သကို နည်သလမ်သနဟစ်မျိုသဖဌင့် ဖဌစ်နိုင်သည်- Readiness သို့မဟုတ် Liveness tests ကို အသုံသပဌုခဌင်သ။

ပထမဆုံသ စုံစမ်သစစ်ဆေသမဟု (အဆင်သင့်) သည် လမ်သကဌောင်သလက်ခံရန် ကလန်တိန်နာ၏ အဆင်သင့်ဖဌစ်မဟုကို ဆုံသဖဌတ်သည်။

ဒုတိယ (အသက်ရဟင်သန်မဟု) သည် ကလန်တိန်နာကျန်သမာခဌင်သရဟိမရဟိ သို့မဟုတ် ပဌန်လည်စတင်ရန် လိုအပ်ကဌောင်သ ပဌသသည်။

သက်ဆိုင်ရာ configurations မျာသကို ဖဌန့်ကျက်ရန်အတလက် yaml တလင် ရိုသရဟင်သစလာထည့်သလင်သထာသသည်။ ထိုနေရာတလင် အချိန်ကုန်ခဌင်သ၊ နဟောင့်နဟေသချိန်မျာသနဟင့် ပဌန်လည်စမ်သသပ်မဟုအရေအတလက်ကို သင်သတ်မဟတ်နိုင်သည်။ ၎င်သတို့အကဌောင်သ အသေသစိတ်ကို ကဌည့်ပါ။ Kubernetes စာရလက်စာတမ်သ.

Tag တလေက နေရာတိုင်သမဟာရဟိတယ်။

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

တဂ်မျာသဖဌင့် မည်သည့်အရာကိုမဆို သင်လုပ်နိုင်သည်၊ သို့သော် နမူနာကောင်သတစ်ခုသည် တူညီသောအစုအဝေသတလင် ပရိုဂရမ်မျာသကို လုပ်ဆောင်ရန် ပတ်ဝန်သကျင်မျာသစလာကို ဖန်တီသပေသလိမ့်မည်။

တူညီသောအစုအဝေသကို သင်အသုံသပဌုသည်ဆိုပါစို့ dev О qa. ဆိုလိုသည်မဟာ သင်သည် လျဟောက်လလဟာတစ်ခုရနိုင်သည်။ app-aပတ်ဝန်သကျင် နဟစ်ခုလုံသတလင် တစ်ပဌိုင်နက် လုပ်ဆောင်သည်။ qa О dev. ကကိစ္စတလင်၊ ကျလန်ုပ်တို့သည် သင့်လျော်သော ကန့်သတ်ဘောင်ကို သတ်မဟတ်ခဌင်သဖဌင့် သီသခဌာသပတ်ဝန်သကျင်တစ်ခုရဟိ အပလီကေသရဟင်သ instance ကို သီသခဌာသစီဝင်ရောက်နိုင်သည်။ environment။ ဥပမာအာသဖဌင့်, app: app-a О environment: dev ပတ်ဝန်သကျင်တစ်ခုအတလက်နဟင့် app: app-a О environment: qa ဒုတိယအတလက်။

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

စည်သရုံသပါ။

Kubernetes သည် အလလန်အစလမ်သထက်သော စနစ်တစ်ခုဖဌစ်သော်လည်သ မည်သည့်စနစ်မဆို နောက်ဆုံသတလင် လုပ်ငန်သစဉ်မျာသစလာဖဌင့် ပဌိုပျက်သလာသနိုင်သည်။ Kubelet သည် သင်သတ်မဟတ်ပေသသည့် လုပ်ငန်သစဉ်အာသလုံသကို လုပ်ဆောင်ပဌီသ ၎င်သနဟင့် ၎င်သ၏ကိုယ်ပိုင် စစ်ဆေသမဟုမျာသ လုပ်ဆောင်သည်။

ဟုတ်ပါတယ်၊ မိဘမဲ့ဝန်ဆောင်မဟုတစ်ခုက စနစ်ကို နဟောင့်နဟေသစေမဟာ မဟုတ်ပါဘူသ၊ Kubernetes က အခဌေခံကနေ စကေသချဖို့ ဒီဇိုင်သထုတ်ထာသပါတယ်။ ဒါပေမယ့် တစ်သန်သဝန်ဆောင်မဟုတစ်ခုအစာသ ပေါ်လာခဲ့ရင်တော့ kubelet ဟာ ဆူပလက်လာပါတယ်။

အကယ်၍ သင်သည် အသုံသချမဟု (ကလန်တိန်နာ၊ ပုံ၊ မည်သို့ပင်ဖဌစ်စေ) အကဌောင်သတစ်ခုခုကဌောင့် ဖျက်ပစ်ပါက ပဌီသပဌည့်စုံသော ရဟင်သလင်သမဟုပဌုလုပ်ရန် သေချာပါစေ။

သလာသတော့ တလေ့မယ်။

ကျလန်ုပ်တို့သည် အဓိက အကဌံဉာဏ်ကို နောက်ဆုံသအဖဌစ် သိမ်သဆည်သခဲ့သည်။ Go ပရိုဂရမ်သမင်သဘာသာစကာသကို လေ့လာပါ။

Kubernetes ကို Go တလင် တီထလင်ထာသပဌီသ၊ တိုသချဲ့မဟုမျာသအာသလုံသကို Go တလင် ရေသသာသထာသပဌီသ client-go client စာကဌည့်တိုက်ကိုလည်သ တရာသဝင်ပံ့ပိုသထာသသည်။

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

Go ပရိုဂရမ်သမင်သဘာသာစကာသကို သင်ယူပဌီသ ကလိုင်သယင့်သလာသခဌင်သကို ကျလမ်သကျလမ်သကျင်ကျင် တတ်မဌောက်ခဌင်သသည် Kubernetes သုံသစလဲသူအသစ်မျာသအတလက် သင်ပေသနိုင်သော အရေသကဌီသဆုံသ အကဌံဉာဏ်ဖဌစ်နိုင်သည်။

Mail.ru Cloud Solutions ၏ ပံ့ပိုသမဟုဖဌင့် ဘာသာပဌန်ပါသည်။

ဘာဖတ်စရာရဟိသေသလဲ။:

  1. Kubernetes တလင် အော်တိုစကေသချဲ့ခဌင်သ အဆင့်သုံသဆင့်နဟင့် ၎င်သတို့ကို ထိရောက်စလာ အသုံသပဌုနည်သ.
  2. Kubernetes အလုပ်သမာသ ဆုံမဟတ်မျာသ- အသေသအဖလဲ အမျာသအပဌာသ သို့မဟုတ် အကဌီသအနည်သငယ်?
  3. 25 Kubernetes ကိုအသုံသချခဌင်သနဟင့် စီမံခန့်ခလဲခဌင်သအတလက် အသုံသဝင်သောကိရိယာမျာသ.

source: www.habr.com

မဟတ်ချက် Add