Späť na blog

Kubernetes DNS služba: Sprievodca pre začiatočníkov

Kubernetes DNS služba: Sprievodca pre začiatočníkov

Kubernetes, tiež známy ako K8s, je open-source orchestračný systém na automatizáciu nasadenia, škálovania a správy kontajnerizovaných aplikácií. Jeho prenosnosť, flexibilita a možnosti automatického škálovania z neho robia široko používaný systém. Spomedzi všetkých vynikajúcich funkcií je možnosť vytvárať DNS záznamy pre služby a pody bezkonkurenčná v porovnaní s inými softvérovými systémami. Služba Kubernetes DNS vám umožňuje kontaktovať služby pomocou konzistentných názvov DNS namiesto IP adries.

Požiadavky

Ak chcete z tohto návodu vyťažiť maximum a lepšie porozumieť službe Kubernetes DNS, nezabudnite si zopakovať základy Kubernetes. Prospeje vám aj prečítanie Prehľadu DNS terminológie, komponentov a konceptov, aby ste lepšie porozumeli konceptom DNS. Okrem toho vám prehľad ekosystému Docker a základy technológie kontajnerizácie poskytnú veľkú výhodu.

Čo je to DNS systém?

Domain Name System (DNS) je mechanizmus na prepojenie rôznych druhov informácií s ľahko zapamätateľnými názvami, ako sú IP adresy. Používanie DNS systému na preklad požadovaných názvov na IP adresy uľahčuje koncovým používateľom bez námahy dosiahnuť ich cieľový doménový názov. Väčšina clusterov Kubernetes obsahuje internú službu DNS, ktorá je predvolene nakonfigurovaná tak, aby ponúkala odľahčený prístup k zisťovaniu služieb. Aj keď sú pody a služby vytvorené, odstránené alebo presunuté medzi uzlami, vstavané zisťovanie služieb zjednodušuje aplikáciám identifikáciu a komunikáciu s clustermi Kubernetes.

V nedávnych verziách Kubernetes, sa technické špecifiká služby Kubernetes DNS zmenili. Tento návod si kladie za cieľ predstaviť implementácie kube-dns aj CoreDNS služby Kubernetes DNS. Podrobne porozumieme DNS záznamom Kubernetes a ukážeme si, ako Kubernetes DNS funguje.

Čo zahŕňa služba Kubernetes DNS?

Pred verziou 1.11 bola služba Kubernetes DNS založená na kube-dns. Bezpečnosť a súkromie však stále predstavovali vážny problém. Neskôr komunita Kubernetes v novej verzii 1.11 predstavila CoreDNS, aby vyriešila problémy s bezpečnosťou a stabilitou kube-dns.

Bez ohľadu na to, ktorú verziu softvéru používate na správu DNS záznamov, kube-dns a CoreDNS fungujú podobným spôsobom:

  • Služba kube-dns a jeden alebo viac podov sú vytvorené.
  • Služba kube-dns monitoruje Kubernetes API na výskyt udalostí služieb a koncových bodov a podľa potreby mení svoje DNS záznamy. Keď upravujete tieto služby Kubernetes a ich súvisiace pody pomocou operácií vytvárania, úpravy alebo odstraňovania, tieto udalosti sa automaticky spúšťajú.
  • Kubelet priraďuje IP adresu clustera služby kube-dns každému novému podu do etc/resolv.conf nameserver možnosti, spolu s vhodnými search nastaveniami na povolenie kratších názvov hostiteľov:
  • Kontajnerizované aplikácie potom môžu prekladať názvy hostiteľov ako example-service.namespace na príslušnú IP adresu clustera.

Prehľad DNS záznamov Kubernetes

Pozrime sa bližšie na DNS záznamy Kubernetes pomocou príkladu. Celý DNS záznam typu A pre službu Kubernetes bude vyzerať takto:

service.namespace.svc.cluster.local

Pod by mal záznam v tomto formáte, ktorý by predstavoval skutočnú IP adresu podu:

10.32.0.125.namespace.pod.cluster.local

Okrem toho sa vytvárajú SRV záznamy pre špecifikované porty služby Kubernetes:

Vďaka tomu môže vaša aplikácia alebo mikroslužba pristupovať k jednoduchému a konzistentnému názvu hostiteľa, aby dosiahla iné služby alebo pody v clustere, a to vďaka vstavanému mechanizmu zisťovania služieb založenému na DNS.

Prekladanie kratších názvov hostiteľov a vyhľadávanie domén

Nebudete mučiť vždy použiť celý názov hostiteľa na prístup k inej službe kvôli príponám vyhľadávacej domény nastaveným v resolv.conf súbore. Ak kontaktujete službu v rovnakom mennom priestore, môžete ju jednoducho volať jej názvom:

Pridajte other-service do dopytu, ak je služba v inom mennom priestore:

Ak sa snažíte kontaktovať pod, budete musieť použiť aspoň nasledovné:

Iba prípony .svc sa automaticky dopĺňajú v predvolenom resolv.conf súbore. Preto je nevyhnutné špecifikovať nastavenia až po .pod. Ďalej si prejdeme zložitosti dvoch alternatívnych implementácií Kubernetes DNS, o ktorých sme sa doteraz dozvedeli.

Implementácia Kubernetes DNS

Kubernetes verzia 1.11 poskytla nový softvér na správu služby kube-dns , ako bolo spomenuté v predchádzajúcej časti. Hlavným dôvodom novej aktualizácie bolo zlepšenie výkonu a bezpečnosti služby. Začnime s integráciou kube-dns od začiatku.

  1. kube-dns

V predchádzajúcej verzii Kubernetes 1.11 mala služba kube-dns tri kontajnery fungujúce v pode kube-dns v mennom priestore kube-system . Pozrite sa na tri kontajnery nižšie:

  • kube-dns: kontajner, ktorý spúšťa SkyDNS a funguje ako služba na prekladanie dopytov DNS.
  • dnsmasq: Odpovede SkyDNS sú ukladané do vyrovnávacej pamäte pomocou dnsmasq, čo je bežný ľahký DNS resolver a cache.
  • sidecar: kontajner na boku služby, ktorý vykonáva reportovanie metrík a reaguje na kontroly stavu.

CoreDNS bol vytvorený v dôsledku bezpečnostných zraniteľností v Dnsmasq a obáv o výkon a škálovateľnosť SkyDNS.

  1. CoreDNS

Ako nová služba Kubernetes DNS bol CoreDNS vo verzii Kubernetes 1.11 povýšený na všeobecnú dostupnosť (General Availability). To znamená, že je pripravený na produkciu a bude ho používať mnoho inštalačných nástrojov a poskytovateľov spravovaného Kubernetes ako predvolenú službu DNS klastra.

CoreDNS je flexibilný a rozšíriteľný DNS server, ktorý funguje ako Kubernetes DNS klaster. Vykonáva všetky funkcie predchádzajúceho systému. DNS kontajner je zodpovedný za prekladanie a ukladanie DNS dopytov do vyrovnávacej pamäte. CoreDNS reaguje na kontroly stavu a poskytuje metriky v jedinom kontajneri. Okrem toho rieši niekoľko drobných nedostatkov a poskytuje nové možnosti na riešenie problémov s výkonom a bezpečnosťou:

  • Boli vyriešené niektoré konflikty medzi používaním stubDomains a externými službami.
  • Náhodným usporiadaním poradia, v akom sú vrátené niektoré záznamy, môže CoreDNS zlepšiť vyvažovanie záťaže na základe DNS typu round-robin load balancing.
  • Vďaka lepšiemu prechádzaniu každou z prípon vyhľadávacej domény definovaných v resolv.conf, funkcia s názvom autopath môže zlepšiť časy odozvy DNS pri preklade externých názvov hostiteľov.
  • Aj keď pod neexistuje, kube-dns 10.32.0.125.namespace.pod.cluster.local sa vždy preloží na 10.32.0.125. CoreDNS ponúka overený režim podov (pods validated mode), ktorý sa preloží iba vtedy, ak existuje pod so správnou IP adresou a menným priestorom.

Ak si chcete rozšíriť svoje znalosti o Kubernetes endpoints, autopaths, a wildcards, pozrite si návod na ako Kubernetes umožňuje čítanie údajov zóny z jeho klastra.

Funkcie prispôsobenia

Kubernetes vám umožňuje konfigurovať DNS pody a prispôsobiť preklad DNS klastra, a to vďaka službe Kubernetes customizing DNS service. Správcovia môžu tieto služby využiť na zmenu upstream nameserverov alebo prípon vyhľadávacej domény definovaných v resolv.conf. Predovšetkým je tu doplnková funkcia na prispôsobenie podov a kontajnerov pomocou možnosti dnsConfig :

Kubernetes DNS Demo Pod Yaml

Aktualizácia tejto konfigurácie vynúti prepísanie resolv.conf podu, čo umožní prejavenie zmien. Vyššie uvedené nastavenie vytvorí súbor obsahujúci riadky nameserver 203.0.113.44 a search custom.dns.local , čo sa priamo prenáša do bežných možností resolv.conf .

Záver

V tomto návode sme vás previedli základmi služby Kubernetes DNS a jej implementáciou v rôznych verziách. Diskutovali sme aj o DNS záznamoch Kubernetes na konkrétnom príklade. Okrem toho sme poukázali na niektoré ďalšie možnosti konfigurácie na prispôsobenie podov a riešenie DNS dopytov. Toto pokrýva základy služby Kubernetes DNS, ale vaše učenie by tu nemalo skončiť. Pozrite si oficiálnu dokumentáciu Kubernetes, aby ste sa o tejto téme dozvedeli viac.

Ak si chcete rozšíriť svoje znalosti o DevOps a ponoriť sa do základov Kubernetes, pozrite si nasledujúce návody na našom blogu:

Príjemnú prácu!

author

Pranay Kapgate

Autor · CloudSigma

Preslav Dobrev je kreatívny dizajnér v spoločnosti CloudSigma, ktorý sa zameriava na konzistentnú firemnú identitu prostredníctvom tradičných a inovatívnych marketingových kanálov. Dokáže brilantne spájať umeleckú víziu so strategickým marketingom, čím vytvára pôsobivé príbehy značky.

Komentáre

Zatiaľ žiadne komentáre. Buďte prvý.