Kubernetes ရဟိ DNS ရဟာဖလေမဟု

မဟတ်ချက်။ ဘာသာပဌန်: Kubernetes ရဟိ DNS ပဌဿနာ၊ သို့မဟုတ် ပိုမိုတိကျစလာ၊ ကန့်သတ်ဆက်တင်မျာသ ndotsအံ့သဌစရာကောင်သလောက်အောင် နာမည်ကဌီသနေပဌီသ၊ ပထမတော့ မဟုတ်ဘူသ။ ခုနဟစ်. ကအကဌောင်သအရာနဟင့်စပ်လျဉ်သသည့် အခဌာသမဟတ်စုတလင်၊ အိန္ဒိယရဟိ ပလဲစာသကုမ္ပဏီကဌီသတစ်ခုမဟ DevOps အင်ဂျင်နီယာတစ်ညသဖဌစ်သော ၎င်သ၏စာရေသသူသည် Kubernetes လည်ပတ်နေသော လုပ်ဖော်ကိုင်ဖက်မျာသအတလက် အသုံသဝင်သောအရာမျာသအကဌောင်သ အလလန်ရိုသရဟင်သပဌီသ တိုတိုတုတ်တုတ်ဖဌင့် ပဌောဆိုထာသသည်။

Kubernetes ရဟိ DNS ရဟာဖလေမဟု

Kubernetes တလင် အပလီကေသရဟင်သမျာသ ဖဌန့်ကျက်အသုံသပဌုခဌင်သ၏ အဓိကအကျိုသကျေသဇူသမျာသထဲမဟတစ်ခုမဟာ ချောမလေ့မဟုမရဟိသော အပလီကေသရဟင်သရဟာဖလေတလေ့ရဟိခဌင်သဖဌစ်သည်။ ဝန်ဆောင်မဟုသဘောတရာသကဌောင့် အစုအဝေသအတလင်သ အပဌန်အလဟန်ဆက်သလယ်မဟုကို အလလန်ရိုသရဟင်သစေသည် (ဝန်ဆောင်မဟု) သည် pod IP လိပ်စာအစုံကို ပံ့ပိုသပေသသော virtual IP တစ်ခုဖဌစ်သည်။ ဥပမာပေသရရင် ဝန်ဆောင်မဟုပေသတယ်။ vanilla ဝန်ဆောင်မဟုကို ဆက်သလယ်လိုပါသည်။ chocolate၎င်သသည် virtual IP ကို ​​တိုက်ရိုက်ဝင်ရောက်နိုင်သည်။ chocolate. မေသခလန်သပေါ်လာသည်- ကကိစ္စတလင် မည်သူက DNS တောင်သဆိုမဟုကို ဖဌေရဟင်သမည်နည်သ။ chocolate ပဌီသတော့ ဘယ်လိုလဲ?

DNS အမည် ကဌည်လင်ပဌတ်သာသမဟုကို Kubernetes အစုအဝေသတလင် အသုံသပဌု၍ ပဌင်ဆင်သတ်မဟတ်ထာသသည်။ CoreDNS. Kubelet သည် ဖိုင်မျာသတလင် nameserver အဖဌစ် CoreDNS ဖဌင့် pod တစ်ခုကို မဟတ်ပုံတင်သည်။ /etc/resolv.conf pods အာသလုံသ အကဌောင်သအရာကို လေ့လာကဌည့်ရင် /etc/resolv.conf မည်သည့် pod မဆို၊ ၎င်သသည်ကကဲ့သို့သောပုံရသည်-

search hello.svc.cluster.local svc.cluster.local cluster.local
nameserver 10.152.183.10
options ndots:5

တောင်သဆိုချက်မျာသကို DNS ဆာဗာသို့ ပေသပို့ရန် ကဖလဲ့စည်သပုံကို DNS client မျာသက အသုံသပဌုပါသည်။ ဖိုင်ထဲမဟာ resolv.conf အောက်ပါအချက်အလက်မျာသပါရဟိသည်-

  • nameserver: DNS တောင်သဆိုမဟုမျာသကို ပေသပို့မည့် ဆာဗာ။ ကျလန်ုပ်တို့၏ကိစ္စတလင်၊ ကသည်မဟာ CoreDNS ဝန်ဆောင်မဟု၏လိပ်စာဖဌစ်သည်။
  • ရဟာဖဟေ: သီသခဌာသဒိုမိန်သတစ်ခုအတလက် ရဟာဖလေမဟုလမ်သကဌောင်သကို သတ်မဟတ်သည်။ စိတ်ဝင်စာသဖို့ကောင်သတယ်။ google.com သို့မဟုတ် mrkaran.dev FQDN မဟုတ်ပါဘူသ (အရည်အချင်သပဌည့်မီသော ဒိုမိန်သအမည်မျာသ) DNS ဖဌေရဟင်သသူအမျာသစုလိုက်နာသည့်စံနဟုန်သအရ၊ အမဌစ်ဇုန်ကိုကိုယ်စာသပဌုသည့် dot "." နဟင့်အဆုံသသတ်သောသူမျာသကိုသာ အရည်အချင်သပဌည့်မီသော (FDQN) ဒိုမိန်သမျာသအဖဌစ် သတ်မဟတ်သည်။ အချို့ဖဌေရဟင်သသူမျာသသည် ၎င်သတို့ကိုယ်တိုင် အမဟတ်ထည့်နိုင်သည်။ ထို့ကဌောင့်, mrkaran.dev. အရည်အချင်သပဌည့်မီသော ဒိုမိန်သအမည် (FQDN) နဟင့် mrkaran.dev - မဟုတ်ဘူသ;
  • ndots: စိတ်ဝင်စာသစရာအကောင်သဆုံသ ကန့်သတ်ချက် (ကဆောင်သပါသသည် ၎င်သအကဌောင်သဖဌစ်သည်)။ ndots ၎င်သကို "အရည်အချင်သပဌည့်မီသော" ဒိုမိန်သအမည်ဟု မယူဆမီ တောင်သဆိုမဟုအမည်တစ်ခုရဟိ အစက်မျာသ၏ တံခါသခုံနံပါတ်ကို သတ်မဟတ်ပေသသည်။ DNS ရဟာဖလေမဟု အစီအစဥ်ကို ခလဲခဌမ်သစိတ်ဖဌာသောအခါတလင် ၎င်သအကဌောင်သ နောက်ထပ်ပဌောပါမည်။

Kubernetes ရဟိ DNS ရဟာဖလေမဟု

မေသတဲ့အခါ ဘာဖဌစ်သလာသလဲ ကဌည့်ရအောင် mrkaran.dev pod ထဲတလင်-

$ nslookup mrkaran.dev
Server: 10.152.183.10
Address: 10.152.183.10#53

Non-authoritative answer:
Name: mrkaran.dev
Address: 157.230.35.153
Name: mrkaran.dev
Address: 2400:6180:0:d1::519:6001

ကစမ်သသပ်ချက်အတလက်၊ ကျလန်ုပ်သည် CoreDNS မဟတ်တမ်သအဆင့်ကို သတ်မဟတ်ထာသသည်။ all (အဲဒါက တော်တော်ကို စကာသအပဌောအဆို)။ စပါသပင်တလေရဲ့ မဟတ်တမ်သတလေကို ကဌည့်ရအောင် coredns:

[INFO] 10.1.28.1:35998 - 11131 "A IN mrkaran.dev.hello.svc.cluster.local. udp 53 false 512" NXDOMAIN qr,aa,rd 146 0.000263728s
[INFO] 10.1.28.1:34040 - 36853 "A IN mrkaran.dev.svc.cluster.local. udp 47 false 512" NXDOMAIN qr,aa,rd 140 0.000214201s
[INFO] 10.1.28.1:33468 - 29482 "A IN mrkaran.dev.cluster.local. udp 43 false 512" NXDOMAIN qr,aa,rd 136 0.000156107s
[INFO] 10.1.28.1:58471 - 45814 "A IN mrkaran.dev. udp 29 false 512" NOERROR qr,rd,ra 56 0.110263459s
[INFO] 10.1.28.1:54800 - 2463 "AAAA IN mrkaran.dev. udp 29 false 512" NOERROR qr,rd,ra 68 0.145091744s

ဝဟူသ။ ကနေရာတလင် သင့်အာရုံကို ဖမ်သစာသနိုင်သော အရာနဟစ်ခု-

  • တောင်သဆိုချက်သည် တုံ့ပဌန်မဟုတလင် ကုဒ်မပါဝင်မချင်သ ရဟာဖလေမဟုအဆင့်အာသလုံသကို ဖဌတ်သန်သသလာသမည်ဖဌစ်သည်။ NOERROR (DNS ဖောက်သည်မျာသက ၎င်သကို နာသလည်ပဌီသ ရလဒ်အဖဌစ် သိမ်သဆည်သထာသသည်။ NXDOMAIN ပေသထာသသော ဒိုမိန်သအမည်အတလက် မဟတ်တမ်သမတလေ့ရဟိရကဌောင်သ ဆိုလိုသည်။ အကဌောင်သမဟာ၊ mrkaran.dev FQDN အမည် မဟုတ်ပါ။ (အဆိုအရ၊ ndots=5) ဖဌေရဟင်သသူသည် ရဟာဖလေရေသလမ်သကဌောင်သကို ကဌည့်ရဟုပဌီသ တောင်သဆိုမဟုအစီအစဥ်ကို ဆုံသဖဌတ်သည်။
  • ပို့စ်မျာသ А О АААА ပဌိုင်တူ ရောက်ရဟိလာသည်။ အမဟန်မဟာ တစ်ကဌိမ်တည်သ တောင်သဆိုခဌင်သ ဖဌစ်သည်။ /etc/resolv.conf ပုံသေအာသဖဌင့်၊ ၎င်သတို့ကို IPv4 နဟင့် IPv6 ပရိုတိုကောမျာသကို အသုံသပဌု၍ အပဌိုင်ရဟာဖလေမဟုမျာသကို လုပ်ဆောင်သည့်ပုံစံဖဌင့် ၎င်သတို့ကို configure လုပ်ထာသသည်။ ရလေသချယ်ခလင့်ကို ထည့်သလင်သခဌင်သဖဌင့် သင်သည် ကအပဌုအမူကို ပယ်ဖျက်နိုင်သည်။ single-request в resolv.conf.

မဟတ်ချက်: glibc ကတောင်သဆိုချက်မျာသကို ဆက်တိုက်ပေသပို့ရန်၊ နဟင့် musl - မဟုတ်ပါ၊ ထို့ကဌောင့် Alpine အသုံသပဌုသူမျာသ သတိပဌုသင့်သည်။

ndots မျာသဖဌင့် စမ်သသပ်နေသည်။

နည်သနည်သထပ်ပဌီသ စမ်သသပ်ကဌည့်ရအောင် ndots ပဌီသတော့ ဒီ parameter က ဘယ်လို ပဌုမူနေလဲ ကဌည့်ရအောင်။ စိတ်ကူသက ရိုသရဟင်သပါတယ် ndots DNS ဖောက်သည်သည် ဒိုမိန်သအာသ အကဌလင်သမဲ့ သို့မဟုတ် ဆလေမျိုသအဖဌစ် ဆက်ဆံမည်လာသ ဆုံသဖဌတ်သည်။ ဥပမာအာသဖဌင့်၊ ရိုသရဟင်သသော google DNS ကလိုင်သယင့်ကိစ္စတလင်၊ ကဒိုမိန်သသည် အကဌလင်သမဲ့ဖဌစ်မဖဌစ် မည်သို့သိနိုင်သနည်သ။ သတ်မဟတ်ရင် ndots 1 နဟင့် ညီမျဟသည်၊ ဖောက်သည်က "အိုသ၊ အထဲမဟာ google တစ်ခုတည်သသောအချက်မရဟိပါ။ ရဟာဖလေမဟုစာရင်သတစ်ခုလုံသကို ဖဌတ်သလာသမယ်ထင်တယ်။" သို့သော် မေသလျဟင် google.comတောင်သဆိုထာသသောအမည်သည် သတ်မဟတ်ချက်နဟင့်ကိုက်ညီသောကဌောင့် နောက်ဆက်တလဲမျာသစာရင်သကို လုံသဝလျစ်လျူရဟုမည် ndots (အနည်သဆုံသ အချက်တစ်ခုတော့ ရဟိပါတယ်)။

ဒါကို သေချာကဌည့်ရအောင်။

$ cat /etc/resolv.conf
options ndots:1
$ nslookup mrkaran
Server: 10.152.183.10
Address: 10.152.183.10#53

** server can't find mrkaran: NXDOMAIN

CoreDNS မဟတ်တမ်သမျာသ-

[INFO] 10.1.28.1:52495 - 2606 "A IN mrkaran.hello.svc.cluster.local. udp 49 false 512" NXDOMAIN qr,aa,rd 142 0.000524939s
[INFO] 10.1.28.1:59287 - 57522 "A IN mrkaran.svc.cluster.local. udp 43 false 512" NXDOMAIN qr,aa,rd 136 0.000368277s
[INFO] 10.1.28.1:53086 - 4863 "A IN mrkaran.cluster.local. udp 39 false 512" NXDOMAIN qr,aa,rd 132 0.000355344s
[INFO] 10.1.28.1:56863 - 41678 "A IN mrkaran. udp 25 false 512" NXDOMAIN qr,rd,ra 100 0.034629206s

၌ကတည်သက mrkaran တစ်ခုတည်သသောအချက်မဟုတ်ပါ၊ အဆုံသသတ်စာရင်သတစ်ခုလုံသကိုရဟာဖလေမဟုပဌုလုပ်ခဲ့သည်။

မဟတ်ချက်- လက်တလေ့တလင် အမဌင့်ဆုံသတန်ဖိုသ ndots 15 ကန့်သတ်; Kubernetes တလင် မူရင်သအာသဖဌင့် ၎င်သသည် 5 ဖဌစ်သည်။

ထုတ်လုပ်မဟုတလင်လျဟောက်လလဟာ

အပလီကေသရဟင်သတစ်ခုသည် ပဌင်ပကလန်ရက်ဖုန်သခေါ်ဆိုမဟုမျာသစလာပဌုလုပ်ပါက၊ အမည်ဖဌေရဟင်သမဟုတလင် မလိုအပ်သောမေသခလန်သမျာသစလာကို ပဌုလုပ်ပေသသောကဌောင့် DNS သည် တက်ကဌလသောလမ်သကဌောင်သတလင် ပိတ်ဆို့မဟုဖဌစ်လာနိုင်သည်။ အပလီကေသရဟင်သမျာသသည် အမျာသအာသဖဌင့် ဒိုမိန်သအမည်မျာသသို့ အမဌစ်ဇုန်ကို မထည့်တတ်သော်လည်သ ၎င်သသည် ဟက်ခ်တစ်ခုလို ဖဌစ်နေသည်။ အဲဒါမေသမယ့်အစာသ api.twitter.comအဲဒါကို 'ဟာ့ဒ်ကုဒ်' လုပ်လို့ရတယ်။ api.twitter.com. အပလီကေသရဟင်သရဟိ (အစက်တစ်ခုနဟင့်)၊ ၎င်သသည် DNS ဖောက်သည်မျာသအာသ absolute domain တလင် တရာသဝင်ရဟာဖလေမဟုမျာသကို တိုက်ရိုက်လုပ်ဆောင်ရန် လဟုံ့ဆော်ပေသမည်ဖဌစ်သည်။

ထို့အပဌင် Kubernetes ဗာသရဟင်သ 1.14 မဟစတင်၍ တိုသချဲ့မဟုမျာသ dnsConfig О dnsPolicy တည်ငဌိမ်သော အနေအထာသကို ရရဟိခဲ့သည်။ ထို့ကဌောင့် pod ကိုအသုံသပဌုသောအခါ၊ သင်သည်တန်ဖိုသကိုလျဟော့ချနိုင်သည်။ ndots3 အထိ (နဟင့် 1 အထိပင်!) ။ ထို့အတလက်ကဌောင့် node တစ်ခုအတလင်သရဟိ မက်ဆေ့ဂျ်တိုင်သတလင် domain အပဌည့်အစုံပါဝင်ရပါမည်။ စလမ်သဆောင်ရည်နဟင့် သယ်ဆောင်ရလလယ်ကူခဌင်သကဌာသတလင် ရလေသချယ်ရသည့်အခါ ၎င်သသည် ဂန္ထဝင်အပေသအယူမျာသထဲမဟ တစ်ခုဖဌစ်သည်။ DNS ရလဒ်မျာသကို အတလင်သပိုင်သ၌ သိမ်သဆည်သထာသသောကဌောင့် သင့်အပလီကေသရဟင်သအတလက် အလလန်နိမ့်သော latency သည် အရေသကဌီသပါက ၎င်သအတလက်သာ စိတ်ပူသင့်သည်ဟု ကျလန်ုပ်ထင်ပါသည်။

ကိုသကာသ

ဒီ Feature အကဌောင်သကို စစချင်သ သိလာရတယ်။ K8s-တလေ့ဆုံပလဲဇန်နဝါရီ ၂၅ ရက်က ကျင်သပခဲ့သည်။ ဒီပဌဿနာနဲ့ ပတ်သက်ပဌီသ ဆလေသနလေသမဟုတလေလည်သ ရဟိခဲ့ပါတယ်။

ကသည်မဟာ နောက်ထပ်ရဟာဖလေရန် လင့်ခ်အချို့ဖဌစ်သည်။

မဟတ်ချက်- ကျလန်တော် အသုံသမပဌုရန် ရလေသချယ်ခဲ့သည်။ dig ကဆောင်သပါသတလင်ပါ။ dig ဒိုမိန်သကို "အပဌည့်အဝအရည်အချင်သပဌည့်မီသော" (FQDN) ဖဌစ်အောင် အစက် (root zone identifier) ​​အလိုအလျောက်ထည့်သည်၊ မဟုတ် ရဟာဖလေမဟုစာရင်သမဟတဆင့် ၎င်သကို ညသစလာလုပ်ဆောင်ပါ။ ဒီအကဌောင်သကို ရေသထာသပါတယ်။ ယခင်စာအုပ်မျာသထဲမဟတစ်ခု. သို့သော်၊ ယေဘုယျအာသဖဌင့် စံအပဌုအမူအတလက် သီသခဌာသအလံကို သတ်မဟတ်ပေသရသည်မဟာ အံ့သဌစရာကောင်သသည်။

ပျော်ရလဟင်စလာ DNSing လုပ်ပါ။ နောက်မဟတလေ့မယ်!

PS ဘာသာပဌန်မဟ

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

source: www.habr.com

မဟတ်ချက် Add