Natrag na blog

Kubernetes DNS servis: Vodič za početnike

Kubernetes DNS servis: Vodič za početnike

Kubernetes, također poznat kao K8s, je open-source sustav za orkestraciju za automatizaciju postavljanja, skaliranja i upravljanja kontejneriziranim aplikacijama. Njegova prenosivost, fleksibilnost i mogućnosti automatskog skaliranja čine ga široko korištenim sustavom. Iznad svih istaknutih značajki, opcija stvaranja DNS zapisa za usluge i podove čini ga nepobjedivim u usporedbi s drugim softverskim sustavima. Kubernetes DNS usluga omogućuje vam kontaktiranje usluga s dosljednim DNS nazivima umjesto IP adresa.

Preduvjeti

Kako biste izvukli najviše iz ovog vodiča i bolje razumjeli Kubernetes DNS uslugu, svakako ponovite osnove Kubernetesa. Također će vam koristiti čitanje Pregleda DNS terminologije, komponenti i koncepata kako biste bolje razumjeli DNS koncepte. Osim toga, pregled Docker ekosustava i osnove tehnologije kontejnerizacije pružit će veliku prednost.

Što je DNS sustav?

Domain Name System (DNS) je mehanizam za povezivanje različitih vrsta informacija s lako pamtljivim nazivima, kao što su IP adrese. Korištenje DNS sustava za prevođenje naziva zahtjeva u IP adrese olakšava krajnjim korisnicima da bez napora dođu do svog ciljanog naziva domene. Većina Kubernetes klastera uključuje internu DNS uslugu konfiguriranu prema zadanim postavkama kako bi ponudila lagan pristup za otkrivanje usluga. Čak i kada se podovi i usluge stvaraju, brišu ili premještaju između čvorova, ugrađeno otkrivanje usluga pojednostavljuje aplikacijama prepoznavanje i komunikaciju s Kubernetes klasterima.

U novijim verzijama Kubernetesa, tehnički detalji Kubernetes DNS usluge su se promijenili. Ovaj vodič ima za cilj predstaviti i kube-dns i CoreDNS implementacije Kubernetes DNS usluge. Detaljno ćemo objasniti Kubernetes DNS zapise i demonstrirati kako Kubernetes DNS radi.

Što je uključeno u Kubernetes DNS uslugu?

Prethodno se Kubernetes DNS usluga temeljila na kube-dns-u prije izdanja verzije 1.11. Međutim, sigurnost i privatnost i dalje su bile ozbiljan problem. Kasnije je Kubernetes zajednica uvela CoreDNS u novoj verziji 1.11 kako bi riješila probleme sa sigurnošću i stabilnošću kube-dns-a.

Bez obzira koju verziju softvera koristite za upravljanje DNS zapisima, kube-dns i CoreDNS rade na sličan način:

  • A kube-dns usluga i jedan ili više podova se stvaraju.
  • Usluga kube-dns nadzire Kubernetes API za događaje usluga i krajnjih točaka te mijenja svoje DNS unose prema potrebi. Kada modificirate ove Kubernetes usluge i njihove povezane podove operacijama stvaranja, uređivanja ili brisanja, ovi se događaji automatski pokreću.
  • Kubelet dodjeljuje IP adresu klastera od kube-dns usluge svakom novom podu etc/resolv.conf nameserver opciju, zajedno s odgovarajućim search postavkama kako bi se omogućili kraći nazivi računala:
  • Kontejnerizirane aplikacije tada mogu razlučiti nazive računala poput example-service.namespace na odgovarajuću IP adresu klastera.

Pregled Kubernetes DNS zapisa

Upoznajmo se bolje s Kubernetes DNS zapisima uz pomoć primjera. Cijeli DNS A zapis za Kubernetes uslugu izgledat će ovako:

service.namespace.svc.cluster.local

Pod bi imao zapis u ovom formatu, koji bi predstavljao stvarnu IP adresu poda:

10.32.0.125.namespace.pod.cluster.local

Osim toga, SRV zapisi se stvaraju za navedene portove Kubernetes usluge:

Kao rezultat toga, vaša aplikacija ili mikrousluga može pristupiti jednostavnom i dosljednom nazivu računala kako bi došla do drugih usluga ili podova na klasteru, zahvaljujući ugrađenom mehanizmu za otkrivanje usluga temeljenom na DNS-u.

Razlučivanje kraćih naziva računala i pretraživanje domena

Nećete uvijek morati koristiti cijeli naziv hosta za pristup drugoj usluzi zbog sufiksa domene pretraživanja postavljenih u resolv.conf datoteci. Ako kontaktirate uslugu u istom prostoru naziva, možete je jednostavno pozvati njezinim nazivom:

Dodajte other-service upitu ako je usluga u drugom prostoru naziva:

Morat ćete upotrijebiti barem sljedeće ako ciljate pod:

Samo se .svc sufiksi automatski dovršavaju u zadanoj resolv.conf datoteci. Stoga je bitno navesti postavke do .pod. Zatim prođimo kroz zamršenosti dviju alternativnih Kubernetes DNS implementacija o kojima smo do sada učili.

Kubernetes DNS implementacija

Kubernetes verzija 1.11 donijela je novi softver za upravljanje kube-dns uslugom, kao što je spomenuto u prethodnom odjeljku. Glavni razlog za novo ažuriranje bio je poboljšanje performansi i sigurnosti usluge. Počnimo s kube-dns integracijom od samog početka.

  1. kube-dns

U prethodnoj verziji Kubernetes 1.11, kube-dns usluga imala je tri spremnika koji su radili u kube-dns podu u kube-system prostoru naziva. Pogledajte tri spremnika u nastavku:

  • kube-dns: spremnik koji pokreće SkyDNS i funkcionira kao usluga za razrješavanje DNS upita.
  • dnsmasq: SkyDNS odgovore predmemorira dnsmasq, uobičajeni lagani DNS razrješivač i predmemorija.
  • sidecar: spremnik sa strane usluge koji obavlja izvješćivanje o metrici i reagira na provjere ispravnosti.

CoreDNS je stvoren kao rezultat sigurnosnih ranjivosti u Dnsmasq-u i problema s performansama skalabilnosti sa SkyDNS-om.

  1. CoreDNS

Kao nova Kubernetes DNS usluga, CoreDNS je nadograđen na opću dostupnost (General Availability) u Kubernetesu 1.11. To znači da je spreman za produkciju i da će ga mnogi instalacijski alati i upravljani Kubernetes pružatelji koristiti kao zadanu DNS uslugu klastera.

CoreDNS je fleksibilan i proširiv DNS poslužitelj koji djeluje kao Kubernetes DNS klaster. Obavlja sve funkcionalnosti prethodnog sustava. DNS spremnik odgovoran je za razrješavanje i predmemoriranje DNS upita. CoreDNS odgovara na provjere ispravnosti i pruža metriku u jednom spremniku. Osim toga, rješava nekoliko manjih nedostataka i pruža nove mogućnosti za rješavanje problema s performansama i sigurnošću:

  • Riješeni su neki sukobi između upotrebe stubDomains i vanjskih usluga.
  • Nasumičnim odabirom redoslijeda kojim se vraćaju neki unosi, CoreDNS može poboljšati DNS-bazirano kružno raspodjelu opterećenja.
  • Boljim prolaskom kroz svaki od sufiksa domene pretraživanja definiranih u resolv.conf, značajka pod nazivom autopath može poboljšati vrijeme odgovora DNS-a pri razrješavanju vanjskih naziva hostova.
  • Čak i ako pod ne postoji, kube-dns 10.32.0.125.namespace.pod.cluster.local će se uvijek razriješiti u 10.32.0.125. CoreDNS nudi način provjere podova (pods validated mode) koji će se razriješiti samo ako postoji pod s ispravnom IP adresom i prostorom naziva.

Kako biste unaprijedili svoje znanje o Kubernetes endpoints, autopaths, i wildcards, pogledajte vodič o tome kako Kubernetes omogućuje čitanje podataka zone iz svog klastera.

Značajke prilagodbe

Kubernetes vam omogućuje konfiguraciju DNS podova i prilagodbu DNS razrješavanja klastera, zahvaljujući Kubernetesovoj usluzi prilagodbe DNS-aAdministratori mogu iskoristiti ove usluge za izmjenu uzvodnih poslužitelja naziva ili sufiksa domene pretraživanja definiranih u resolv.conf. Iznad svega, postoji dodatna značajka za personalizaciju podova i spremnika pomoću opcije dnsConfig :

Kubernetes DNS Demo Pod Yaml

Ažuriranje ove konfiguracije prisilit će ponovno pisanje podovog resolv.conf, omogućujući da promjene stupe na snagu. Gornja postavka stvorit će datoteku koja sadrži retke nameserver 203.0.113.44 i search custom.dns.local, što se izravno prenosi na uobičajene opcije resolv.conf .

Zaključak

U ovom vodiču proveli smo vas kroz osnove Kubernetes DNS usluge i njezinu implementaciju u različitim verzijama. Također smo raspravljali o Kubernetes DNS zapisima uz pomoć primjera. Osim toga, istaknuli smo neke dodatne konfiguracijske opcije za prilagodbu podova i rješavanje DNS upita. Ovo pokriva osnove Kubernetes DNS usluge, ali vaše učenje ne bi trebalo ovdje završiti. Pogledajte službenu Kubernetes dokumentaciju kako biste saznali više o toj temi.

Kako biste proširili svoje DevOps znanje i uronili u osnove Kubernetesa, pogledajte sljedeće vodiče s našeg bloga:

Sretno računanje!

author

Pranay Kapgate

Autor · CloudSigma

Preslav Dobrev je kreativni dizajner u CloudSigma, usredotočen na dosljedan poslovni identitet korištenjem tradicionalnih i inovativnih marketinških kanala. Vješt je u spajanju umjetničke vizije sa strateškim marketingom kako bi stvorio dojmljive brendirane priče.

Komentari

Još nema komentara. Budite prvi.