10G ကွန်ရက်ကျော် Kubernetes အတွက် CNI စွမ်းဆောင်ရည် အကဲဖြတ်ချက် (သြဂုတ် 2020)

10G ကွန်ရက်ကျော် Kubernetes အတွက် CNI စွမ်းဆောင်ရည် အကဲဖြတ်ချက် (သြဂုတ် 2020)

TL; DR: Kube-Router နှင့် Kube-OVN မှလွဲ၍ CNI များအားလုံးသည် အလိုအလျောက် MTU ထောက်လှမ်းခြင်းမှလွဲ၍ Calico သည် အကောင်းဆုံးဖြစ်သည်။

ကျွန်ုပ်၏အတိတ်စစ်ဆေးမှုများ၏ ဆောင်းပါး-မွမ်းမံမှု (2018 и 2019) စမ်းသပ်ချိန်တွင် ကျွန်ုပ်သည် 1.19 ခုနှစ် သြဂုတ်လတွင် မွမ်းမံထားသော CNIs များဖြင့် Ubuntu 18.04 တွင် Kubernetes 2020 ကို အသုံးပြုနေပါသည်။

တိုင်းတာမှုသို့ မ၀င်ခင်...

2019 ခုနှစ် ဧပြီလ ကတည်းက ဘာအသစ်များ ရှိသေးလဲ။

  • သင့်ကိုယ်ပိုင် အစုအဝေးတွင် စမ်းသပ်နိုင်သည်- ကျွန်ုပ်တို့၏ကိရိယာကို အသုံးပြု၍ သင့်ကိုယ်ပိုင် အစုအဝေးတွင် စမ်းသပ်မှုများကို လုပ်ဆောင်နိုင်သည်။ Kubernetes ကွန်ရက်စံနှုန်း: knb
  • အဖွဲ့ဝင်အသစ်များ ပေါ်လာပါပြီ။
  • မြင်ကွင်းအသစ်- လက်ရှိစစ်ဆေးမှုများသည် "Pod-to-Pod" ကွန်ရက်စွမ်းဆောင်ရည်စမ်းသပ်မှုများကို လုပ်ဆောင်ပြီး လက်တွေ့ကမ္ဘာအခြေအနေများနှင့် ပိုမိုနီးကပ်စွာစမ်းသပ်လုပ်ဆောင်ပေးသည့် "Pod-to-Service" script အသစ်ကို ထည့်သွင်းထားပါသည်။ လက်တွေ့တွင်၊ API ပါသော သင်၏ Pod သည် Pod ip လိပ်စာမှတဆင့်မဟုတ်ဘဲ ဝန်ဆောင်မှုတစ်ခုအနေဖြင့် အခြေခံနှင့်အလုပ်လုပ်သည် (ဟုတ်ပါတယ် ကျွန်တော်တို့ TCP နှင့် UDP နှစ်ခုစလုံးကို ဖြစ်ရပ်နှစ်ခုစလုံးအတွက် စစ်ဆေးပါတယ်)။
  • အရင်းအမြစ်သုံးစွဲမှု- ယခု စမ်းသပ်မှုတစ်ခုစီတွင် ၎င်း၏ကိုယ်ပိုင်အရင်းအမြစ် နှိုင်းယှဉ်မှုရှိသည်။
  • အပလီကေးရှင်းစမ်းသပ်မှုများကို ဖယ်ရှားခြင်း- CNI စတင်မှုတွင် နှောင့်နှေးမှုကြောင့် (Pod ၏ ပထမစက္ကန့်အနည်းငယ်တွင် စက္ကန့်အနည်းငယ်အတွင်း Pod ၏ ပထမစက္ကန့်အနည်းငယ်မှ စက္ကန့်အနည်းငယ်အတွင်း အက်ပလီကေးရှင်းစမ်းသပ်မှုများကို ဖယ်ရှားခြင်း- ကျွန်ုပ်တို့သည် HTTP၊ FTP နှင့် SCP စမ်းသပ်မှုများကို မပြုလုပ်တော့ပါ။ တကယ့်အခြေအနေမှာ ပုံမှန်မဟုတ်တဲ့ startup)။
  • ပွင့်လင်းသောအရင်းအမြစ်- စမ်းသပ်မှုရင်းမြစ်များ (ဇာတ်ညွှန်းများ၊ yml ဆက်တင်များနှင့် မူရင်း “ကုန်ကြမ်း” ဒေတာ) တို့ကို ရရှိနိုင်ပါသည်။ ဒီမှာ

အကိုးအကား စမ်းသပ်မှု ပရိုတိုကော

ပရိုတိုကောကို အသေးစိတ်ဖော်ပြထားသည်။ ဒီမှာဤဆောင်းပါးသည် ပုံသေ kernel ဖြင့် Ubuntu 18.04 အကြောင်း သတိပြုပါ။

အကဲဖြတ်ရန်အတွက် CNI ကိုရွေးချယ်ခြင်း။

ဤစမ်းသပ်မှုသည် yaml ဖိုင်တစ်ခုနှင့် ပြင်ဆင်ထားသော CNI များကို နှိုင်းယှဉ်ရန် ရည်ရွယ်သည် (ထို့ကြောင့် VPP နှင့် အခြားအရာများကဲ့သို့ script များဖြင့် ထည့်သွင်းထားသည့်အရာအားလုံးကို ဖယ်ထုတ်ထားသည်)။

ကျွန်ုပ်တို့၏ရွေးချယ်ထားသော CNI များကို နှိုင်းယှဉ်ရန်-

  • Antrea v.0.9.1
  • Calico v3.16
  • Canal v3.16 (Flannel ကွန်ရက် + Calico ကွန်ရက် မူဝါဒများ)
  • Cilium 1.8.2
  • ဖလန်နယ် 0.12.0
  • Kube-router နောက်ဆုံးထွက် (2020-08-25)
  • WeaveNet 2.7.0

CNI အတွက် MTU ကို ပြင်ဆင်ခြင်း

ပထမဦးစွာ၊ ကျွန်ုပ်တို့သည် TCP စွမ်းဆောင်ရည်အပေါ် အလိုအလျောက် MTU ထောက်လှမ်းခြင်း၏ အကျိုးသက်ရောက်မှုကို စစ်ဆေးပါသည်။

10G ကွန်ရက်ကျော် Kubernetes အတွက် CNI စွမ်းဆောင်ရည် အကဲဖြတ်ချက် (သြဂုတ် 2020)

TCP စွမ်းဆောင်ရည်အပေါ် MTU ၏သက်ရောက်မှု

UDP ကိုအသုံးပြုသောအခါ ပို၍ကြီးမားသော ကွာဟချက်ကို တွေ့နိုင်သည်-

10G ကွန်ရက်ကျော် Kubernetes အတွက် CNI စွမ်းဆောင်ရည် အကဲဖြတ်ချက် (သြဂုတ် 2020)
UDP စွမ်းဆောင်ရည်အပေါ် MTU ၏သက်ရောက်မှု

စမ်းသပ်မှုများတွင် ဖော်ပြထားသော ကြီးမားသောစွမ်းဆောင်ရည်သက်ရောက်မှုကြောင့် CNI ထိန်းသိမ်းသူအားလုံးထံ မျှော်လင့်ချက်စာတစ်စောင် ပေးပို့လိုပါသည်- ကျေးဇူးပြု၍ CNI တွင် အလိုအလျောက် MTU ထောက်လှမ်းမှုကို ထည့်ပါ။ ကြောင်များ၊ ယူနီကွန်များနှင့် ချစ်စရာအကောင်းဆုံး Devop လေးကိုပင် သင် ကယ်တင်မည်ဖြစ်သည်။

သို့သော် သင်သည် အလိုအလျောက် MTU ထောက်လှမ်းခြင်းအတွက် CNI ကိုအသုံးပြုရန် လိုအပ်ပါက၊ စွမ်းဆောင်ရည်ရရှိရန် ၎င်းကို ကိုယ်တိုင် configure လုပ်နိုင်ပါသည်။ ၎င်းသည် Calico၊ Canal နှင့် WeaveNet တို့နှင့်သက်ဆိုင်ကြောင်း ကျေးဇူးပြု၍ သတိပြုပါ။

10G ကွန်ရက်ကျော် Kubernetes အတွက် CNI စွမ်းဆောင်ရည် အကဲဖြတ်ချက် (သြဂုတ် 2020)
ပူးတွဲပါ CNI များထံ ကျွန်ုပ်၏ တောင်းဆိုချက်လေးများ...

CNI စမ်းသပ်ခြင်း- ဒေတာကုန်ကြမ်း

ဤကဏ္ဍတွင်၊ ကျွန်ုပ်တို့သည် မှန်ကန်သော MTU နှင့် CNI ကို နှိုင်းယှဉ်ပါမည် (အလိုအလျောက် ဆုံးဖြတ်သည် သို့မဟုတ် ကိုယ်တိုင်သတ်မှတ်သည်)။ ဤနေရာတွင် အဓိကရည်ရွယ်ချက်မှာ ဂရပ်များတွင် ဒေတာအကြမ်းကို ပြသရန်ဖြစ်သည်။

အရောင်ဒဏ္ဍာရီ-

  • မီးခိုးရောင် - နမူနာ (ဆိုလိုသည်မှာ သံဗလာ)
  • အစိမ်းရောင် - bandwidth 9500 Mbps အထက်
  • အဝါရောင် - bandwidth 9000 Mbps အထက်
  • လိမ္မော်ရောင် - bandwidth 8000 Mbps အထက်
  • အနီရောင် - bandwidth 8000 Mbps အောက်
  • အပြာ - ကြားနေ (Bandwidth နှင့် မသက်ဆိုင်ပါ)

အရင်းအမြစ် သုံးစွဲမှု မတင်ပါ။

ပထမဦးစွာ၊ အစုအဝေးသည် “အိပ်ပျော်နေ” သောအခါ အရင်းအမြစ်သုံးစွဲမှုကို စစ်ဆေးပါ။

10G ကွန်ရက်ကျော် Kubernetes အတွက် CNI စွမ်းဆောင်ရည် အကဲဖြတ်ချက် (သြဂုတ် 2020)
အရင်းအမြစ် သုံးစွဲမှု မတင်ပါ။

Pod-to-Pod

ဤအခြေအနေသည် သုံးစွဲသူ Pod သည် ၎င်း၏ IP လိပ်စာကို အသုံးပြု၍ ဆာဗာ Pod သို့ တိုက်ရိုက်ချိတ်ဆက်သည်ဟု ယူဆသည်။

10G ကွန်ရက်ကျော် Kubernetes အတွက် CNI စွမ်းဆောင်ရည် အကဲဖြတ်ချက် (သြဂုတ် 2020)
Pod-to-Pod ဇာတ်လမ်း

သည် TCP

Pod-to-Pod TCP ရလဒ်များနှင့် သက်ဆိုင်ရာ အရင်းအမြစ် သုံးစွဲမှု-

10G ကွန်ရက်ကျော် Kubernetes အတွက် CNI စွမ်းဆောင်ရည် အကဲဖြတ်ချက် (သြဂုတ် 2020)

10G ကွန်ရက်ကျော် Kubernetes အတွက် CNI စွမ်းဆောင်ရည် အကဲဖြတ်ချက် (သြဂုတ် 2020)

UDP ကို

Pod-to-Pod UDP ရလဒ်များနှင့် သက်ဆိုင်ရာ အရင်းအမြစ် သုံးစွဲမှု-

10G ကွန်ရက်ကျော် Kubernetes အတွက် CNI စွမ်းဆောင်ရည် အကဲဖြတ်ချက် (သြဂုတ် 2020)

10G ကွန်ရက်ကျော် Kubernetes အတွက် CNI စွမ်းဆောင်ရည် အကဲဖြတ်ချက် (သြဂုတ် 2020)

Pod-to-Service

ဤကဏ္ဍသည် အမှန်တကယ်အသုံးပြုမှုကိစ္စများအတွက် သက်ဆိုင်သည်၊ client Pod သည် ClusterIP ဝန်ဆောင်မှုမှတစ်ဆင့် ဆာဗာ Pod သို့ ချိတ်ဆက်သည်။

10G ကွန်ရက်ကျော် Kubernetes အတွက် CNI စွမ်းဆောင်ရည် အကဲဖြတ်ချက် (သြဂုတ် 2020)
Pod-to-Service Script

သည် TCP

Pod-to-Service TCP ရလဒ်များနှင့် သက်ဆိုင်ရာ အရင်းအမြစ် သုံးစွဲမှု-

10G ကွန်ရက်ကျော် Kubernetes အတွက် CNI စွမ်းဆောင်ရည် အကဲဖြတ်ချက် (သြဂုတ် 2020)

10G ကွန်ရက်ကျော် Kubernetes အတွက် CNI စွမ်းဆောင်ရည် အကဲဖြတ်ချက် (သြဂုတ် 2020)

UDP ကို

Pod-to-Service UDP ရလဒ်များနှင့် သက်ဆိုင်ရာ အရင်းအမြစ် သုံးစွဲမှု-

10G ကွန်ရက်ကျော် Kubernetes အတွက် CNI စွမ်းဆောင်ရည် အကဲဖြတ်ချက် (သြဂုတ် 2020)

10G ကွန်ရက်ကျော် Kubernetes အတွက် CNI စွမ်းဆောင်ရည် အကဲဖြတ်ချက် (သြဂုတ် 2020)

ကွန်ရက်မူဝါဒ ပံ့ပိုးမှု

အထက်ပါအချက်များထဲတွင် နိုင်ငံရေးကို မထောက်ခံသော တစ်ခုတည်းသော ဖလန်နယ်ဖြစ်သည်။ အဝင်နှင့်အထွက်အပါအဝင် အခြားကွန်ရက်မူဝါဒများကို မှန်ကန်စွာအကောင်အထည်ဖော်ပါ။ အလုပ်ကောင်း။

CNI ကုဒ်ဝှက်ခြင်း

စစ်ဆေးထားသော CNI များထဲတွင် Pods များအကြား ကွန်ရက်ဖလှယ်မှုကို စာဝှက်ပေးနိုင်သည့်အရာများ ရှိသည်-

  • Antrea သည် IPsec ကို အသုံးပြုထားသည်။
  • ဝါယာကာကိုသုံးပြီး calico
  • IPsec ကိုအသုံးပြုထားသော Cilium
  • IPsec ကို အသုံးပြု၍ WeaveNet

စွမ်းရည်

CNIs အနည်းငယ်သာကျန်တော့သောကြောင့်၊ မြင်ကွင်းအားလုံးကို ဂရပ်တစ်ခုအဖြစ် ထားကြပါစို့။

10G ကွန်ရက်ကျော် Kubernetes အတွက် CNI စွမ်းဆောင်ရည် အကဲဖြတ်ချက် (သြဂုတ် 2020)

သယံဇာတ သုံးစွဲမှု

ဤကဏ္ဍတွင်၊ TCP နှင့် UDP တွင် Pod-to-Pod ဆက်သွယ်ရေးကို လုပ်ဆောင်ရာတွင် အသုံးပြုသည့် အရင်းအမြစ်များကို အကဲဖြတ်ပါမည်။ အပိုအချက်အလက်များကိုမပေးသောကြောင့် Pod-to-Service ဂရပ်ကိုဆွဲရာတွင် အဓိပ္ပါယ်မရှိပါ။

10G ကွန်ရက်ကျော် Kubernetes အတွက် CNI စွမ်းဆောင်ရည် အကဲဖြတ်ချက် (သြဂုတ် 2020)

10G ကွန်ရက်ကျော် Kubernetes အတွက် CNI စွမ်းဆောင်ရည် အကဲဖြတ်ချက် (သြဂုတ် 2020)

အားလုံးကို ပေါင်းထည့်လိုက်ပါ။

ဂရပ်အားလုံးကို ထပ်ခါတလဲလဲကြည့်ရအောင်၊ ဤနေရာတွင် ပုဂ္ဂလဓိဋ္ဌာန်အနည်းငယ်ကို မိတ်ဆက်ပေးခဲ့ပြီး အမှန်တကယ်တန်ဖိုးများကို “vwry fast”၊ “low” စသည်တို့ဖြင့် အစားထိုးလိုက်ပါသည်။

10G ကွန်ရက်ကျော် Kubernetes အတွက် CNI စွမ်းဆောင်ရည် အကဲဖြတ်ချက် (သြဂုတ် 2020)

နိဂုံးနဲ့ ကောက်ချက်နော်။

ရလဒ်များကို ကျွန်ုပ်ကိုယ်တိုင် အနက်ဖွင့်ဆိုခြင်းဖြစ်သောကြောင့် ဤအရာသည် အနည်းငယ်ပုဂ္ဂလဓိဋ္ဌာန်ဖြစ်သည်။

CNIs အသစ်များပေါ်လာသည့်အတွက် ဝမ်းမြောက်မိပါသည်၊ Antrea ကောင်းစွာလုပ်ဆောင်နိုင်သည်၊ အစောပိုင်းဗားရှင်းများတွင်ပင် လုပ်ဆောင်ချက်များစွာကို အကောင်အထည်ဖော်ခဲ့သည်- အလိုအလျောက် MTU ထောက်လှမ်းခြင်း၊ ကုဒ်ဝှက်ခြင်းနှင့် တပ်ဆင်ရလွယ်ကူခြင်း။

ကျွန်ုပ်တို့ စွမ်းဆောင်ရည်ကို နှိုင်းယှဉ်ပါက Kube-OVN နှင့် Kube-Router မှလွဲ၍ CNI များအားလုံး ကောင်းမွန်စွာ အလုပ်လုပ်ပါသည်။ Kube-Router သည် MTU ကို ထောက်လှမ်း၍မရပါ၊ စာရွက်စာတမ်းတွင် မည်သည့်နေရာတွင်မဆို ၎င်းကို configure လုပ်ရန် နည်းလမ်းရှာမတွေ့ခဲ့ပါ။ဒီမှာ ဤအကြောင်းအရာနှင့်ပတ်သက်သော တောင်းဆိုချက်တစ်ခုကို ဖွင့်ထားသည်။)

အရင်းအမြစ်သုံးစွဲမှုနှင့်ပတ်သက်၍၊ Cilium သည် အခြားသူများထက် RAM ပိုများနေသေးသော်လည်း ထုတ်လုပ်သူသည် ကြီးမားသောအစုအဝေးများကို ပစ်မှတ်ထားနေပြီး၊ ၎င်းမှာ သုံးချောင်းတွဲအစုအဝေးတွင် စမ်းသပ်မှုတစ်ခုနှင့် မတူကြောင်း ထင်ရှားသည်။ Kube-OVN သည်လည်း CPU နှင့် RAM ရင်းမြစ်များစွာကို စားသုံးသည်၊ သို့သော် ၎င်းသည် Open vSwitch ကိုအခြေခံထားသော လူငယ် CNI (Antrea ကဲ့သို့၊ ၎င်းသည် ပိုကောင်းပြီး သုံးစွဲမှုနည်းသည်)။

Flannel မှလွဲ၍ လူတိုင်းတွင် ကွန်ရက်မူဝါဒများရှိသည်။ ပန်းတိုင်က မုန်လာဥပေါင်းထက် ပိုရိုးရှင်းတဲ့အတွက် သူတို့ကို ဘယ်တော့မှ ထောက်ခံမှာမဟုတ်ဘူး၊ ပေါ့ပါးတယ်၊ ပိုကောင်းတယ်။

ထို့အပြင်၊ အခြားအရာများကြားတွင်၊ ကုဒ်ဝှက်ခြင်းလုပ်ဆောင်ချက်သည် အံ့မခန်းဖြစ်သည်။ Calico သည် ရှေးအကျဆုံး CNI များထဲမှ တစ်ခုဖြစ်သော်လည်း၊ ကုဒ်ဝှက်ခြင်းကို လွန်ခဲ့သည့် ရက်သတ္တပတ်အနည်းငယ်ကသာ ထည့်သွင်းခဲ့သည်။ ၎င်းတို့သည် IPsec အစား wireguard ကို ရွေးချယ်ခဲ့ပြီး ရိုးရိုးရှင်းရှင်းပြောရလျှင် ၎င်းသည် စမ်းသပ်မှု၏ ဤအပိုင်းရှိ အခြား CNI များကို လုံးဝဖြတ်မသွားစေဘဲ အလွန်ကောင်းမွန်ပြီး အံ့သြဖွယ်ကောင်းအောင် လုပ်ဆောင်ပါသည်။ အမှန်ပင်၊ ကုဒ်ဝှက်ခြင်းကြောင့် အရင်းအမြစ်သုံးစွဲမှု တိုးလာသော်လည်း ရရှိသည့် ပမာဏသည် ထိုက်တန်သည် (Calico သည် ဒုတိယအဆင့်ရှိသော Cilium နှင့် နှိုင်းယှဉ်ပါက ခြောက်ဆတိုးတက်ကြောင်း ပြသခဲ့သည်)။ ထို့အပြင်၊ သင်သည် Calico ကို အစုအဝေးတွင် ချထားပြီးနောက် အချိန်မရွေး ဝါယာစောင့်ကို ဖွင့်နိုင်ပြီး သင်ဆန္ဒရှိလျှင် ၎င်းကို အချိန်တိုအတွင်း သို့မဟုတ် အပြီးတိုင် ပိတ်နိုင်သည်။ မယုံနိုင်လောက်အောင် အဆင်ပြေပေမယ့်! Calico သည် လက်ရှိတွင် MTU ကို အလိုအလျောက်သိရှိနိုင်ခြင်းမရှိသေးပါ (ဤအင်္ဂါရပ်ကို အနာဂတ်ဗားရှင်းများအတွက် စီစဉ်ထားသည်) ထို့ကြောင့် သင့်ကွန်ရက်သည် Jumbo Frames (MTU 9000) ကို ပံ့ပိုးထားပါက MTU ကို configure လုပ်ရန် သေချာပါစေ။

အခြားအရာများထဲတွင်၊ Cilium သည် အများသူငှာ အစုအဝေးများအတွက် အလွန်အရေးကြီးသည့် အစုအဝေးများ (Pods များကြားတွင်သာမက) အကြားအသွားအလာများကို စာဝှက်နိုင်သည်ကို သတိပြုပါ။

နိဂုံးချုပ်အနေဖြင့်၊ ကျွန်ုပ်သည် အောက်ပါအသုံးပြုမှုကိစ္စများကို အကြံပြုအပ်ပါသည်။

  • အလွန်သေးငယ်သောအစုအဝေးတစ်ခုအတွက် CNI လိုအပ်သည် သို့မဟုတ် ကျွန်ုပ်သည် လုံခြုံရေးမလိုအပ်ပါ။: အတူအလုပ်လုပ် Flannelအပေါ့ပါးဆုံးနှင့် အတည်ငြိမ်ဆုံး CNI (သူသည် Homo Kubernautus သို့မဟုတ် Homo Contaitorus မှ တီထွင်ခဲ့သော ဒဏ္ဍာရီအရ အသက်အကြီးဆုံးသူလည်းဖြစ်သည်။) ပညာသားပါပါ ပရောဂျက်ကိုလည်း သင်စိတ်ဝင်စားပေမည်။ k3s, စစ်ဆေး!
  • ပုံမှန်အစုအဖွဲ့တစ်ခုအတွက် CNI လိုအပ်သည်။: Calico - သင်ရွေးချယ်မှုဖြစ်သော်လည်း လိုအပ်ပါက MTU ကို configure လုပ်ရန် မမေ့ပါနှင့်။ သင်သည် ကွန်ရက်မူဝါဒများဖြင့် အလွယ်တကူနှင့် သဘာဝကျကျ ကစားနိုင်သည်၊ ကုဒ်ဝှက်ခြင်းကို အဖွင့်အပိတ်လုပ်ခြင်း စသည်တို့ကို လုပ်ဆောင်နိုင်သည်။
  • ကြီးမားသော အစုအဝေးအတွက် (အလွန်) CNI လိုအပ်သည်။: ကောင်းပြီ၊ စစ်ဆေးမှုသည် ကြီးမားသော အစုအဝေးများ၏ အပြုအမူကို မပြသပါ၊ စမ်းသပ်မှုများ ပြုလုပ်ရသည့်အတွက် ဝမ်းမြောက်မိသော်လည်း ကျွန်ုပ်တို့တွင် 10Gbps ချိတ်ဆက်မှုရှိသော ဆာဗာရာပေါင်းများစွာ မရှိပါ။ ထို့ကြောင့် အကောင်းဆုံးရွေးချယ်မှုမှာ အနည်းဆုံး Calico နှင့် Cilium ဖြင့် သင့် node များပေါ်တွင် ပြုပြင်ထားသော စမ်းသပ်မှုတစ်ခုကို လုပ်ဆောင်ရန်ဖြစ်သည်။

source: www.habr.com

မှတ်ချက် Add