DNS lookup in Kubernetes

Nota. transl.: DNS problema in Kubernetes, vel pressius, parametri occasus ndotsmirum in modum popularis, et iam Non primum annos singulos. In alia notula de hoc argumento, eius auctor, architectus DevOps e magna coniuratione societatis in India loquitur, modo simplici et brevissimo de usu collegis Kubernetes cognoscendi.

DNS lookup in Kubernetes

Una e praecipuorum usuum in Kubernetes applicationes explicandi inconsutilem applicationem inventionis est. Commercium intra-botruscum valde simplicior est gratia servitii conceptus (.obsequium), quod est virtuale IP, quod pone podex inscriptiones IP sustinet. Ut si in servitio vanilla voluerit contact servitium chocolate, directe accedere potest pro IP virtuali chocolate. Quaestio oritur: quis in hoc casu petitionem DNS solvet chocolate Et quomodo?

DNS nomen resolutionis in usu botri Kubernetes configuratur CoreDNS. Kubelet registra vasculum cum CoreDNS ut nominator in antis /etc/resolv.conf siliquae omnes. Si contentus intueri /etc/resolv.conf quodlibet vasculum, hoc aliquid simile spectabit;

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

Haec conformatio a clientibus DNS adhibetur ut petitiones DNS servientium transmittat. In file resolv.conf sequenti notitia continet:

  • nameserverServo cui DNS petitiones mittentur. In nobis, haec est oratio CoreDNS muneris;
  • quaerere: Iter investigationis definit pro dominio specifico. Est interesting quod google.com aut mrkaran.dev Non FQDN (plene qualified domain nomina). Secundum regulam conventionem, quam plerique DNS resolventes sequuntur, eae solae qui finem cum puncto ".", zonam radicis exhibentes, ditiones plene habiles habentur. Aliqui resolutores punctum sibi addere possunt. Sic, mrkaran.dev. est plene qualified domain nomen (FQDN), et mrkaran.dev β€” Haud;
  • ndots ": Maxime interesting parametri (hic articulus est de eo). ndots significat limen numerus punctorum in nomine rogationis antequam consideretur nomen domain "plene idonei". Plura de hoc postea loquemur cum DNS aspectum series resolvemus.

DNS lookup in Kubernetes

Videamus quid fit cum rogamus mrkaran.dev in vasculum:

$ 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

Hoc experimento posui CoreDNS loging in gradu all (quod satis verbosum facit). Intueamur omnia legumen 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. Duo hic animum tuum capiunt:

  • Postulatio percurrit omnes gradus inquisitionis usque ad responsionem in codice continet NOERROR (DNS clientes intelligunt et reponunt consequenter). NXDOMAIN significat nullum testimonium esse pro nomine regio datum. Quod mrkaran.dev non est nomen FQDN (secundum ndots=5) , resolvens viam inquisitionis spectat et ordinem petitionum determinat;
  • muniat А ΠΈ АААА perveniant in parallela. Re vera unum tempus postulata est /etc/resolv.conf Defalta, ita figurantur ut investigationes parallelae fiant protocolla IPv4 et IPv6 utentes. Mores hanc inrita potes addendo optio single-request Π² resolv.conf.

Note: glibc configurari potest has petitiones continue mittere et musl β€” Non, ut Alpini utentes notent.

Experiuntur ndots

Experimenta paulo plus Let's with ndots Et videamus quomodo hic modulus se gerit. Idea simplex est; ndots decernit utrum DNS cliens de dominio absoluto an relativo aget. Exempli causa, in cliente simplici google DNS, quomodo scit si haec regio absoluta est? Si posuistis ndots par 1, dicet cliens: β€œO, in . google ne punctum quidem unum est; Suspicor per totum indicem investigationis pergam." Sed si quaeris google.com, index suffixis omnino ignoratur quia nomen petitum limen occurrit ndots (certe unum punctum est).

Fac de hoc:

$ 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 acta:

[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

Cum in mrkaran nullum punctum exstat, investigatio per totum indicem suffixis peractum.

Nota: in usu maximi pretii ndots limitatur ad 15; per defaltam in Kubernetes quod est v.

Applicationem in productione

Si applicatio multum retis externi vocat, DNS potest fieri bottleneck in causa negotiationis activae, cum nomen resolutio plures interrogationes superfluas facit (antequam ratio ad dextram accedit). Applicationes plerumque zonam radicis ad nomina domain non addunt, sed haec quasi hack sonat. Hoc est, pro rogabat api.twitter.com, you can 'hardcode' it api.twitter.com. (cum dat) in applicatione, quae DNS clientes promptum faciet ad speculatoria auctoritativa directe in dominio absoluto praestandos.

Accedit, incipiens a versione Kubernetti 1.14, extensiones dnsConfig ΠΈ dnsPolicy status stabilis accepit. Sic vasculum explicans, valorem reducere potes ndotsdic usque ad 3 (et usque ad 1). Propter hoc, quaelibet nuntius intra nodi plenam dominium includere debebit. Hoc unum est e classicis-peractis commercii cum eligere debes inter effectum et portabilitatem. Mihi videtur solum de hoc solliciti esse, si ultra-low latency applicationis tuae vitalis est, cum DNS eventus etiam interne conditi sint.

References

Primum didici de hoc pluma on K8s-metuppridie Idus lanuarii XXV. Inter alia de hoc problemate agitatum est.

Hic sunt nexus aliquot explorationis ulterioris:

Nota: uti non elegit dig hoc articulus. dig automatice addit punctum (zona radix identificantis), faciens domain "plene idoneus" (FQDN); non per primum currit per album inquisitionis. Scripsit de hoc in unus prior publications. Sed admodum mirum est, generatim vexillum separatum esse pro norma morum specificari.

Felix DNSing! Te visurum!

PS ab translator

Lege etiam in nostro diario:

Source: www.habr.com