/etc/resolv.conf د Kubernetes پوډونو لپاره، ndots:5 اختیار، دا څنګه کولی شي د غوښتنلیک فعالیت منفي اغیزه وکړي

/etc/resolv.conf د Kubernetes پوډونو لپاره، ndots:5 اختیار، دا څنګه کولی شي د غوښتنلیک فعالیت منفي اغیزه وکړي

موږ پدې وروستیو کې د کوپس په کارولو سره په AWS کې Kubernetes 1.9 پیل کړ. پرون، په داسې حال کې چې په اسانۍ سره زموږ د Kubernetes لوی کلسترونو ته نوي ټرافيک راوباسي، ما زموږ د غوښتنلیک لخوا د ننوتلو غیر معمولي DNS نوم حل کولو غلطیو لیدل پیل کړل.

په GitHub کې د دې په اړه ډیر څه شتون لري خبرې وکړېنو ما پریکړه وکړه چې دا هم معلومه کړم. په پای کې، ما پوهیده چې زموږ په قضیه کې دا د زیات شوي بار له امله رامنځته کیږي kube-dns и dnsmasq. زما لپاره ترټولو زړه پورې او نوی شی د DNS غوښتنې ترافیک کې د پام وړ زیاتوالي لامل و. زما پوسټ پدې اړه دی او پدې اړه څه باید وکړو.

د کانټینر دننه د DNS ریزولوشن - لکه څنګه چې په هر لینکس سیسټم کې - د ترتیب فایل لخوا ټاکل کیږي /etc/resolv.conf. Default 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(). مګر که نوم نا مناسب وي (په پای کې نه وي.)، زه حیران یم چې ایا د سیسټم کال به هڅه وکړي چې نوم لومړی د مطلق نوم په توګه حل کړي، یا لومړی د محلي لټون ډومینونو له لارې لاړ شي؟ دا په اختیار پورې اړه لري ndots.

له لارښود څخه resolv.conf:

ndots:n

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

دا پدې مانا ده چې که د دې لپاره ndots د 5 ارزښت ورکړل شوی او نوم له 5 څخه کم نقطې لري، د سیسټم کال به هڅه وکړي چې دا په ترتیب سره حل کړي، لومړی د ټولو محلي لټون ډومینونو څخه تیریږي، او که ناکامه وي، په پای کې یې د مطلق نوم په توګه حل کړي.

نو بیا ولې ndots:5 ایا دا کولی شي د غوښتنلیک فعالیت منفي اغیزه وکړي؟

لکه څنګه چې تاسو تصور کولی شئ، که ستاسو غوښتنلیک ډیری بهرني ټرافیک کاروي، د هر TCP اتصال لپاره (یا ډیر دقیق، د هر نوم حل لپاره)، دا به د 5 DNS پوښتنې وړاندې کړي مخکې له دې چې نوم په سمه توګه حل شي، ځکه چې دا به لومړی له لارې تیریږي. 4 د محلي لټون ډومین، او په پای کې به د مطلق نوم حل غوښتنه صادره کړي.

لاندې چارټ زموږ د 3 kube-dns ماډلونو ټول ټرافیک ښیي مخکې له دې چې موږ زموږ په غوښتنلیک کې ترتیب شوي یو څو کوربه نومونه په بشپړ ډول وړ کسانو ته بدل کړل.

/etc/resolv.conf د Kubernetes پوډونو لپاره، ndots:5 اختیار، دا څنګه کولی شي د غوښتنلیک فعالیت منفي اغیزه وکړي

لاندې ډیاګرام د غوښتنلیک ځنډ ښیي مخکې له دې او وروسته چې موږ زموږ په غوښتنلیک کې ترتیب شوي ډیری کوربه نومونه په بشپړو نومونو بدل کړل (عمودی نیلي کرښه ځای پرځای کول دي):

/etc/resolv.conf د Kubernetes پوډونو لپاره، ndots:5 اختیار، دا څنګه کولی شي د غوښتنلیک فعالیت منفي اغیزه وکړي

حل # 1 - په بشپړ ډول وړ نومونه وکاروئ

که تاسو یو څو جامد بهرني نومونه ولرئ (د بیلګې په توګه د غوښتنلیک په ترتیب کې تعریف شوي) کوم چې تاسو لوی شمیر اړیکې رامینځته کوئ ، شاید ترټولو ساده حل دا دی چې دوی په ساده ډول ضمیمه کولو سره بشپړ وړ وړ کسانو ته واړوئ. په پای کې.

دا وروستی حل نه دی، مګر دا په چټکۍ سره مرسته کوي، که څه هم پاک نه وي، وضعیت ښه کړي. موږ دا پیچ د خپلې ستونزې د حل لپاره پلي کړ، چې پایلې یې په پورته سکرین شاټونو کې ښودل شوي.

حل #2 - اصلاح کول ndots в dnsConfig

په Kubernetes 1.9 کې، فعالیت په الفا حالت کې ښکاره شو (بیټا نسخه v1.10)، کوم چې تاسو ته اجازه درکوي د پوډ ملکیت له لارې د DNS پیرامیټونه ښه کنټرول کړئ. dnsConfig. د نورو شیانو په مینځ کې ، دا تاسو ته اجازه درکوي ارزښت تنظیم کړئ ndots د یو ځانګړي پوډ لپاره، i.e.

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

سرچینې

زموږ په بلاګ کې نورې مقالې هم ولولئ:

سرچینه: www.habr.com

Add a comment