DNS lookup sa Kubernetes

Nota. transl.: Problema sa DNS sa Kubernetes, o mas tukma, mga setting sa parameter ndots, katingad-an nga popular, ug na Dili una Π³ΠΎΠ΄. Sa lain nga nota sa kini nga hilisgutan, ang tagsulat niini, usa ka engineer sa DevOps gikan sa usa ka dako nga kompanya sa brokerage sa India, nagsulti sa usa ka yano ug mubo nga paagi bahin sa kung unsa ang mapuslanon nga mahibal-an sa mga kauban nga nag-operate sa Kubernetes.

DNS lookup sa Kubernetes

Usa sa mga nag-unang benepisyo sa pag-deploy sa mga aplikasyon sa Kubernetes mao ang seamless application discovery. Ang interaksyon sa intra-cluster gipasimple kaayo salamat sa konsepto sa serbisyo (nga pag-alagad), nga usa ka virtual IP nga nagsuporta sa usa ka set sa pod IP addresses. Pananglitan, kung ang serbisyo vanilla gusto nga makontak ang serbisyo chocolate, kini direkta nga maka-access sa virtual IP alang sa chocolate. Ang pangutana mitungha: kinsa sa kini nga kaso ang mosulbad sa hangyo sa DNS chocolate Ug Giunsa?

Ang resolusyon sa ngalan sa DNS gi-configure sa usa ka Kubernetes cluster gamit CoreDNS. Ang Kubelet nagrehistro og pod sa CoreDNS isip nameserver sa mga file /etc/resolv.conf tanan pod. Kung imong tan-awon ang sulod /etc/resolv.conf bisan unsa pod, kini tan-awon sama niini:

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

Kini nga pag-configure gigamit sa mga kliyente sa DNS aron ipadala ang mga hangyo sa DNS server. Sa file resolv.conf naglangkob sa mosunod nga impormasyon:

  • nameserver: server diin ipadala ang mga hangyo sa DNS. Sa among kaso, kini ang adres sa serbisyo sa CoreDNS;
  • search: Naghubit sa agianan sa pagpangita alang sa usa ka piho nga domain. Makapainteres kana google.com o mrkaran.dev dili FQDN (hingpit nga kwalipikado nga mga ngalan sa domain). Sumala sa standard nga kombensiyon nga gisunod sa kadaghanan sa mga DNS resolver, kadto lang natapos sa usa ka tulbok ".", nga nagrepresentar sa root zone, ang gikonsiderar nga fully qualified (FDQN) domains. Ang ubang mga solver makadugang ug punto sa ilang kaugalingon. Sa ingon, mrkaran.dev. mao ang hingpit nga kwalipikado nga ngalan sa domain (FQDN), ug mrkaran.dev - Dili;
  • dots: Ang labing makaiikag nga parameter (kini nga artikulo mahitungod niini). ndots nagtino sa threshold nga gidaghanon sa mga tuldok sa usa ka ngalan sa hangyo sa wala pa kini isipa nga usa ka "hingpit nga kwalipikado" nga ngalan sa domain. Maghisgot pa kami bahin niini sa ulahi kung among analisahon ang han-ay sa pagpangita sa DNS.

DNS lookup sa Kubernetes

Atong tan-awon kon unsay mahitabo kon kita mangutana mrkaran.dev sa 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

Alang niini nga eksperimento, akong gibutang ang lebel sa pag-log sa CoreDNS sa all (nga naghimo niini nga medyo verbose). Atong tan-awon ang mga troso pod 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

Phew. Duha ka butang ang nakakuha sa imong atensyon dinhi:

  • Ang hangyo moagi sa tanang yugto sa pagpangita hangtod nga ang tubag adunay code NOERROR (Ang mga kliyente sa DNS nakasabut niini ug nagtipig niini isip resulta). NXDOMAIN nagpasabot nga walay rekord nga nakit-an para sa gihatag nga domain name. Tungod kay ang mrkaran.dev dili FQDN nga ngalan (sumala sa ndots=5), ang solver nagtan-aw sa agianan sa pagpangita ug nagtino sa han-ay sa mga hangyo;
  • Mga Post А ΠΈ АААА pag-abot sa parallel. Ang kamatuoran mao nga ang usa ka higayon nga hangyo sa /etc/resolv.conf Sa kasagaran, sila gi-configure sa paagi nga ang parallel searches gihimo gamit ang IPv4 ug IPv6 protocols. Mahimo nimong kanselahon kini nga pamatasan pinaagi sa pagdugang sa kapilian single-request Π² resolv.conf.

Mubo nga sulat: glibc mahimong ma-configure aron ipadala kini nga mga hangyo nga sunud-sunod, ug musl - dili, mao nga ang mga tiggamit sa Alpine kinahanglan nga magbantay.

Pag-eksperimento sa mga dot

Mag-eksperimento pa ta og gamay ndots ug tan-awon nato kung giunsa kini nga parameter molihok. Ang ideya yano ra: ndots nagtino kung ang kliyente sa DNS magtratar sa domain ingon hingpit o paryente. Pananglitan, sa kaso sa usa ka yano nga kliyente sa google DNS, giunsa kini pagkahibalo kung kini nga domain hingpit? Kung imong gitakda ndots katumbas sa 1, ang kliyente moingon: "Oh, sa google walay usa ka punto; Sa akong hunahuna akong susihon ang tibuuk nga lista sa pagpangita. ” Hinuon, kung mangutana ka google.com, ang listahan sa mga suffix bug-os nga ibaliwala tungod kay ang gipangayo nga ngalan nakab-ot sa threshold ndots (adunay labing menos usa ka punto).

Atong siguroon kini:

$ 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

Mga log sa 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

Sukad sa mrkaran walay usa ka punto, ang pagpangita gihimo sa tibuok listahan sa mga suffix.

Hinumdomi: sa praktis ang pinakataas nga kantidad ndots limitado sa 15; pinaagi sa default sa Kubernetes kini 5.

Aplikasyon sa produksiyon

Kung ang usa ka aplikasyon naghimo og daghang mga tawag sa gawas sa network, ang DNS mahimong usa ka bottleneck sa kaso sa aktibo nga trapiko, tungod kay ang resolusyon sa ngalan naghimo sa daghang wala kinahanglana nga mga pangutana (sa wala pa makuha ang sistema sa husto). Ang mga aplikasyon kasagarang dili makadugang ug root zone sa mga domain name, pero morag hack kini. Sa ato pa, imbes mangutana api.twitter.com, mahimo nimong hardcode api.twitter.com. (nga adunay usa ka tulbok) sa aplikasyon, nga mag-aghat sa mga kliyente sa DNS sa paghimo sa mga awtoritatibo nga pagpangita direkta sa hingpit nga domain.

Dugang pa, sugod sa Kubernetes nga bersyon 1.14, mga extension dnsConfig ΠΈ dnsPolicy nakadawat stable nga kahimtang. Sa ingon, kung mag-deploy og pod, mahimo nimong makunhuran ang kantidad ndots, ingon, hangtod sa 3 (ug bisan hangtod sa 1!). Tungod niini, ang matag mensahe sulod sa usa ka node kinahanglang maglakip sa tibuok domain. Kini usa sa mga klasiko nga trade-off kung kinahanglan nimo nga mopili tali sa pasundayag ug kadali. Sa akong tan-aw kinahanglan ka lang mabalaka bahin niini kung ang ultra-low latency hinungdanon sa imong aplikasyon, tungod kay ang mga resulta sa DNS gi-cache usab sa sulod.

mga pakisayran

Una nakong nahibal-an ang bahin niini nga bahin sa K8s-meetup, nga gipahigayon niadtong Enero 25. Adunay usa ka panaghisgot bahin sa kini nga problema, taliwala sa ubang mga butang.

Ania ang pipila ka mga link alang sa dugang nga eksplorasyon:

Mubo nga sulat: Gipili nako nga dili gamiton dig sa kini nga artikulo. dig awtomatik nga nagdugang usa ka tulbok (root zone identifier), nga naghimo sa domain nga "hingpit nga kwalipikado" (FQDN), dili pinaagi sa una nga pagpadagan niini pinaagi sa lista sa pagpangita. Nagsulat bahin niini sa usa sa nangaging mga publikasyon. Bisan pa, kini katingad-an nga, sa kinatibuk-an, ang usa ka bulag nga bandila kinahanglan itakda alang sa sumbanan nga pamatasan.

Malipayon nga DNSing! Magkita ta unya!

PS gikan sa tighubad

Basaha usab sa among blog:

Source: www.habr.com

Idugang sa usa ka comment