Nota. transl.: DNS problema in Kubernetes, vel pressius, parametri occasus ndotsmirum in modum popularis, et iam Non primumannos 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.
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;
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.
Videamus quid fit cum rogamus mrkaran.dev in vasculum:
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).
[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.
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.