Kubernetes pods အတွက် /etc/resolv.conf၊ ndots:5 ရွေးချယ်ခွင့်၊ ၎င်းသည် အက်ပ်၏စွမ်းဆောင်ရည်ကို မည်ကဲ့သို့ ထိခိုက်စေနိုင်သည်

Kubernetes pods အတွက် /etc/resolv.conf၊ ndots:5 ရွေးချယ်ခွင့်၊ ၎င်းသည် အက်ပ်၏စွမ်းဆောင်ရည်ကို မည်ကဲ့သို့ ထိခိုက်စေနိုင်သည်

Kops ကို အသုံးပြု၍ AWS တွင် Kubernetes 1.9 ကို မကြာသေးမီက စတင်ခဲ့သည်။ မနေ့က၊ ကျွန်ုပ်တို့၏ Kubernetes အစုအဝေးကြီးများသို့ အသွားအလာအသစ်များကို ချောမွေ့စွာ ထုတ်ပေးနေစဉ်တွင်၊ ကျွန်ုပ်တို့၏ အပလီကေးရှင်းမှ ပုံမှန်မဟုတ်သော DNS အမည်ဖြေရှင်းခြင်းဆိုင်ရာ အမှားအယွင်းများကို သတိပြုမိလာသည်။

GitHub မှာ ဒီအကြောင်းတွေ အများကြီးရှိပါတယ်။ ပြောတယ်ဒါကြောင့် ကျွန်တော်လည်း ဒါကို ရှင်းဖို့ ဆုံးဖြတ်လိုက်တယ်။ အဆုံးတွင်၊ ကျွန်ုပ်တို့၏ကိစ္စတွင်၊ ၎င်းသည်အပေါ်ဝန်တိုးလာခြင်းကြောင့်ဖြစ်သည်ကိုကျွန်ုပ်သဘောပေါက်ခဲ့သည်။ kube-dns и dnsmasq. ကျွန်ုပ်အတွက် စိတ်ဝင်စားစရာအကောင်းဆုံးနှင့် အသစ်အဆန်းမှာ DNS တောင်းဆိုမှု အသွားအလာ သိသိသာသာ တိုးလာရခြင်း၏ အကြောင်းရင်းဖြစ်သည်။ ကျွန်တော့်ရဲ့ ပို့စ်က ဒီအကြောင်းနဲ့ ပတ်သက်ပြီး ဘာလုပ်ရမလဲ။

ကွန်တိန်နာအတွင်းရှိ DNS ကြည်လင်ပြတ်သားမှုကို - မည်သည့် Linux စနစ်တွင်မဆို - ဖွဲ့စည်းမှုပုံစံဖိုင်ဖြင့် ဆုံးဖြတ်သည်။ /etc/resolv.conf. မူရင်း Kubernetes dnsPolicy က ClusterFirstဆိုလိုသည်မှာ မည်သည့် DNS တောင်းဆိုမှုကိုမဆို ထပ်ဆင့်ပေးပို့မည်ဖြစ်သည်။ dnsmasqအိုးထဲတွင် ပြေးနေသည်။ kube-dns အစုအဝေးအတွင်း၌၊ ၎င်းသည် အလှည့်ကျ တောင်းဆိုချက်ကို အပလီကေးရှင်းသို့ ပေးပို့မည်ဖြစ်သည်။ kube-dnsအကယ်၍ အမည်သည် အစုအဝေး၏ နောက်ဆက်တွဲဖြင့် အဆုံးသတ်ပါက သို့မဟုတ်၊ သို့မဟုတ်ပါက၊ ပိုမိုမြင့်မားသောအဆင့် DNS ဆာဗာသို့။

ဖိုင် /etc/resolv.conf ကွန်တိန်နာတစ်ခုစီအတွင်းတွင် ပုံသေသည် ဤကဲ့သို့ဖြစ်နေလိမ့်မည်-

nameserver 100.64.0.10
search namespace.svc.cluster.local svc.cluster.local cluster.local 
eu-west-1.compute.internal
options ndots:5

သင်တွေ့မြင်ရသည့်အတိုင်း၊ ညွှန်ကြားချက်သုံးခုရှိသည်။

  1. အမည်ဆာဗာသည် ဝန်ဆောင်မှု၏ IP ဖြစ်သည်။ kube-dns
  2. ဒေသန္တရရှာဖွေရေးဒိုမိန်း 4 ခု သတ်မှတ်ထားသည်။ search
  3. ရွေးချယ်ခွင့်ရှိပါတယ်။ ndots:5

ဤဖွဲ့စည်းပုံ၏ စိတ်ဝင်စားဖွယ်အပိုင်းမှာ ဒေသတွင်း ရှာဖွေမှု ဒိုမိန်းများနှင့် ဆက်တင်များ မည်သို့ပင် ဖြစ်သည်။ ndots:5 အတူနေပါ။ ၎င်းကိုနားလည်ရန်၊ အရည်အချင်းမပြည့်မီသောအမည်များအတွက် DNS ကြည်လင်ပြတ်သားမှုကို သင်နားလည်ရန် လိုအပ်သည်။

နာမည်အပြည့်အစုံကဘာလဲ။

အရည်အချင်းပြည့်မီသောအမည်သည် ဒေသန္တရရှာဖွေမှုလုပ်ဆောင်မည်မဟုတ်သည့်အတွက် အမည်ကို အမည်သတ်မှတ်ရာတွင် အကြွင်းမဲ့သတ်မှတ်ခံရမည်ဖြစ်သည်။ စည်းဝေးကြီးအရ၊ DNS ဆော့ဖ်ဝဲသည် အမည်တစ်ခုကို အစက် (.) ဖြင့်အဆုံးသတ်ပါက အရည်အချင်းပြည့်မီသည်ဟု မှတ်ယူကာ အခြားနည်းဖြင့် အရည်အချင်းပြည့်မီခြင်းမရှိပါ။ အဲဒါပါပဲ။ google.com. အပြည့်အဝသတ်မှတ်ထားပြီး google.com - မဟုတ်ဘူး။

အရည်အချင်းမပြည့်မီသောအမည်ကို မည်သို့ကိုင်တွယ်သနည်း။

အပလီကေးရှင်းတစ်ခုသည် အမည်တွင်ဖော်ပြထားသော အဝေးထိန်းဌာနသို့ ချိတ်ဆက်သောအခါ၊ DNS အမည်၏ ကြည်လင်ပြတ်သားမှုကို ပုံမှန်အားဖြင့် စနစ်ခေါ်ဆိုမှုတစ်ခုဖြင့် လုပ်ဆောင်သည် ဥပမာ။ getaddrinfo(). အကယ်၍ အမည်သည် အရည်အချင်းမပြည့်မီပါက ( . နှင့် အဆုံးမသတ်ပါ ) ၊ စနစ်ခေါ်ဆိုမှုသည် အမည်ကို absolute name အဖြစ် ဦးစွာဖြေရှင်းရန်ကြိုးစားမည် သို့မဟုတ် ဒေသတွင်းရှာဖွေရေးဒိုမိန်းများကို ဦးစွာဖြတ်သန်းမည်လားဟု ကျွန်ုပ်တွေးမိပါသည်။ ရွေးချယ်မှုအပေါ် မူတည် ndots.

လက်စွဲစာအုပ်ထဲက resolv.conf:

ndots:n

устанавливает порог для количества точек, которые должны появиться в имени, прежде чем будет сделан начальный абсолютный запрос. Значение по умолчанию для n равно 1, что означает, что если в имени есть какие-либо точки, имя будет сначала опробовано как абсолютное имя, прежде чем к нему будут добавлены какие-либо элементы списка поиска.

ဆိုလိုတာက သည်လိုဆိုလျှင် ndots 5 ၏တန်ဖိုးနှင့် အမည်တွင် အစက် 5 ခုအောက်ပါရှိသည်၊ စနစ်ခေါ်ဆိုမှုသည် ၎င်းကို ဆက်တိုက်ဖြေရှင်းရန် ကြိုးစားမည်ဖြစ်ပြီး၊ ဒေသန္တရရှာဖွေမှုဒိုမိန်းများအားလုံးကို ဦးစွာဖြတ်ကျော်ကာ မအောင်မြင်ပါက နောက်ဆုံးတွင် ၎င်းကို အကြွင်းမဲ့အမည်အဖြစ် ဖြေရှင်းမည်ဖြစ်သည်။

အဘယ်ကြောင့်နည်း ndots:5 ၎င်းသည် အက်ပလီကေးရှင်းစွမ်းဆောင်ရည်ကို ထိခိုက်စေနိုင်ပါသလား။

သင်စိတ်ကူးကြည့်သည့်အတိုင်း၊ သင့်အက်ပ်လီကေးရှင်းသည် ပြင်ပအသွားအလာများစွာကို အသုံးပြုပါက၊ တည်ဆောက်ထားသည့် TCP ချိတ်ဆက်မှုတိုင်း (သို့မဟုတ် ပိုမိုတိကျစွာဖြေရှင်းထားသော အမည်တိုင်းအတွက်)၊ ၎င်းသည် အမည်ကိုမှန်ကန်စွာဖြေရှင်းခြင်းမပြုမီ 5 DNS စုံစမ်းမေးမြန်းမှုများကို ထုတ်ပေးမည်ဖြစ်ပါသည်။ 4 ဒေသတွင်းရှာဖွေရေးဒိုမိန်း၊ နှင့်အဆုံးတွင်လုံးဝအမည်ဖြေရှင်းရန်တောင်းဆိုချက်ကိုထုတ်လိမ့်မည်။

အောက်ဖော်ပြပါဇယားသည် ကျွန်ုပ်တို့၏အပလီကေးရှင်းတွင်သတ်မှတ်ထားသော hostname အနည်းငယ်ကို မပြောင်းမီနှင့်အပြီးတွင် ကျွန်ုပ်တို့၏ 3 kube-dns module တွင် စုစုပေါင်းလမ်းကြောင်းကိုပြသထားသည်။

Kubernetes pods အတွက် /etc/resolv.conf၊ ndots:5 ရွေးချယ်ခွင့်၊ ၎င်းသည် အက်ပ်၏စွမ်းဆောင်ရည်ကို မည်ကဲ့သို့ ထိခိုက်စေနိုင်သည်

အောက်ဖော်ပြပါ ပုံကြမ်းသည် ကျွန်ုပ်တို့၏ အပလီကေးရှင်းတွင် ပြင်ဆင်သတ်မှတ်ထားသော hostname အများအပြားကို မပြောင်းခင်နှင့် ပြီးနောက်တွင် အပလီကေးရှင်း၏ latency ကိုပြသသည် (ဒေါင်လိုက်အပြာရောင်မျဉ်းသည် ဖြန့်ကျက်ခြင်းဖြစ်သည်)။

Kubernetes pods အတွက် /etc/resolv.conf၊ ndots:5 ရွေးချယ်ခွင့်၊ ၎င်းသည် အက်ပ်၏စွမ်းဆောင်ရည်ကို မည်ကဲ့သို့ ထိခိုက်စေနိုင်သည်

ဖြေရှင်းချက် #1 - အရည်အချင်းပြည့်မီသော အမည်များကို အသုံးပြုပါ။

သင့်တွင် ချိတ်ဆက်မှုအများအပြားကို ဖန်တီးပေးသည့် တည်ငြိမ်သောပြင်ပအမည်အနည်းငယ် (ဆိုလိုသည်မှာ အပလီကေးရှင်းဖွဲ့စည်းပုံတွင် သတ်မှတ်ထားသည်) ရှိပါက၊ ၎င်းတို့ကို ပေါင်းထည့်လိုက်ရုံဖြင့် ၎င်းတို့ကို အပြည့်အ၀ အရည်အချင်းပြည့်မီသူများထံ ပြောင်းရန် အရိုးရှင်းဆုံးဖြေရှင်းချက်ဖြစ်နိုင်သည်။ အဆုံးမှာ။

၎င်းသည် နောက်ဆုံးဖြေရှင်းချက်မဟုတ်သော်လည်း သန့်ရှင်းသပ်ရပ်မှုမရှိသော်လည်း အခြေအနေကို မြန်မြန်ဆန်ဆန်တိုးတက်စေရန် ကူညီပေးသည်။ အထက်ပါ ဖန်သားပြင်ဓာတ်ပုံများတွင် ပြထားသည့် ရလဒ်များကို ကျွန်ုပ်တို့၏ပြဿနာကိုဖြေရှင်းရန် ဤ patch ကိုအသုံးပြုထားပါသည်။

ဖြေရှင်းချက် #2 - စိတ်ကြိုက်ပြင်ဆင်ခြင်း။ ndots в dnsConfig

Kubernetes 1.9 တွင်၊ လုပ်ဆောင်နိုင်စွမ်းသည် အယ်လ်ဖာမုဒ် (ဘီတာဗားရှင်း v1.10) တွင် ပေါ်လာပြီး ၎င်းသည် သင့်အား pod ပိုင်ဆိုင်မှုမှတစ်ဆင့် DNS ဘောင်များကို ပိုမိုကောင်းမွန်စွာ ထိန်းချုပ်နိုင်စေမည်ဖြစ်သည်။ dnsConfig. အခြားအရာများထဲတွင်၊ ၎င်းသည် သင့်အား တန်ဖိုးကို configure လုပ်ရန် ခွင့်ပြုသည်။ ndots သီးခြား pod တစ်ခုအတွက်၊ i.e.

apiVersion: v1
kind: Pod
metadata:
  namespace: default
  name: dns-example
spec:
  containers:
    - name: test
      image: nginx
  dnsConfig:
    options:
      - name: ndots
        value: "1"

သတင်းရင်းမြစ်

ကျွန်ုပ်တို့၏ဘလော့ဂ်ရှိ အခြားဆောင်းပါးများကိုလည်း ဖတ်ပါ-

source: www.habr.com

မှတ်ချက် Add