MĂ€rk. tĂ”lge.: DNS probleem Kubernetesis, tĂ€psemalt â parameetri seadistamine ndots, â ĂŒllatavalt populaarne, ja juba . JĂ€rjekordses sellele teemal kirjutises rÀÀgib autor â DevOps-insener suurest maaklerifirmast Indias â vĂ€ga lihtsal ja lakoonilisel viisil, millest on kasu kolleegidele, kes kasutavad Kubernetesât.

Ăks peamisi eeliseid rakenduste juurutamisel Kuberneteses on probleemivaba rakenduste avastamine. Siseriiklike suhtlemine muutub oluliselt lihtsamaks teenuse (), mis on virtuaalne IP, toetav podâide IP-aadresside kogumit. NĂ€iteks, kui teenus vanilla tahab suhelda teenusega chocolate, saab ta otse pöörduda virtuaalse IP poole chocolate. Tekib kĂŒsimus: kes sel juhul lahendab DNS-pĂ€ringu chocolate ja kuidas?
DNS-nimede lahendamine seadistatakse Kubernetes klastris lĂ€bi . Kubelet kirjutab podâi CoreDNS nime serverina kĂ”ikide podâide failidesse /etc/resolv.conf . Kui vaadata mis tahes podâi sisu, nĂ€eb see vĂ€lja umbes jĂ€rgmine: /etc/resolv.conf search hello.svc.cluster.local svc.cluster.local cluster.local nameserver 10.152.183.10 options ndots:5
search hello.svc.cluster.local svc.cluster.local cluster.local
nameserver 10.152.183.10
options ndots:5 See konfiguratsioon on DNS-kliendi jaoks, et suunata pÀringud DNS-serverisse. Failis resolv.conf on jÀrgmine teave:
- nameserver: server, kuhu DNS-pÀringud suunatakse. Meie puhul on see CoreDNS teenuse aadress;
- search: mÀÀrab konkreetse domeeni otsingutee. Huvi pÀrast
google.comvĂ”imrkaran.devei ole FQDN (). Vastavalt enamik DNS-resolvery peetavatele standarditele loetakse tĂ€ielikeks (FDQN) domeenideks vaid need, mis lĂ”pevad punktiga â.â, mis tĂ€histab juureala. MĂ”ned resolver'id suudavad punkti automaatselt lisada. Seega,mrkaran.dev.â on tĂ€ielik domeeninimi (FQDN), kuidmrkaran.devâ ei ole; - ndots: kĂ”ige huvitavam parameeter (see artikkel kĂ€sitleb just seda).
ndotsmÀÀrab ÀÀrepunktide arvu nime pĂ€ringus, mille saavutamisel loetakse see âtĂ€ielikuksâ domeeninimeks. RÀÀgime sellest hiljem, kui analĂŒĂŒsime DNS-otsingu jĂ€rjekorda.

Vaadakem, mis juhtub, kui me pÀrime mrkaran.dev pod's:
$ 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 KĂ€esoleva eksperimendi jaoks seadsin CoreDNS logimise taseme all (mis teeb selle ĂŒsna sĂ”nakaks). Vaadakem podâi logisid 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.145091744sHuh. Siin köidavad tÀhelepanu kaks asja:
- PÀring lÀbib kÔik otsinguetapid, kuni vastus sisaldab koodi
NOERROR(DNS-kliendid mÔistavad seda ja sÀilitavad tulemuseks).NXDOMAINtÀhendab, et antud domeeninime kohta pole kirjet leitud. Kunamrkaran.devei ole FQDN-nimi (vastavaltndots=5), resolver vaatab otsinguteed ja mÀÀrab pÀringute jÀrjekorra; - Kirjed
AjaAAAAtulevad paralleelselt. Asi on selles, et korduvad pĂ€ringud on/etc/resolv.confvaikimisi seadistatud nii, et tehakse paralleelne otsing nii IPv4 kui ka IPv6 protokollide kaudu. Seda kĂ€itumist saab tĂŒhistada, lisades valikusingle-requestĂŒhesresolv.conf.
MĂ€rkus: glibc vĂ”ib seada nende pĂ€ringute jĂ€rjestikuseks saatmiseks, musl â ei, se tĂ€hendab, et Alpine'i kasutajad peaksid seda meeles pidama.
Katsume ndotseiga
Teeme veel mĂ”ned katsetused ndots ja vaatame, kuidas see parameeter kĂ€itub. Idee on lihtne: ndots mÀÀrab, kas DNS-kliendile tundub domeen absoluutne vĂ”i suhteline. NĂ€iteks, kuidas google DNS-kliendi puhul teada, kas see domeen on absoluutne? Kui seadistada ndots vÀÀrtuseks 1, ĂŒtleb klient: âOh, siin google pole ĂŒhtki punkti; vĂ”ib-olla lĂ€hen kogu otsingulisti ĂŒle.â Kui aga kĂŒsida google.com, siis suffixide nimekiri jĂ€etakse tĂ€ielikult tĂ€helepanuta, kuna kĂŒsitud nimi rahuldab kĂŒnnise ndots (kui on vĂ€hemalt ĂŒks punkt).
Kinnitage see:
$ cat /etc/resolv.conf
options ndots:1
$ nslookup mrkaran
Server: 10.152.183.10
Address: 10.152.183.10#53
** server ei suuda leida mrkaran: NXDOMAINCoreDNS logid:
[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 Kuna mrkaran pole ĂŒhtki punkti, otsing tehti kogu suffixide nimekirja pĂ”hjal.
MÀrkus: praktikas maksimaalne vÀÀrtus ndots piiratud 15; vaikimisi Kubernetesis on see 5.
Kasutamine tootmises
Kui rakendus teeb palju vĂ€liseid vĂ”rguvĂ€ljakutseid, vĂ”ib DNS olla kitsaskohaks suure liikluse korral, kuna nime lahendamisel tehakse mitmeid tarbetuid pĂ€ringuid (enne kui sĂŒsteem leiab vajaliku). Rakendused ei lisanud tavaliselt juurezonaid domeeninimedele, kuid see on ĂŒsna toimiv lahendus. See tĂ€hendab, et selle asemel, et kĂŒsida api.twitter.com, vĂ”ite 'hardcode'ida api.twitter.com. (punktiga) rakendusse, mis sunnib DNS-kliente tegema autoriteetset otsingut otse absoluutsele domeenile.
Lisaks on alates Kubernetes 1.14 versioonist laiendused dnsConfig ja dnsPolicy saanud stabiilsuse staatuse. Seega saab pod'i juurutamisel vÀÀrtust vĂ€hendada. ndots, ĂŒtleme, kuni 3 (ja isegi kuni 1!). Selle tĂ”ttu peab iga sĂ”num sĂ”lmes sisaldama tĂ€ielikku domeeni. See on ĂŒks klassikalisi kompromisse, millega peab valima jĂ”udluse ja ĂŒlekantavuse vahel. Arvan, et selle ĂŒle tasub muretseda ainult juhul, kui ÀÀrmiselt madalad latentsused on teie rakenduse jaoks eluliselt olulised, kuna DNS-i tulemused ka vahemĂ€lus.
Lingid
Selle omaduse kohta sain esmakordselt teada , mis toimus 25. jaanuaril. Seal rÀÀgiti ka sellest probleemist.
Siin on mÔned lingid edasiseks uurimiseks:
- , miks on ndots=5 Kuberneteses;
- kuidas ndots-i muutmine mÔjutab rakenduse tÔhusust;
- musl ja glibc resolver`ite vahel.
MĂ€rkus: eelistasin mitte kasutada dig selles artiklis. dig automaatne punkt (juurkonna identifikaator), muutes domeeni âtĂ€ielikuksâ (FQDN), ei lĂ€bi otsinguloendi. Kirjutasin sellest . TĂ”epoolest, on ĂŒsna ĂŒllatav, et ĂŒldise kĂ€itumise saavutamiseks tuleb seada eraldi lipuke.
Headjat DNSâing! Kohtumiseni!
P.S. tÔlkija mÀrkused
Lugege ka meie blogist:
- «»;
- «»;
- âIllustreeritud juhend Kuberneteses olevate vĂ”rkude seadistamiseksâ: , .
Allikas: habr.com
