ማስታወሻ. ትርጉምየዲ ኤን ኤስ ችግር በ Kubernetes ፣ ወይም የበለጠ በትክክል ፣ የመለኪያ መቼቶች ndots
, በሚገርም ሁኔታ ታዋቂ ነው, እና ቀድሞውኑ
አፕሊኬሽኖችን በ Kubernetes ላይ መዘርጋት ከዋና ዋናዎቹ ጥቅሞች አንዱ እንከን የለሽ የመተግበሪያ ግኝት ነው። የውስጠ-ክላስተር መስተጋብር ለአገልግሎት ጽንሰ-ሐሳብ ምስጋና ይግባውvanilla
አገልግሎቱን ማግኘት ይፈልጋል chocolate
, ለ ቨርቹዋል አይፒ በቀጥታ መድረስ ይችላል chocolate
. ጥያቄው የሚነሳው በዚህ ጉዳይ ላይ የዲ ኤን ኤስ ጥያቄን የሚፈታው ማን ነው chocolate
እና እንዴት?
የዲ ኤን ኤስ ስም ጥራት በ Kubernetes ክላስተር ላይ ተዋቅሯል። /etc/resolv.conf
ሁሉም እንክብሎች. ይዘቱን ከተመለከቱ /etc/resolv.conf
ማንኛውም ፖድ ፣ እንደዚህ ያለ ነገር ይመስላል
search hello.svc.cluster.local svc.cluster.local cluster.local
nameserver 10.152.183.10
options ndots:5
ይህ ውቅር በዲኤንኤስ ደንበኞች ጥያቄዎችን ወደ ዲ ኤን ኤስ አገልጋይ ለማስተላለፍ ይጠቅማል። በፋይል ውስጥ resolv.conf
የሚከተለውን መረጃ ይዟል።
- ስም አገልጋይየዲኤንኤስ ጥያቄዎች የሚላኩበት አገልጋይ። በእኛ ሁኔታ, ይህ የ CoreDNS አገልግሎት አድራሻ ነው;
- ፍለጋለአንድ የተወሰነ ጎራ የፍለጋ መንገድን ይገልጻል። የሚገርም ነው።
google.com
ወይምmrkaran.dev
FQDN አይደሉም (ሙሉ ብቃት ያላቸው የጎራ ስሞች ). አብዛኞቹ ዲ ኤን ኤስ ፈላጊዎች በሚከተሉት መደበኛ ስምምነት መሰረት፣ በነጥብ የሚያበቁት የስር ዞንን የሚወክሉ፣ ሙሉ በሙሉ ብቁ (FDQN) ጎራዎች ይቆጠራሉ። አንዳንድ ፈታኞች ራሳቸው አንድ ነጥብ ማከል ይችላሉ። ስለዚህምmrkaran.dev.
ሙሉ ብቃት ያለው የጎራ ስም (FQDN) ነው፣ እናmrkaran.dev
- አይ; - ንዶቶችበጣም የሚያስደስት መለኪያ (ይህ ጽሑፍ ስለ እሱ ነው).
ndots
እንደ “ሙሉ ብቃት ያለው” የጎራ ስም ከመቆጠሩ በፊት የነጥቦችን የመነሻ ቁጥር በጥያቄ ስም ይገልጻል። የዲ ኤን ኤስ ፍለጋ ቅደም ተከተልን ስንመረምር ስለዚህ ጉዳይ በኋላ ላይ እንነጋገራለን።
ብለን ስንጠይቅ የሚሆነውን እንይ mrkaran.dev
በፖድ ውስጥ;
$ 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
(የዲ ኤን ኤስ ደንበኞች ተረድተው በውጤቱ ያከማቹት)።NXDOMAIN
ለተሰጠው የጎራ ስም ምንም መዝገብ አልተገኘም ማለት ነው። ምክንያቱምmrkaran.dev
FQDN ስም አይደለም (በዚህ መሠረትndots=5
), ፈቺው የፍለጋ መንገዱን ይመለከታል እና የጥያቄዎችን ቅደም ተከተል ይወስናል; - ቅጂዎች
А
иАААА
በትይዩ ይድረሱ። እውነታው ግን የአንድ ጊዜ ጥያቄ ወደ ውስጥ መግባቱ ነው።/etc/resolv.conf
በነባሪነት፣ IPv4 እና IPv6 ፕሮቶኮሎችን በመጠቀም ትይዩ ፍለጋዎች በሚከናወኑበት መንገድ ተዋቅረዋል። አማራጩን በማከል ይህን ባህሪ መሰረዝ ይችላሉ።single-request
вresolv.conf
.
ማስታወሻ: glibc
እነዚህን ጥያቄዎች በቅደም ተከተል ለመላክ ሊዋቀር ይችላል፣ እና musl
- አይ፣ ስለዚህ የአልፕይን ተጠቃሚዎች ልብ ይበሉ።
በንዶቶች መሞከር
ትንሽ ተጨማሪ በሙከራ እንሞክር ndots
እና ይህ ግቤት እንዴት እንደሚሰራ እንይ. ሀሳቡ ቀላል ነው፡- ndots
የዲ ኤን ኤስ ደንበኛ ጎራውን እንደ ፍፁም ወይም ዘመድ ይመለከተው እንደሆነ ይወስናል። ለምሳሌ፣ በቀላል ጎግል ዲ ኤን ኤስ ደንበኛ፣ ይህ ጎራ ፍፁም መሆኑን እንዴት ያውቃል? ካዘጋጀህ 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 የተገደበ; በነባሪ በኩበርኔትስ 5 ነው።
በምርት ውስጥ ማመልከቻ
አፕሊኬሽኑ ብዙ የውጭ ኔትወርክ ጥሪዎችን ካደረገ፣ የስም መፍታት ብዙ አላስፈላጊ ጥያቄዎችን ስለሚያደርግ (ስርዓቱ ወደ ትክክለኛው መንገድ ከመምጣቱ በፊት) ዲ ኤን ኤስ በነቃ ትራፊክ ጉዳይ ላይ ማነቆ ሊሆን ይችላል። አፕሊኬሽኖች ብዙውን ጊዜ የስር ዞንን ወደ የጎራ ስሞች አይጨምሩም ፣ ግን ይህ እንደ ጠለፋ ይመስላል። ከመጠየቅ ይልቅ ማለት ነው። api.twitter.com
, 'ሃርድ ኮድ' ማድረግ ትችላለህ api.twitter.com.
(ከነጥብ ጋር) በመተግበሪያው ውስጥ፣ ይህም የዲ ኤን ኤስ ደንበኞች በቀጥታ ፍፁም ጎራ ላይ ሥልጣናዊ ፍለጋዎችን እንዲያደርጉ ይጠይቃቸዋል።
በተጨማሪ፣ ከ Kubernetes ስሪት 1.14፣ ቅጥያዎች ጀምሮ dnsConfig
и dnsPolicy
የተረጋጋ ሁኔታ ተቀብሏል. ስለዚህ, ፖድ ሲያሰማሩ, ዋጋውን መቀነስ ይችላሉ ndots
, እስከ 3 ድረስ (እና እንዲያውም እስከ 1!) ይበሉ. በዚህ ምክንያት በመስቀለኛ መንገድ ውስጥ ያለ እያንዳንዱ መልእክት ሙሉውን ጎራ ማካተት አለበት። በአፈጻጸም እና በተጓጓዥነት መካከል መምረጥ ሲኖርብዎት ይህ ከተለመዱት የንግድ ልውውጥ አንዱ ነው። የዲ ኤን ኤስ ውጤቶቹ በውስጣቸውም የተሸጎጡ በመሆናቸው ለመተግበሪያዎ እጅግ በጣም ዝቅተኛ መዘግየት አስፈላጊ ከሆነ ብቻ ስለዚህ ጉዳይ መጨነቅ ያለብዎት ይመስላል።
ማጣቀሻዎች
እኔ መጀመሪያ ላይ ስለዚህ ባህሪ ተማርኩ
ለተጨማሪ አሰሳ አንዳንድ አገናኞች እነኚሁና፡
-
ማብራሪያ , ለምን ndots=5 በ Kubernetes; -
ምርጥ ነገሮች Ndots መቀየር የመተግበሪያውን አፈፃፀም እንዴት እንደሚጎዳ; -
ልዩነቶች በ musl እና glibc መፍታት መካከል።
ማስታወሻ፡ ላለመጠቀም መርጫለሁ። dig
በዚህ ጽሑፍ ውስጥ dig
በራስ-ሰር ነጥብ ያክላል (የስር ዞን ለዪ)፣ ጎራውን “ሙሉ በሙሉ ብቁ” (FQDN) ያደርገዋል፣ አይደለም በመጀመሪያ በፍለጋ ዝርዝሩ ውስጥ በማስኬድ. ስለዚህ ጉዳይ በ ውስጥ ጽፈዋል
መልካም ዲ ኤን ኤስ ማድረግ! ደህና ሁን!
PS ከተርጓሚ
በብሎጋችን ላይ ያንብቡ፡-
- «
Calico በ Kubernetes ውስጥ ለአውታረመረብ: መግቢያ እና ትንሽ ልምድ "; - «
CoreDNS - የዲ ኤን ኤስ አገልጋይ ለደመናው ተወላጅ ዓለም እና የአገልግሎት ግኝት ለ Kubernetes "; - "በኩበርኔትስ ውስጥ ለአውታረመረብ የተብራራ መመሪያ"፡-
ክፍል 1 እና 2 (የኔትወርክ ሞዴል ፣ ተደራቢ አውታረ መረቦች) ,ክፍል 3 (አገልግሎት እና የትራፊክ ሂደት) .
ምንጭ: hab.com