PiezÄ«me. tulk.: DNS problÄma Kubernetes, precÄ«zÄk, parametru iestatÄ«jumos ndots, ir pÄrsteidzoÅ”i populÄrs, un jau Ne pirmaisgads. CitÄ piezÄ«mÄ par Å”o tÄmu tÄs autors, DevOps inženieris no liela brokeru uzÅÄmuma IndijÄ, ļoti vienkÄrÅ”i un kodolÄ«gi stÄsta par to, kas ir noderÄ«gi zinÄt kolÄÄ£iem, kas darbojas Kubernetes.
Viena no galvenajÄm priekÅ”rocÄ«bÄm, ko sniedz lietojumprogrammu izvietoÅ”ana vietnÄ Kubernetes, ir nevainojama lietojumprogrammu atklÄÅ”ana. Klastera iekÅ”ÄjÄ mijiedarbÄ«ba ir ievÄrojami vienkÄrÅ”ota, pateicoties pakalpojuma koncepcijai (Serviss), kas ir virtuÄls IP, kas atbalsta pod IP adreÅ”u kopu. PiemÄram, ja pakalpojums vanilla vÄlas sazinÄties ar dienestu chocolate, tas var tieÅ”i piekļūt virtuÄlajam IP chocolate. Rodas jautÄjums: kurÅ” Å”ajÄ gadÄ«jumÄ atrisinÄs DNS pieprasÄ«jumu chocolate Un kÄ?
DNS nosaukuma izŔķirtspÄja ir konfigurÄta Kubernetes klasterÄ«, izmantojot CoreDNS. Kubelet failos reÄ£istrÄ podiÅu ar CoreDNS kÄ nosaukumu serveri /etc/resolv.conf visas pÄkstis. Ja paskatÄs uz saturu /etc/resolv.conf jebkurÄ podÄ, tas izskatÄ«sies apmÄram Å”Ädi:
Å o konfigurÄciju DNS klienti izmanto, lai pÄrsÅ«tÄ«tu pieprasÄ«jumus uz DNS serveri. FailÄ resolv.conf satur Å”Ädu informÄciju:
vÄrdu serveris: serveris, uz kuru tiks nosÅ«tÄ«ti DNS pieprasÄ«jumi. MÅ«su gadÄ«jumÄ Å”Ä« ir CoreDNS pakalpojuma adrese;
MeklÄt: definÄ meklÄÅ”anas ceļu konkrÄtam domÄnam. Tas ir interesanti google.com vai mrkaran.dev nav FQDN (pilnÄ«bÄ kvalificÄti domÄna vÄrdi). SaskaÅÄ ar standarta konvenciju, ko ievÄro lielÄkÄ daļa DNS risinÄtÄju, tikai tie, kas beidzas ar punktu ".", kas apzÄ«mÄ saknes zonu, tiek uzskatÄ«ti par pilnÄ«bÄ kvalificÄtiem (FDQN) domÄniem. Daži atrisinÄtÄji paÅ”i var pievienot punktu. TÄdÄjÄdi mrkaran.dev. ir pilnÄ«bÄ kvalificÄts domÄna vÄrds (FQDN), un mrkaran.dev - NÄ;
ndots: InteresantÄkais parametrs (par to ir Å”is raksts). ndots norÄda sliekÅ”Åa punktu skaitu pieprasÄ«juma nosaukumÄ, pirms tas tiek uzskatÄ«ts par āpilnÄ«bÄ kvalificÄtuā domÄna nosaukumu. MÄs par to vairÄk runÄsim vÄlÄk, kad analizÄsim DNS uzmeklÄÅ”anas secÄ«bu.
RedzÄsim, kas notiek, kad jautÄsim mrkaran.dev podÄ:
Å im eksperimentam es iestatÄ«ju CoreDNS reÄ£istrÄÅ”anas lÄ«meni uz all (kas padara to diezgan runÄ«gu). ApskatÄ«sim pÄksts baļķus 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
Fū. Šeit jūsu uzmanību piesaista divas lietas:
PieprasÄ«jums iziet cauri visiem meklÄÅ”anas posmiem, lÄ«dz atbildÄ ir ietverts kods NOERROR (DNS klienti to saprot un rezultÄtÄ saglabÄ). NXDOMAIN nozÄ«mÄ, ka dotajam domÄna vÄrdam netika atrasts ieraksts. TÄpÄc ka mrkaran.dev nav FQDN nosaukums (saskaÅÄ ar ndots=5), atrisinÄtÄjs aplÅ«ko meklÄÅ”anas ceļu un nosaka pieprasÄ«jumu secÄ«bu;
Ieraksti Š Šø ŠŠŠŠ ierasties paralÄli. Fakts ir tÄds, ka tiek iesniegti vienreizÄji pieprasÄ«jumi /etc/resolv.conf PÄc noklusÄjuma tie ir konfigurÄti tÄ, lai paralÄlÄ meklÄÅ”ana tiktu veikta, izmantojot IPv4 un IPv6 protokolus. Varat atcelt Å”o darbÄ«bu, pievienojot opciju single-request Š² resolv.conf.
PiezÄ«me: glibc var konfigurÄt, lai Å”os pieprasÄ«jumus nosÅ«tÄ«tu secÄ«gi, un musl - nÄ, tÄpÄc Alpu lietotÄjiem tas jÄÅem vÄrÄ.
EksperimentÄÅ”ana ar ndots
EksperimentÄsim nedaudz vairÄk ar ndots un redzÄsim, kÄ Å”is parametrs darbojas. Ideja ir vienkÄrÅ”a: ndots nosaka, vai DNS klients apstrÄdÄs domÄnu kÄ absolÅ«tu vai relatÄ«vu. PiemÄram, vienkÄrÅ”a Google DNS klienta gadÄ«jumÄ, kÄ tas zina, vai Å”is domÄns ir absolÅ«ts? Ja iestatÄt ndots vienÄds ar 1, klients sacÄ«s: "Ak, iekÅ”Ä google nav viena punkta; Es domÄju, ka es izieÅ”u cauri visam meklÄÅ”anas sarakstam. TomÄr, ja jautÄ google.com, sufiksu saraksts tiks pilnÄ«bÄ ignorÄts, jo pieprasÄ«tais nosaukums atbilst slieksnim ndots (ir vismaz viens punkts).
[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
KopÅ” mrkaran nav neviena punkta, meklÄÅ”ana tika veikta visÄ sufiksu sarakstÄ.
PiezÄ«me: praksÄ maksimÄlÄ vÄrtÄ«ba ndots ierobežots lÄ«dz 15; pÄc noklusÄjuma programmÄ Kubernetes tas ir 5.
Pielietojums ražoÅ”anÄ
Ja lietojumprogramma veic daudz ÄrÄju tÄ«kla zvanu, DNS var kļūt par saÅ”aurinÄjumu aktÄ«vas trafika gadÄ«jumÄ, jo vÄrda izŔķirtspÄja rada daudz nevajadzÄ«gu vaicÄjumu (pirms sistÄma sasniedz pareizo). Lietojumprogrammas parasti domÄna nosaukumiem nepievieno saknes zonu, taÄu tas izklausÄs pÄc uzlauÅ”anas. Tas ir, tÄ vietÄ, lai jautÄtu api.twitter.com, jÅ«s varat to "cietkodÄt". api.twitter.com. (ar punktu) lietojumprogrammÄ, kas liks DNS klientiem veikt autoritatÄ«vus meklÄjumus tieÅ”i absolÅ«tajÄ domÄnÄ.
TurklÄt, sÄkot ar Kubernetes versiju 1.14, paplaÅ”inÄjumiem dnsConfig Šø dnsPolicy saÅÄma stabilu statusu. TÄdÄjÄdi, izvietojot podziÅu, varat samazinÄt vÄrtÄ«bu ndots, teiksim, lÄ«dz 3 (un pat lÄ«dz 1!). TÄdÄļ katrÄ ziÅojumÄ mezglÄ bÅ«s jÄiekļauj pilns domÄns. Å is ir viens no klasiskajiem kompromisiem, kad jÄizvÄlas starp veiktspÄju un pÄrnesamÄ«bu. Man Ŕķiet, ka jums par to jÄuztraucas tikai tad, ja jÅ«su lietojumprogrammai ir ļoti mazs latentums, jo DNS rezultÄti tiek saglabÄti arÄ« iekÅ”Äji keÅ”atmiÅÄ.
atsauces
Es pirmo reizi uzzinÄju par Å”o funkciju K8s-meetup, kas notika 25. janvÄrÄ«. Cita starpÄ notika diskusija par Å”o problÄmu.
PiezÄ«me: es izvÄlÄjos neizmantot dig Å”ajÄ rakstÄ. dig automÄtiski pievieno punktu (saknes zonas identifikatoru), padarot domÄnu par "pilnÄ«bÄ kvalificÄtu" (FQDN), nÄ vispirms izpildot to meklÄÅ”anas sarakstÄ. Par to rakstÄ«ja iekÅ”Ä viena no iepriekÅ”ÄjÄm publikÄcijÄm. TomÄr diezgan pÄrsteidzoÅ”i, ka kopumÄ standarta uzvedÄ«bai ir jÄnorÄda atseviŔķs karogs.