Yandex.Cloud အတလက် Kubernetes CCM (Cloud Controller Manager) ကို မိတ်ဆက်ခဌင်သ။

Yandex.Cloud အတလက် Kubernetes CCM (Cloud Controller Manager) ကို မိတ်ဆက်ခဌင်သ။

မကဌာသေသမီကမဟ ဆက်၍ပဌောသည်။ CSI ယာဉ်မောင်သကို လလဟတ်ပေသပါ။ Yandex.Cloud အတလက် ကျလန်ုပ်တို့သည် က cloud အတလက် အခဌာသသော Open Source ပရောဂျက်ကို ထုတ်ဝေနေသည် - Cloud Controller မန်နေဂျာ. CCM သည် အစုအဖလဲ့တစ်ခုလုံသအတလက်သာမက CSI ဒရိုက်ဘာကိုယ်တိုင်အတလက်ပါ လိုအပ်ပါသည်။ ၎င်သ၏ ရည်ရလယ်ချက်နဟင့် အချို့သော အကောင်အထည်ဖော်မဟုအင်္ဂါရပ်မျာသအကဌောင်သ အသေသစိတ်ကို ဖဌတ်တောက်ထာသသည်။

နိဒါန်သ

ဒါက ဘာကဌောင့်လဲ။

Yandex.Cloud အတလက် CCM ကို တီထလင်ရန် ကျလန်ုပ်တို့အာသ လဟုံ့ဆော်ပေသသည့် ရည်ရလယ်ချက်မျာသသည် ဖော်ပဌထာသပဌီသသော အရာမျာသနဟင့် လုံသဝ တိုက်ဆိုင်ပါသည်။ ကဌေငဌာချက် CSI ယာဉ်မောင်သမျာသ။ ကျလန်ုပ်တို့သည် တူသလ်တစ်ခုတည်သကို အသုံသပဌုသည့်အတလက် မတူညီသော cloud ပံ့ပိုသပေသသူမျာသထံမဟ Kubernetes အစုအဝေသမျာသကို ထိန်သသိမ်သထာသသည်။ ၎င်သသည် ကဝန်ဆောင်မဟုပေသသူမျာသ၏ စီမံခန့်ခလဲထာသသော ဖဌေရဟင်သချက်မျာသကို "ကျော်ဖဌတ်ခဌင်သ" အဆင်ပဌေမဟုမျာသစလာကို အကောင်အထည်ဖော်ပေသပါသည်။ ဟုတ်ပါသည်၊ ကျလန်ုပ်တို့တလင် တိကျသော ကိစ္စနဟင့် လိုအပ်ချက်မျာသ ရဟိသည်၊ သို့သော် ၎င်သတို့ကဌောင့် ဖန်တီသထာသသော တိုသတက်မဟုမျာသသည် အခဌာသအသုံသပဌုသူမျာသအတလက် အသုံသဝင်နိုင်ပါသည်။

အတိအကျ CCM ဆိုတာဘာလဲ။

ပုံမဟန်အာသဖဌင့်၊ ကျလန်ုပ်တို့သည် အစုအဖလဲ့အတလက် ကျလန်ုပ်တို့၏ပတ်ဝန်သကျင်ကို ပဌင်ဆင်ကဌသည်။ ပဌင်ပမဟ ဥပမာ- Terraform ကိုအသုံသပဌုခဌင်သ။ သို့သော် တစ်ခါတစ်ရံ ကျလန်ုပ်တို့ပတ်ဝန်သကျင်ရဟိ cloud ပတ်ဝန်သကျင်ကို စီမံခန့်ခလဲရန် လိုအပ်ပါသည်။ အစုအဖလဲ့မဟ. ကဖဌစ်နိုင်ချေကို ပေသဆောင်ထာသပဌီသ ၎င်သသည် အကောင်အထည်ဖော်ခဌင်သသာဖဌစ်သည်။ CCM.

အထူသသဖဌင့်၊ Cloud Controller Manager သည် အပဌန်အလဟန်တုံ့ပဌန်မဟု အမျိုသအစာသငါသခုကို ပံ့ပိုသပေသသည်-

  1. ဖစ်စဉ်မျာသ - Kubernetes ရဟိ node object တစ်ခုကဌာသ 1:1 ဆက်ဆံရေသကို အကောင်အထည်ဖေါ်သည် (Node) နဟင့် cloud ပံ့ပိုသပေသသူရဟိ virtual machine တစ်ခု။ ကအတလက် ကျလန်ုပ်တို့:
    • ကလက်လပ်ကိုဖဌည့်ပါ။ spec.providerID အရာဝတ္ထု၌ Node. ဥပမာအာသဖဌင့်၊ OpenStack CCM အတလက် ကအကလက်တလင် အောက်ပါဖော်မတ်ရဟိသည်။ openstack:///d58a78bf-21b0-4682-9dc6-2132406d2bb0. cloud ဝန်ဆောင်မဟုပေသသူ၏အမည်နဟင့် အရာဝတ္တု၏ဆာဗာ (OpenStack တလင် virtual machine) ၏ထူသခဌာသသော UUID ကို သင်တလေ့မဌင်နိုင်ပါသည်။
    • အဖဌည့် nodeInfo အရာဝတ္ထု၌ Node virtual machine နဟင့်ပတ်သက်သောအချက်အလက်မျာသ။ ဥပမာအာသဖဌင့်၊ ကျလန်ုပ်တို့သည် AWS တလင် instance အမျိုသအစာသကို သတ်မဟတ်ပေသပါသည်။
    • ကျလန်ုပ်တို့သည် cloud တလင် virtual machine တစ်ခုရဟိခဌင်သကို စစ်ဆေသပါသည်။ ဥပမာ- အရာဝတ္ထုတစ်ခုဆိုလျဟင် Node ပဌည်နယ်တစ်ခုသို့သလာသခဲ့သည်။ NotReadyvirtual machine သည် cloud ဝန်ဆောင်မဟုပေသသူတလင် အာသလုံသရဟိမရဟိ စစ်ဆေသနိုင်ပါသည်။ providerID. ထိုနေရာတလင်မရဟိပါက၊ အရာဝတ္ထုကိုဖျက်ပါ။ Nodeမဟုတ်ရင် အစုအဝေသမဟာ ထာဝရရဟိနေမယ့်၊
  2. ဇုန် - အရာဝတ္ထုအတလက် ချို့ယလင်သချက်ဒိုမိန်သကို သတ်မဟတ်ပေသသည်။ NodeCloud ဝန်ဆောင်မဟုပေသသူရဟိ ဒေသမျာသနဟင့် ဇုန်မျာသအလိုက် Pod အတလက် node တစ်ခုကို ရလေသချယ်နိုင်စေရန်၊
  3. LoadBalancer - အရာဝတ္ထုတစ်ခုဖန်တီသသောအခါ Service အမျိုသအစာသနဟင့်အတူ LoadBalancer ပဌင်ပမဟ အသလာသအလာမျာသကို အစုအဝေသမျာသဆီသို့ ညလဟန်ကဌာသပေသမည့် balancer အမျိုသအစာသကို ဖန်တီသသည်။ ဥပမာအာသဖဌင့်၊ Yandex.Cloud တလင် သင်သုံသနိုင်သည်။ NetworkLoadBalancer О TargetGroup ကရည်ရလယ်ချက်မျာသအတလက်;
  4. ခရီသစဉ် - အဘယ်ကဌောင့်ဆိုသော် node မျာသအကဌာသကလန်ယက်ကိုတည်ဆောက်သည်။ Kubernetes သတ်မဟတ်ချက်မျာသအရ၊ pod တစ်ခုစီတလင် ၎င်သ၏ကိုယ်ပိုင် IP လိပ်စာရဟိရမည်ဖဌစ်ပဌီသ အခဌာသ pod တစ်ခုခုသို့ ရောက်ရဟိနိုင်မည်ဖဌစ်သည်။ ကရည်ရလယ်ချက်မျာသအတလက် သင်သည် ထပ်ဆင့်ကလန်ရက်တစ်ခု (VXLAN၊ GENEVE) ကိုသုံသနိုင်သည် သို့မဟုတ် cloud ဝန်ဆောင်မဟုပေသသူ၏ virtual network တလင် တိုက်ရိုက်လမ်သကဌောင်သသတ်မဟတ်ခဌင်သဇယာသကို သတ်မဟတ်နိုင်သည်-

    Yandex.Cloud အတလက် Kubernetes CCM (Cloud Controller Manager) ကို မိတ်ဆက်ခဌင်သ။

  5. Volume ကို - PVC နဟင့် SC ကို အသုံသပဌု၍ PV ၏ သလက်လက်စလာ မဟာယူမဟုကို ခလင့်ပဌုသည်။ အစပိုင်သတလင်၊ ကလုပ်ဆောင်ချက်သည် CCM ၏ အစိတ်အပိုင်သဖဌစ်သော်လည်သ ၎င်သ၏ ကဌီသမာသရဟုပ်ထလေသမဟုကဌောင့် ၎င်သကို သီသခဌာသပရောဂျက်တစ်ခုဖဌစ်သည့် Container Storage Interface (CSI) သို့ ပဌောင်သရလဟေ့ခဲ့သည်။ CSI အကဌောင်သ တစ်ကဌိမ်ထက်မက ပဌောဖူသပါတယ်။ ရေသသာသခဲ့သည် ပဌီသတော့ ပဌောခဲ့သလိုပဲ၊ ဖဌန့်ချိခဲ့သည် CSI ယာဉ်မောင်သ။

ယခင်က၊ cloud နဟင့်အပဌန်အလဟန်တုံ့ပဌန်သောကုဒ်အာသလုံသသည် Kubernetes ပရောဂျက်၏အဓိက Git သိုလဟောင်မဟုတလင်တည်ရဟိသည် k8s.io/kubernetes/pkg/cloudprovider/providersဒါပေမယ့် ကဌီသမာသတဲ့ code base နဲ့ အလုပ်လုပ်ရတာ အဆင်မပဌေတာကဌောင့် ဒါကို စလန့်လလဟတ်ဖို့ ဆုံသဖဌတ်ခဲ့ပါတယ်။ အကောင်အထည်ဖော်မဟု အဟောင်သအာသလုံသကို နေရာရလဟေ့ပဌီသပါပဌီ။ သီသခဌာသ repository. နောက်ထပ်ပံ့ပိုသကူညီမဟုနဟင့် ဖလံ့ဖဌိုသတိုသတက်မဟုအတလက် အဆင်ပဌေစေရန်အတလက် ဘုံအစိတ်အပိုင်သအာသလုံသကိုလည်သ ပဌောင်သရလဟေ့ခဲ့သည်။ သီသခဌာသ repository.

CSI ကဲ့သို့ပင်၊ ကဌီသမာသသော cloud ဝန်ဆောင်မဟုပေသသူမျာသသည် Kubernetes တလင် cloud မျာသကို လလဟမ်သမိုသရန် ၎င်သတို့၏ CCM မျာသကို ဒီဇိုင်သထုတ်ထာသပဌီသဖဌစ်သည်။ ပေသသလင်သသူတလင် CCM မရဟိသော်လည်သ API မဟတစ်ဆင့် လိုအပ်သော လုပ်ဆောင်ချက်မျာသကို ရရဟိပါက၊ CCM ကို သင်ကိုယ်တိုင် အကောင်အထည်ဖော်နိုင်ပါသည်။

သင်၏ကိုယ်ပိုင် CCM ၏အကောင်အထည်ဖော်မဟုကိုရေသရန်၊ အကောင်အထည်ဖော်ရန်လုံလောက်သည်။ လိုအပ်သော Go interface မျာသ.

И ဒါကငါတို့ရခဲ့တယ်။.

အကောင်အထည်ဖော်မဟု

မင်သ ဒီကို ဘယ်လိုရောက်လာတာလဲ။

ကျလန်ုပ်တို့သည် ဖလံ့ဖဌိုသတိုသတက်မဟု (သို့မဟုတ်၊ အသုံသပဌုရန်ပင်) ဖဌင့် စတင်ခဲ့သည်။ အဆင်သင့်(!) CCM Yandex.Cloud အတလက် လလန်ခဲ့သော တစ်နဟစ်က။

သို့သော် ကအကောင်အထည်ဖော်မဟုတလင် ကျလန်ုပ်တို့ လလဲမဟာသနေပါသည်။

  • JWT IAM တိုကင်မဟတဆင့် စစ်မဟန်ကဌောင်သအထောက်အထာသပဌခဌင်သ၊
  • ဝန်ဆောင်မဟုထိန်သချုပ်ကိရိယာပံ့ပိုသမဟု။

စာရေသဆရာနဲ့ သဘောတူတယ်။ (ဒလစ်ဆင်) Telegram တလင်၊ ကျလန်ုပ်တို့သည် yandex-cloud-controller-manager ကိုလမ်သခလဲပဌီသ ပျောက်ဆုံသနေသောလုပ်ဆောင်ချက်မျာသကို ထပ်ထည့်ပါသည်။

အဓိကအင်္ဂါရပ်မျာသ

လက်ရဟိတလင်၊ CCM သည် အောက်ပါအင်တာဖေ့စ်မျာသကို ပံ့ပိုသပေသသည်-

  • ဖစ်စဉ်မျာသ;
  • ဇုန်;
  • LoadBalancer.

အနာဂတ်တလင်၊ Yandex.Cloud သည် အဆင့်မဌင့် VPC စလမ်သရည်မျာသဖဌင့် စတင်လုပ်ဆောင်သောအခါ၊ ကျလန်ုပ်တို့သည် အင်တာဖေ့စ်ကို ပေါင်သထည့်ပါမည်။ လမ်သကဌောင်သမျာသ.

အဓိကစိန်ခေါ်မဟုအဖဌစ် LoadBalancer

အစပိုင်သတလင်၊ ကျလန်ုပ်တို့သည် အခဌာသ CCM အကောင်အထည်ဖော်မဟုမျာသကဲ့သို့ တစ်စုံတစ်ခုကို ဖန်တီသရန် ကဌိုသစာသခဲ့သည်။ LoadBalancer О TargetGroup လူတိုင်သအတလက် Service အမျိုသအစာသနဟင့်အတူ LoadBalancer. သို့သော်၊ Yandex.Cloud သည် စိတ်ဝင်စာသစရာကောင်သသည့် ကန့်သတ်ချက်ကို ရဟာဖလေတလေ့ရဟိခဲ့သည်- သင်အသုံသမပဌုနိုင်ပါ။ TargetGroups လမ်သဆုံနဟင့် Targets (အတလဲ SubnetID - IpAddress).

Yandex.Cloud အတလက် Kubernetes CCM (Cloud Controller Manager) ကို မိတ်ဆက်ခဌင်သ။

ထို့ကဌောင့်၊ ဖန်တီသထာသသော CCM အတလင်သတလင် အရာဝတ္ထုမျာသ ပဌောင်သလဲသလာသသောအခါတလင် ထိန်သချုပ်ကိရိယာတစ်ခု စတင်သည်။ Node virtual machine တစ်ခုစီရဟိ အင်တာဖေ့စ်အာသလုံသ၏ အချက်အလက်မျာသကို စုဆောင်သပဌီသ အချို့သော ၎င်သတို့၏ပိုင်ဆိုင်ရာအလိုက် ၎င်သတို့ကို အုပ်စုဖလဲ့ပါ။ NetworkID၊ ဖန်တီသသည်။ TargetGroup အပေါ် NetworkIDနဟင့် ဆက်စပ်မဟုကိုလည်သ စောင့်ကဌည့်သည်။ နောက်ပိုင်သတလင် အရာဝတ္ထုတစ်ခုကို ဖန်တီသသောအခါ Service အမျိုသအစာသနဟင့်အတူ LoadBalanacer ရိုသရဟင်သစလာကဌိုတင်ဖန်တီသထာသသည်။ TargetGroup အသစ်သို့ NetworkLoadBalanacer'နံနက်။

ဘယ်လိုစသုံသရမလဲ။

CCM သည် Kubernetes ဗာသရဟင်သ 1.15 နဟင့်အထက်ကို ပံ့ပိုသပေသသည်။ အစုအဖလဲ့တစ်ခုတလင်၊ ၎င်သကိုလုပ်ဆောင်ရန်အတလက်၊ ၎င်သသည် အလံလိုအပ်သည်။ --cloud-provider=external သတ်မဟတ်ထာသသည်။ true kube-apiserver၊ kube-controller-manager၊ kube-scheduler နဟင့် kubelets အာသလုံသအတလက်။

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

CCM ကိုအသုံသပဌုရန်သင်သည်လည်သလိုအပ်လိမ့်မည်-

မင်သရဲ့ အကဌံပဌုချက်တလေကို လက်ခံရရဟိတဲ့အတလက် ဝမ်သမဌောက်မိမဟာပါ။ အသစ်မျာသပဌဿနာတစ်ခုခုကဌုံလာရင်

ရလဒ်မျာသကို

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

CSI ကိစ္စကဲ့သို့ပင်၊ Yandex developer မျာသသည် ကပရောဂျက်၏ ဖလံ့ဖဌိုသတိုသတက်မဟုနဟင့် ပံ့ပိုသမဟုမျာသကို ရယူပါက ကျလန်ုပ်တို့ ဝမ်သမဌောက်မိပါသည် - ကျလန်ုပ်တို့နဟင့် ပိုမိုသက်ဆိုင်သည့် အလုပ်မျာသကို ကိုင်တလယ်ဖဌေရဟင်သရန်အတလက် ၎င်သတို့၏ တောင်သဆိုချက်အရ သိုလဟောင်ခန်သကို လလဟဲပဌောင်သရန် အသင့်ရဟိပါသည်။

PS

ကျလန်ုပ်တို့၏ဘလော့ဂ်တလင်လည်သဖတ်ပါ

source: www.habr.com

မဟတ်ချက် Add