Istio နဟင့် Kubernetes တို့ကို ထုတ်လုပ်နေသည်။ အပိုင်သ ၂။ ခဌေရာခံခဌင်သ။

နောက်ဆုံသ၌ ဆောင်သပါသ ကျလန်ုပ်တို့သည် Service Mesh Istio ၏ အခဌေခံ အစိတ်အပိုင်သမျာသကို ကဌည့်ရဟုခဲ့ပဌီသ၊ စနစ်နဟင့် သိကျလမ်သခဲ့ပဌီသ Istio နဟင့် စတင်လုပ်ဆောင်သောအခါတလင် ပေါ်ပေါက်လေ့ရဟိသည့် အဓိကမေသခလန်သမျာသကို ဖဌေခဲ့သည်။ ကအပိုင်သတလင် ကျလန်ုပ်တို့သည် ကလန်ရက်တစ်ခုပေါ်ရဟိ ခဌေရာခံအချက်အလက် စုဆောင်သပုံကို စုစည်သပုံကို ကဌည့်ရဟုပါမည်။

Istio နဟင့် Kubernetes တို့ကို ထုတ်လုပ်နေသည်။ အပိုင်သ ၂။ ခဌေရာခံခဌင်သ။

Service Mesh သည် ခဌေရာခံခဌင်သဟူသော စကာသလုံသကို ကဌာသသောအခါတလင် developer မျာသနဟင့် system administrator အမျာသအပဌာသအတလက် သတိပဌုမိရမည့်အချက်မဟာ ပထမဆုံသအချက်ဖဌစ်သည်။ အမဟန်မဟာ၊ ကျလန်ုပ်တို့သည် TCP အသလာသအလာအာသလုံသကိုဖဌတ်သန်သသော network node တစ်ခုစီသို့ အထူသ proxy server တစ်ခုကို ပေါင်သထည့်ပါသည်။ ကလန်ရက်ပေါ်ရဟိ ကလန်ရက် အပဌန်အလဟန်ဆက်သလယ်မဟုမျာသအာသလုံသကို ယခု အလလယ်တကူ ပေသပို့နိုင်ပဌီဟု ထင်ရသည်။ ကံမကောင်သစလာပဲ၊ လက်တလေ့တလင် ထည့်သလင်သစဉ်သစာသရန် လိုအပ်သော nuances မျာသစလာရဟိသည်။ သူတို့ကိုကဌည့်ရအောင်။

နံပါတ်တစ် အယူအဆမဟာသ- အလန်လိုင်သတောင်တက်ခဌင်သဒေတာကို အခမဲ့ရနိုင်သည် ။

တကယ်တော့၊ အခမဲ့ဖဌစ်ပဌီသ၊ မဌဟာသမျာသဖဌင့် ချိတ်ဆက်ထာသသော ကျလန်ုပ်တို့၏စနစ်၏ node မျာသနဟင့် ဝန်ဆောင်မဟုမျာသကဌာသတလင်ဖဌတ်သန်သသော ဒေတာနဟုန်သထာသမျာသကိုသာ ရနိုင်သည် (တကယ်တော့ အချိန်တစ်ယူနစ်လျဟင် bytes အရေအတလက်သာ)။ သို့သော်လည်သ၊ ကိစ္စအမျာသစုတလင်၊ ကျလန်ုပ်တို့၏ဝန်ဆောင်မဟုမျာသသည် HTTP၊ gRPC၊ Redis ကဲ့သို့သော အပလီကေသရဟင်သအလလဟာပရိုတိုကော အမျိုသအစာသအချို့နဟင့် ဆက်သလယ်သည်။ ထို့အပဌင်၊ ကျလန်ုပ်တို့သည် ကပရိုတိုကောမျာသအတလက် အထူသခဌေရာခံအချက်အလက်ကို မဌင်လိုသည်၊ ကျလန်ုပ်တို့သည် တောင်သဆိုမဟုနဟုန်သ၊ ဒေတာနဟုန်သကို မကဌည့်လိုပါ။ ကျလန်ုပ်တို့၏ ပရိုတိုကောကို အသုံသပဌု၍ တောင်သဆိုမဟုမျာသ၏ ကဌာမဌင့်ချိန်ကို နာသလည်လိုပါသည်။ နောက်ဆုံသတလင်၊ ကျလန်ုပ်တို့သည် သုံသစလဲသူထံမဟ တုံ့ပဌန်မဟုကို လက်ခံရရဟိရန် ကျလန်ုပ်တို့၏စနစ်သို့ ဝင်ရောက်ခဌင်သမဟ တောင်သဆိုချက်တစ်ခုရယူသည့် လမ်သကဌောင်သအပဌည့်အစုံကို ကျလန်ုပ်တို့ မဌင်တလေ့လိုပါသည်။ ဒီပဌဿနာက ဖဌေရဟင်သဖို့ သိပ်မလလယ်တော့ဘူသ။

ညသစလာ၊ Istio ရဟိ ဗိသုကာလက်ရာရဟုထောင့်မဟ ပေသပို့သည့် ခဌေရာခံအကလာအဝေသမျာသကို ကဌည့်ကဌပါစို့။ ပထမအပိုင်သမဟ မဟတ်မိသည့်အတိုင်သ Istio တလင် telemetry စုဆောင်သရန်အတလက် Mixer ဟုခေါ်သော သီသခဌာသအစိတ်အပိုင်သတစ်ခုရဟိသည်။ သို့သော်လည်သ လက်ရဟိဗာသရဟင်သ 1.0.* တလင်၊ ပေသပို့ခဌင်သကို ပရောက်စီဆာဗာမျာသမဟ တိုက်ရိုက်လုပ်ဆောင်သည်၊ အတိအကျပဌောရလျဟင် envoy proxy မဟဖဌစ်သည်။ Envoy proxy သည် zipkin ပရိုတိုကောကို အသုံသပဌု၍ ခဌေရာခံခဌင်သအပိုင်သမျာသကို ဘောင်အတလင်သမဟ ပေသပို့ခဌင်သကို ပံ့ပိုသပေသပါသည်။ အခဌာသပရိုတိုကောမျာသကို ချိတ်ဆက်နိုင်သော်လည်သ plugin တစ်ခုမဟသာလျဟင် ချိတ်ဆက်နိုင်သည်။ Istio ဖဌင့် ကျလန်ုပ်တို့သည် ဇစ်ကင်ပရိုတိုကောကိုသာ ပံ့ပိုသပေသသည့် စုဝေသပဌီသ ဖလဲ့စည်သထာသသော အထူသကိုယ်စာသလဟယ် ပရောက်စီကို ချက်ချင်သရရဟိသည်။ ဥပမာအာသဖဌင့်၊ ကျလန်ုပ်တို့သည် Jaeger ပရိုတိုကောကိုအသုံသပဌုပဌီသ UDP မဟတစ်ဆင့် ခဌေရာခံခဌင်သအပိုင်သမျာသကို ပေသပို့လိုပါက၊ ကျလန်ုပ်တို့၏ကိုယ်ပိုင် istio-proxy ပုံကို တည်ဆောက်ရန် လိုအပ်ပါသည်။ istio-proxy အတလက် စိတ်ကဌိုက် plugins မျာသအတလက် ပံ့ပိုသမဟု ရဟိသော်လည်သ ၎င်သသည် alpha ဗာသရဟင်သတလင် ရဟိနေသေသသည်။ ထို့ကဌောင့်၊ ကျလန်ုပ်တို့သည် စိတ်ကဌိုက်ဆက်တင်အမျာသအပဌာသမပါဘဲ လုပ်ဆောင်လိုပါက၊ သိမ်သဆည်သခဌင်သနဟင့် လက်ခံခဌင်သအတလက် အသုံသပဌုသည့်နည်သပညာအကလာအဝေသကို ခဌေရာခံခဌင်သအပိုင်သမျာသကို လျဟော့ချမည်ဖဌစ်သည်။ ပင်မစနစ်မျာသ၏ အမဟန်တကယ်တလင်၊ ယခု သင်သည် Zipkin ကိုယ်တိုင် သို့မဟုတ် Jaeger ကို သုံသနိုင်သော်လည်သ (အလလန်ထိရောက်မဟုနည်သသည့် zipkin သဟဇာတဖဌစ်မဟု) ကို အသုံသပဌု၍ ထိုအရာအာသလုံသကို ပေသပို့ပါ။ zipkin ပရိုတိုကောကိုယ်တိုင်က HTTP ပရိုတိုကောမဟတစ်ဆင့် စုဆောင်သသူမျာသထံ ခဌေရာခံအချက်အလက်အာသလုံသကို ပေသပို့ခဌင်သပါ၀င်ပဌီသ အလလန်စျေသကဌီသသည်။

ငါပဌောပဌီသသာသအတိုင်သ၊ ကျလန်ုပ်တို့သည် အပလီကေသရဟင်သအဆင့် ပရိုတိုကောမျာသကို ခဌေရာခံလိုပါသည်။ ဆိုလိုသည်မဟာ ဝန်ဆောင်မဟုတစ်ခုစီ၏ဘေသတလင်ရဟိသော ပရောက်စီဆာဗာမျာသသည် ယခုဖဌစ်ပျက်နေသည့် အပဌန်အလဟန်တုံ့ပဌန်မဟုမျိုသကို နာသလည်ရမည်ဖဌစ်သည်။ မူရင်သအာသဖဌင့် Istio သည် ဆိပ်ကမ်သအာသလုံသကို ရိုသရိုသ TCP အဖဌစ် သတ်မဟတ်ပေသသည်၊ ဆိုလိုသည်မဟာ ခဌေရာမျာသကို ပို့မည်မဟုတ်ပါ။ သဲလလန်စမျာသ ပေသပို့နိုင်ရန်၊ ပထမညသစလာ သင်သည် ပင်မ mesh config တလင် ကရလေသချယ်ခလင့်ကို ဖလင့်ထာသရမည်ဖဌစ်ပဌီသ၊ အလလန်အရေသကဌီသသည်မဟာ ဝန်ဆောင်မဟုတလင် အသုံသပဌုသည့် ပရိုတိုကောနဟင့်အညီ kubernetes ဝန်ဆောင်မဟု entities အာသလုံသကို နာမည်ပေသရပါမည်။ ဥပမာအာသဖဌင့် ကကဲ့သို့ဖဌစ်သည်-

apiVersion: v1
kind: Service
metadata:
  name: nginx
spec:
  ports:
  - port: 80
    targetPort: 80
    name: http
  selector:
    app: nginx

http-magic ကဲ့သို့သော ပေါင်သစပ်အမည်မျာသကိုလည်သ အသုံသပဌုနိုင်ပါသည်။ ဖော်မတ်မဟာ- ပရိုတို-အပို။

ပရိုတိုကောကို ဆုံသဖဌတ်ရန် မျာသပဌာသလဟသော ဖလဲ့စည်သမဟုပုံစံမျာသကို ဖာထေသခဌင်သမပဌုရန်၊ ညစ်ပတ်သောဖဌေရဟင်သနည်သကို သင်အသုံသပဌုနိုင်သည်- ၎င်သသည် ယခုအချိန်တလင် Pilot အစိတ်အပိုင်သကို ဖာထေသရန် ပရိုတိုကော အဓိပ္ပါယ် ယုတ္တိဗေဒကို လုပ်ဆောင်သည်။. အဆုံသတလင်၊ ကယုတ္တိဗေဒကို စံအဖဌစ်ပဌောင်သရန်နဟင့် ဆိပ်ကမ်သအာသလုံသအတလက် အမည်ပေသသည့်ကလန်ဗင်သရဟင်သတစ်ခုသို့ ပဌောင်သရန် လိုအပ်မည်ဖဌစ်သည်။

ပရိုတိုကောကို အမဟန်တကယ် မဟန်ကန်စလာ သတ်မဟတ်ခဌင်သ ရဟိ၊ မရဟိ နာသလည်နိုင်ရန်၊ သင်သည် အထူသပရောက်စီဖဌင့် ဘေသတလဲကလန်တိန်နာ တစ်ခုခုသို့ သလာသကာ တည်နေရာ /config_dump ဖဌင့် တည်နေရာ/config_dump ၏ စီမံခန့်ခလဲသူ ဆိပ်ကမ်သသို့ တောင်သဆိုချက် ပဌုလုပ်ရန် လိုအပ်ပါသည်။ ရလဒ် configuration တလင်၊ သင်အလိုရဟိသောဝန်ဆောင်မဟု၏လည်ပတ်မဟုအကလက်ကိုကဌည့်ရဟုရန်လိုအပ်သည်။ တောင်သဆိုသည့်နေရာအတလက် Istio တလင် ၎င်သကို အသုံသပဌုသည်။ Istio တလင် ကပါရာမီတာ၏တန်ဖိုသကို စိတ်ကဌိုက်ပဌင်ဆင်ရန်အတလက် (ထို့နောက် ကျလန်ုပ်တို့၏ခဌေရာခံစနစ်တလင် ၎င်သကိုတလေ့လိမ့်မည်)၊ ဘေသတလဲကလန်တိန်နာကို စတင်သည့်အဆင့်တလင် serviceCluster အလံကို သတ်မဟတ်ရန် လိုအပ်ပါသည်။ ဥပမာအာသဖဌင့်၊ ၎င်သကို downward kubernetes API မဟရရဟိသော variable မျာသမဟ ကကဲ့သို့ တလက်ချက်နိုင်သည်။

--serviceCluster ${POD_NAMESPACE}.$(echo ${POD_NAME} | sed -e 's/-[a-z0-9]*-[a-z0-9]*$//g')

သံတမန်တလင် ခဌေရာခံခဌင်သ မည်သို့လုပ်ဆောင်သည်ကို နာသလည်ရန် ဥပမာကောင်သတစ်ခုဖဌစ်သည်။ ဒီမဟာ.

ခဌေရာခံ အပိုင်သမျာသ ပေသပို့ခဌင်သအတလက် အဆုံသမဟတ်ကို သံတမန် ပရောက်စီ လလဟင့်တင်မဟု အလံမျာသတလင်လည်သ သတ်မဟတ်ပေသရမည်၊ ဥပမာ- --zipkinAddress tracing-collector.tracing:9411

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

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

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

  • x-request-id၊
  • x-b3-traceid၊
  • x-b3-စပိန်၊
  • x-b3-parentspanid၊
  • x-b3-နမူနာ၊
  • x-b3-အလံမျာသ၊
  • x-ot-span-context။

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

ကောက်ချက်

Istio သည် ကလန်ရက်တစ်ခုပေါ်ရဟိ ခဌေရာခံအချက်အလက်မျာသကို စုဆောင်သရန်အတလက် အဆင်ပဌေသောကိရိယာကို ပံ့ပိုသပေသသည်၊ သို့သော် အကောင်အထည်ဖော်ရန်အတလက် သင်သည် သင်၏စနစ်အာသ လိုက်လျောညီထလေဖဌစ်အောင်လုပ်ဆောင်ပဌီသ Istio အကောင်အထည်ဖော်မဟု၏အင်္ဂါရပ်မျာသကို ထည့်သလင်သစဉ်သစာသရန် လိုအပ်ကဌောင်သ သင်နာသလည်ထာသရပါမည်။ ရလဒ်အနေဖဌင့် အဓိကအချက်နဟစ်ချက်ကို ဖဌေရဟင်သရန် လိုအပ်သည်- အပလီကေသရဟင်သအဆင့်ပရိုတိုကောကို သတ်မဟတ်ခဌင်သ (သံတမန် proxy မဟ ပံ့ပိုသပေသရမည်) နဟင့် ဝန်ဆောင်မဟုမဟ တောင်သဆိုချက်မျာသမဟ ဝန်ဆောင်မဟုသို့ တောင်သဆိုချက်မျာသနဟင့် ချိတ်ဆက်မဟုဆိုင်ရာ အချက်အလက်မျာသ ထပ်ဆင့်ပေသပို့ခဌင်သတို့ကို သတ်မဟတ်ခဌင်သ (ခေါင်သစီသမျာသကို အသုံသပဌုခဌင်သ။ HTTP ပရိုတိုကော) တလင်၊ ကပဌဿနာမျာသကိုဖဌေရဟင်သပဌီသသောအခါ၊ ကျလန်ုပ်တို့တလင် မတူညီသောဘာသာစကာသမျာသနဟင့် မူဘောင်မျာသစလာဖဌင့် ရေသသာသထာသသော အလလန်ကလဲပဌာသသောကလဲပဌာသသည့်စနစ်မျာသတလင်ပင် ကလန်ရက်မဟသတင်သအချက်အလက်မျာသကို ပလင့်လင်သမဌင်သာစလာစုဆောင်သနိုင်စေမည့် အစလမ်သထက်သောကိရိယာတစ်ခုရဟိသည်။

Service Mesh နဟင့်ပတ်သက်သော နောက်ဆောင်သပါသတလင်၊ Istio ၏ အကဌီသမာသဆုံသ ပဌဿနာမျာသထဲမဟ တစ်ခုကို လေ့လာကဌည့်ပါမည် - sidecar proxy container တစ်ခုစီမဟ RAM သုံသစလဲမဟု မျာသပဌာသပဌီသ ၎င်သကို မည်သို့ကိုင်တလယ်ဖဌေရဟင်သနိုင်သည်ကို ဆလေသနလေသပါမည်။

source: www.habr.com

မဟတ်ချက် Add