Raadinta DNS ee Kubernetes

Ogow. turjumi: Dhibaatada DNS ee Kubernetes, ama si ka sii saxsan, dejinta cabbirka ndots, waa la yaab caan ah, oo horeba Maaha marka hore Π³ΠΎΠ΄. Qoraal kale oo ku saabsan mawduucan, qoraageeda, injineer DevOps oo ka socda shirkad weyn oo dillaal ah oo ku taal Hindiya, ayaa ka hadlaya si aad u fudud oo kooban oo ku saabsan waxa faa'iido u leh asxaabta ku shaqeeya Kubernetes si ay u ogaadaan.

Raadinta DNS ee Kubernetes

Mid ka mid ah faa'iidooyinka ugu muhiimsan ee ku daadinta codsiyada Kubernetes waa helitaanka arji aan sal lahayn. Is dhexgalka kooxda ka dhex jira ayaa si weyn loo fududeeyay iyadoo ay ugu wacan tahay fikradda adeegga (Service), Kaas oo ah IP-ga la taaban karo oo taageera dhawr cinwaan oo IP ah. Tusaale ahaan, haddii adeegga vanilla raba inuu la xiriiro adeegga chocolate, waxay si toos ah u gali kartaa IP-ga casriga ah chocolate. Su'aashu waxay soo baxaysaa: yaa kiiskan xallin doona codsiga DNS chocolate Iyo Sidee?

Xalka magaca DNS waxaa lagu habeeyey kutlada Kubernetes iyadoo la isticmaalayo CoreDNS. Kubelet waxa uu u diiwaan gashan yahay boodh uu ku jiro CoreDNS sida magac-server ahaan faylalka /etc/resolv.conf dhammaan bacaha. Haddii aad eegto waxa ku jira /etc/resolv.conf mid kasta oo ka mid ah pods, waxay u ekaan doontaa sida tan:

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

Qaabayntan waxa isticmaala macaamiisha DNS si ay ugu gudbiyaan codsiyada serfarka DNS. Faylka ku jira resolv.conf waxaa ku jira macluumaadka soo socda:

  • adeegaha: server kaas oo codsiyada DNS loo diri doono. Xaaladeena, kani waa ciwaanka adeega CoreDNS;
  • search: Wuxuu qeexayaa dariiqa raadinta goob gaar ah. Waa arrin xiiso leh google.com ama mrkaran.dev ma aha FQDN (Magacyada domain oo dhamaystiran). Marka loo eego heshiiska caadiga ah ee inta badan xaliyayaasha DNS ay raacaan, kaliya kuwa ku dhammaada dhibco ".", oo matalaya aagga xididka, ayaa loo arkaa inay si buuxda ugu qalmaan (FDQN). Qaar ka mid ah xaliyayaashu waxay ku dari karaan qodob laftooda. Haddaba, mrkaran.dev. waa magac domain oo dhamaystiran (FQDN), iyo mrkaran.dev - Maya;
  • dhibco: Halbeegga ugu xiisaha badan (maqaalkani wuxuu ku saabsan yahay). ndots ku tilmaamaya tirada dhibcaha ee magaca codsiga ka hor inta aan loo tixgalinin magac domain "si buuxda u qalma". Tan dambe ayaan wax badan uga hadli doonaa marka aan falanqeyno isku xigxiga raadinta DNS.

Raadinta DNS ee Kubernetes

Aan aragno waxa dhaca marka aan weydiino mrkaran.dev Boodhka ku jira:

$ 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

Tijaabadaan, waxaan u dejiyay CoreDNS heerka gelitaanka all (taas oo ka dhigaysa mid hadal ah). Bal aynu eegno gunta gunta 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. Laba shay ayaa halkan ku soo jiitay dareenkaaga:

  • Codsigu wuxuu maraa dhammaan marxaladaha raadinta ilaa jawaabta ay ka kooban tahay koodka NOERROR (Macaamiisha DNS way fahmeen oo u kaydiyaan natiijada). NXDOMAIN macneheedu waa in aan wax diiwaan ah loo helin magaca domainka la bixiyay. Sababtoo ah mrkaran.dev maaha magac FQDN (sida uu qabo ndots=5), xaliye eegaa dariiqa raadinta oo go'aamiyaa siday u kala horreeyaan codsiyada;
  • cajalado А ΠΈ АААА si barbar socda u yimaad. Xaqiiqdu waxay tahay in hal mar la codsado /etc/resolv.conf Sida caadiga ah, waxaa loo habeeyey qaab raadinta barbar socda lagu sameeyo iyadoo la adeegsanayo nidaamyada IPv4 iyo IPv6. Waxaad burin kartaa habdhaqankan adiga oo ku dara ikhtiyaarka single-request Π² resolv.conf.

Fiiro gaar ah: glibc waxaa loo habayn karaa si ay u soo dirto codsiyadan si isdaba joog ah, iyo musl - maya, markaa isticmaalayaasha Alpine waa inay ogaadaan.

Ku tijaabinta dhibco

Aynu tijaabino in yar oo dheeraad ah ndots oo aan aragno sida uu u dhaqmo halbeeggani. Fikraddu waa mid fudud: ndots wuxuu go'aamiyaa in macmiilka DNS uu ula dhaqmi doono domainka mid dhammaystiran ama qaraabo ah. Tusaale ahaan, marka laga hadlayo macmiilka google DNS ee fudud, sidee ku ogaanaysaa in domainkani uu yahay mid dhammaystiran? Haddii aad dejiso ndots oo le'eg 1, macmiilku wuxuu odhan doonaa: "Oh, in google hal dhibic ma jiro; Waxaan filayaa inaan dhex mari doono liiska raadinta oo dhan." Si kastaba ha ahaatee, haddii aad weydiiso google.com, liiska daba-galayaasha gabi ahaanba waa la iska indha tiraayaa sababta oo ah magaca la codsaday ayaa buuxinaya xadka ndots (ugu yaraan hal dhibic ayaa jirta).

Aan hubino tan:

$ 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

Diiwaanada CoreDNS:

[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

Tan iyo markii mrkaran ma jiro hal dhibic, raadinta waxaa lagu sameeyay dhammaan liiska daba-galka.

Xusuusin: ficil ahaan qiimaha ugu sarreeya ndots ku kooban 15; Sida caadiga ah ee Kubernetes waa 5.

Codsiga wax soo saarka

Haddii codsigu sameeyo wicitaano badan oo shabakad dibadda ah, DNS wuxuu noqon karaa cilad ku jirta kiiska taraafikada firfircoon, maadaama xallinta magaca ay sameyso su'aalo badan oo aan loo baahnayn (ka hor inta aan nidaamku helin midka saxda ah). Codsiyada inta badan kuma daraan aagga xididka magacyada domain, laakiin tani waxay u egtahay sida jabsi. Taasi waa, halkii aad weydiin lahayd api.twitter.com, waxaad kartaa 'hardcode' api.twitter.com. (oo leh dhibco) arjiga, taas oo ku kicin doonta macaamiisha DNS inay si toos ah u eegaan amarrada domainka saxda ah.

Intaa waxaa dheer, laga bilaabo nooca Kubernetes 1.14, kordhinta dnsConfig ΠΈ dnsPolicy helay xaalad deggan. Sidaa darteed, markaad geynayso boodh, waxaad yarayn kartaa qiimaha ndots, dheh, ilaa 3 (iyo xataa ilaa 1!). Sababtan awgeed, fariin kasta oo ku dhex jirta noodhka waa inay ku jirtaa qaybta buuxda. Tani waa mid ka mid ah ganacsiyada caadiga ah marka ay tahay inaad kala doorato waxqabadka iyo qaadista. Waxay ila tahay inaad kaliya ka walwasho arrintan haddii daahitaanka aadka u hooseeya uu muhiim u yahay codsigaaga, maadaama natiijooyinka DNS sidoo kale lagu kaydiyay gudaha.

tixraacyada

Marka hore waxaan ka bartay sifadan K8s-kulan, oo la qabtay Janaayo 25. Waxaa jiray dood ku saabsan dhibaatadan, iyo waxyaabo kale.

Waa kuwan xiriiriyeyaasha qaar ee sahaminta dheeriga ah:

Xusuusin: Waxaan doortay inaanan isticmaalin dig qodobkaan. dig si toos ah ugu daraa dhibco (aqooniyaha aagga xididka), samaynta domainka "si buuxda u qalma" (FQDN), ma adigoo marka hore ku dhex marinaya liiska raadinta. Arintaan wax ku qoray mid ka mid ah daabacaadadii hore. Si kastaba ha ahaatee, waa wax lala yaabo in, guud ahaan, calan gooni ah loo qoondeeyo habdhaqanka caadiga ah.

DNS-gelin farxad leh! is arag danbe!

PS ka turjumaan

Sidoo kale ka akhri boggayaga:

Source: www.habr.com

Add a comment