ProHoster > blog > Gweinyddiaeth > /etc/resolv.conf ar gyfer codennau Kubernetes, opsiwn ndots:5, sut y gall hyn effeithio'n negyddol ar berfformiad y cais
/etc/resolv.conf ar gyfer codennau Kubernetes, opsiwn ndots:5, sut y gall hyn effeithio'n negyddol ar berfformiad y cais
Yn ddiweddar, fe wnaethom lansio Kubernetes 1.9 ar AWS gyda chymorth Kops. Ddoe, wrth gyflwyno traffig newydd yn llyfn i'n clwstwr Kubernetes mwyaf, dechreuais sylwi ar wallau datrys enw DNS anarferol a gofnodwyd gan ein cais.
Mae gan GitHub dipyn amdano. siaradodd, felly penderfynais ymchwilio iddo hefyd. O ganlyniad, sylweddolais fod hyn yn ein hachos ni wedi'i achosi gan lwyth cynyddol ymlaen kube-dns ΠΈ dnsmasq. Y mwyaf diddorol a newydd i mi oedd yr union reswm dros y cynnydd sylweddol mewn traffig ymholiadau DNS. YnglΕ·n Γ’ hyn a beth i'w wneud ag ef, fy swydd.
Mae datrysiad DNS y tu mewn i'r cynhwysydd - fel mewn unrhyw system Linux - yn cael ei bennu gan y ffeil ffurfweddu /etc/resolv.conf. Kubernetes rhagosodedig dnsPolicy hwn ClusterFirst, sy'n golygu y bydd unrhyw gais DNS yn cael ei ailgyfeirio i dnsmasqrhedeg mewn pod kube-dns y tu mewn i'r clwstwr, a fydd yn ei dro yn anfon y cais ymlaen at y cais kube-dns, os yw'r enw'n gorffen gydag Γ΄l-ddodiad clwstwr, neu fel arall, i weinydd DNS lefel uwch.
file /etc/resolv.conf bydd y tu mewn i bob cynhwysydd yn ddiofyn yn edrych fel hyn:
Rhan ddiddorol y cyfluniad hwn yw sut mae'r parthau a'r gosodiadau chwilio lleol ndots:5 cydfodoli. I ddeall hyn, mae angen i chi ddeall sut mae datrysiad DNS yn gweithio ar gyfer enwau diamod.
Beth yw enw llawn?
Mae enw cwbl gymwys yn enw na fydd yn cael ei chwilio'n lleol ac a fydd yn cael ei drin fel enw absoliwt wrth ddatrys enw. Yn Γ΄l y confensiwn, mae'r meddalwedd DNS yn ystyried bod enw'n gwbl gymwys os yw'n gorffen gyda dot (.), ac nad yw'n gwbl gymwys fel arall. Hynny yw google.com. wedi'u diffinio'n llawn a google.com - na.
Sut yr ymdrinnir ag enw diamod?
Pan fydd cais yn cysylltu Γ’'r gwesteiwr o bell a nodir yn yr enw, mae datrysiad enw DNS fel arfer yn cael ei wneud gan ddefnyddio galwad system, er enghraifft, getaddrinfo(). Ond os yw'r enw'n anghyflawn (nid yw'n gorffen gyda .), tybed a fydd yr alwad system yn ceisio datrys yr enw fel un absoliwt yn gyntaf, neu a fydd yn mynd trwy'r parthau chwilio lleol yn gyntaf? Mae'n dibynnu ar yr opsiwn ndots.
Mae hyn yn golygu os o blaid ndots wedi'i osod i 5 ac mae'r enw'n cynnwys llai na 5 dot, bydd galwad y system yn ceisio ei ddatrys yn ddilyniannol, gan fynd trwy'r holl barthau chwilio lleol yn gyntaf, a methu, gan ei ddatrys yn y pen draw fel enw absoliwt.
Pam felly ndots:5 a all effeithio'n negyddol ar berfformiad y cais?
Fel y gallwch ddychmygu, os yw'ch cais yn defnyddio llawer o draffig allanol, ar gyfer pob cysylltiad TCP sefydledig (neu'n fwy manwl gywir, ar gyfer pob enw sydd wedi'i ddatrys), bydd yn cyhoeddi 5 ymholiad DNS cyn i'r enw gael ei ddatrys yn iawn, oherwydd bydd yn mynd trwyddo yn gyntaf. 4 parth chwilio lleol, ac ar y diwedd bydd yn cyhoeddi cais penderfyniad enw absoliwt.
Mae'r siart canlynol yn dangos cyfanswm y traffig ar ein codennau 3 kube-dns cyn ac ar Γ΄l i ni newid sawl enw gwesteiwr a ffurfiwyd yn ein cymhwysiad i rai cymwysedig.
Mae'r siart canlynol yn dangos hwyrni'r rhaglen cyn ac ar Γ΄l i ni newid sawl enw gwesteiwr a ffurfiwyd yn ein cymhwysiad i rai llawn (y llinell las fertigol yw defnydd):
Ateb #1 - Defnyddiwch enwau cwbl gymwys
Os nad oes gennych lawer o enwau allanol statig (h.y. a ddiffinnir yng nghyfluniad y cymhwysiad) yr ydych yn creu nifer fawr o gysylltiadau iddynt, efallai mai'r ateb hawsaf yw eu newid i rai cwbl gymwys trwy ychwanegu yn unig. Yn y diwedd.
Nid yw hwn yn ateb terfynol, ond mae'n helpu i wella'r sefyllfa yn gyflym, os nad yn lΓ’n. Fe wnaethom gymhwyso'r clwt hwn i ddatrys ein problem, a dangoswyd y canlyniadau yn y sgrinluniau uchod.
Penderfyniad #2 - addasu ndots Π² dnsConfig
Cyflwynodd Kubernetes 1.9 nodwedd yn y modd alffa (fersiwn beta v1.10) sy'n eich galluogi i reoli gosodiadau DNS yn well trwy eiddo pod yn dnsConfig. Ymhlith pethau eraill, mae'n caniatΓ‘u ichi addasu'r gwerth ndots ar gyfer pod penodol, h.y.