የዲ ኤን ኤስ ፍለጋ በኩበርኔትስ ውስጥ

ማስታወሻ. ትርጉምየዲ ኤን ኤስ ችግር በ Kubernetes ፣ ወይም የበለጠ በትክክል ፣ የመለኪያ መቼቶች ndots, በሚገርም ሁኔታ ታዋቂ ነው, እና ቀድሞውኑ መጀመሪያ አይደለም በዓመት. በዚህ ርዕስ ላይ በሌላ ማስታወሻ ፣ ደራሲው ፣ በህንድ ውስጥ ካለው ትልቅ ደላላ ኩባንያ የዴቭኦፕስ መሐንዲስ ፣ ኩበርኔትስ ለሚሠሩ ባልደረቦች ማወቅ ስለሚጠቅመው በጣም ቀላል እና አጭር በሆነ መንገድ ይናገራል።

የዲ ኤን ኤስ ፍለጋ በኩበርኔትስ ውስጥ

አፕሊኬሽኖችን በ Kubernetes ላይ መዘርጋት ከዋና ዋናዎቹ ጥቅሞች አንዱ እንከን የለሽ የመተግበሪያ ግኝት ነው። የውስጠ-ክላስተር መስተጋብር ለአገልግሎት ጽንሰ-ሐሳብ ምስጋና ይግባውአገልግሎት), እሱም የፖድ አይፒ አድራሻዎችን ስብስብ የሚደግፍ ምናባዊ አይፒ ነው. ለምሳሌ, አገልግሎቱ ከሆነ vanilla አገልግሎቱን ማግኘት ይፈልጋል chocolate, ለ ቨርቹዋል አይፒ በቀጥታ መድረስ ይችላል chocolate. ጥያቄው የሚነሳው በዚህ ጉዳይ ላይ የዲ ኤን ኤስ ጥያቄን የሚፈታው ማን ነው chocolate እና እንዴት?

የዲ ኤን ኤስ ስም ጥራት በ Kubernetes ክላስተር ላይ ተዋቅሯል። CoreDNS. ኩቤሌት ፖድ ከCoreDNS ጋር በፋይሎች ውስጥ እንደ ስም አገልጋይ ይመዘግባል /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!) ይበሉ. በዚህ ምክንያት በመስቀለኛ መንገድ ውስጥ ያለ እያንዳንዱ መልእክት ሙሉውን ጎራ ማካተት አለበት። በአፈጻጸም እና በተጓጓዥነት መካከል መምረጥ ሲኖርብዎት ይህ ከተለመዱት የንግድ ልውውጥ አንዱ ነው። የዲ ኤን ኤስ ውጤቶቹ በውስጣቸውም የተሸጎጡ በመሆናቸው ለመተግበሪያዎ እጅግ በጣም ዝቅተኛ መዘግየት አስፈላጊ ከሆነ ብቻ ስለዚህ ጉዳይ መጨነቅ ያለብዎት ይመስላል።

ማጣቀሻዎች

እኔ መጀመሪያ ላይ ስለዚህ ባህሪ ተማርኩ K8s-ስብሰባጥር 25 ቀን ተካሂዷል። ስለዚህ ችግር ከሌሎች ነገሮች ጋር ውይይት ተደርጓል.

ለተጨማሪ አሰሳ አንዳንድ አገናኞች እነኚሁና፡

ማስታወሻ፡ ላለመጠቀም መርጫለሁ። dig በዚህ ጽሑፍ ውስጥ dig በራስ-ሰር ነጥብ ያክላል (የስር ዞን ለዪ)፣ ጎራውን “ሙሉ በሙሉ ብቁ” (FQDN) ያደርገዋል፣ አይደለም በመጀመሪያ በፍለጋ ዝርዝሩ ውስጥ በማስኬድ. ስለዚህ ጉዳይ በ ውስጥ ጽፈዋል ከቀደሙት ህትመቶች አንዱ. ነገር ግን፣ በአጠቃላይ፣ ለመደበኛ ባህሪ የተለየ ባንዲራ መገለጹ በጣም የሚያስደንቅ ነው።

መልካም ዲ ኤን ኤስ ማድረግ! ደህና ሁን!

PS ከተርጓሚ

በብሎጋችን ላይ ያንብቡ፡-

ምንጭ: hab.com

አስተያየት ያክሉ