Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro: ✔️ AKS Automatic ✔️ AKS Standard
Pro většinu produkčních úloh je AKS Automatic doporučenou výchozí volbou pro AKS, připravenou pro produkční nasazení. LocalDNS je předem nakonfigurovaný v automatických clusterech AKS. V AKS Standard závisí chování LocalDNS na verzi Kubernetes a na existujícím profilu LocalDNS fondu uzlů.
Poznámka:
Od verze Kubernetes 1.37 AKS Standard ve výchozím nastavení používá režim Preferred LocalDNS pro fondy uzlů, které splňují podmínky a nemají výslovně nakonfigurovaný profil LocalDNS. V Preferred režimu povolí AKS LocalDNS pouze v případě, že fond uzlů a cluster projdou požadovanými kontrolami kompatibility. Pokud kontroly selžou, localDNS zůstane zakázaná. Explicitně nakonfigurované profily mají před tímto výchozím nastavením přednost, takže fond uzlů explicitně nastavený na Disabled zůstane zakázaný.
Chcete-li zabránit povolení LocalDNS, explicitně nastavte režim LocalDNS na Disabled. Pokyny najdete v tématu Zakázání localDNS ve fondu uzlů.
LocalDNS je funkce V AKS, která zlepšuje výkon a odolnost překladu DNS pro úlohy spuštěné ve vašem clusteru. Spuštěním proxy serveru DNS na každém uzlu snižuje latenci dotazů DNS, zlepšuje spolehlivost během přechodných přerušení sítě a poskytuje pokročilé ovládací prvky ukládání do mezipaměti a předávání, když potřebujete přizpůsobení.
Informace o tom, co je LocalDNS, včetně podrobností o architektuře a klíčových funkcí, najdete v tématu Překlad DNS v Azure Kubernetes Service (AKS).
Automatické chování AKS a AKS Standard LocalDNS
| Behavior | AKS automatické | AKS Standard |
|---|---|---|
| Dostupnost LocalDNS | Předkonfigurováno ve výchozím nastavení | Kubernetes 1.31 až 1.36: vypnuto, pokud ho nepovolíte. Kubernetes 1.37 a novější: jako výchozí je nastaven režim Preferred a je povolen, pokud kontroly kompatibility úspěšně projdou, pokud fond uzlů explicitně nenastaví Disabled |
| Typická akce | Ověření a monitorování výchozích hodnot, přizpůsobení pouze v případě potřeby | Kubernetes 1.31 až 1.36: Povolte, nakonfigurujte a vylaďte fond uzlů. Kubernetes 1.37 a novější: Před upgradem zkontrolujte profil a odhlaste se, pokud vaše cesta DNS není připravená. |
| Pokyny pro produkční prostředí | Doporučené výchozí nastavení připravené pro produkční nasazení pro většinu úloh AKS | Použijte, když potřebujete úplnou ruční kontrolu nad konfigurací clusteru. |
Kontroly kompatibility pro režim Preferred
Od verze Kubernetes 1.37 přiřazuje AKS Standard režim Preferred způsobilým fondům uzlů, které nemají explicitně zadaný profil LocalDNS, při jejich vytvoření nebo aktualizaci. AKS zachovává explicitně nakonfigurované profily.
Před počátečním povolením LocalDNS v Preferred režimu zkontroluje AKS následující požadavky na kompatibilitu. Pokud požadavek není splněný, localDNS zůstane zakázaný.
| Requirement | Kompatibilní chování | Pokud není kompatibilní |
|---|---|---|
| Verze Kubernetes | Kubernetes 1.37 a novější může povolit LocalDNS v Preferred režimu |
Starší verze ověřují konfiguraci, ale nepovolují LocalDNS. |
| Typ clusteru | Standardní fondy uzlů AKS používají výchozí chování Preferred |
AKS Automatic používá vlastní předkonfigurované chování LocalDNS a nepoužívá tuto výchozí cestu. |
| Existující profil LocalDNS | Fondy uzlů bez explicitního profilu LocalDNS jsou ve výchozím nastavení nastaveny na Preferred |
AKS zachovává explicitní profily, včetně Disabled |
| Operační systém uzlu a bitová kopie jeho obrazu | Azure Linux nebo Ubuntu 22.04 a novější | LocalDNS se automaticky nepovoluje ve skupinách uzlů používajících nepodporované operační systémy nebo image, jako jsou Windows, Ubuntu 20.04 nebo vlastní image. |
| Kapacita SKU virtuálního počítače | Skladová položka virtuálního počítače má dostatek procesoru a paměti pro LocalDNS. | LocalDNS zůstává neaktivní |
| Režim CNI | Spravovaná konfigurace CNI | Funkce Přineste si vlastní CNI (networkPlugin=none) automaticky nepovoluje LocalDNS. |
| Zásady sítě | V clusterech používajících Cilium nebo Calico nejsou přítomny žádné síťové zásady specifické pro Kubernetes ani pro poskytovatele, s výjimkou výchozí zásady kube-system/konnectivity-agent. |
LocalDNS zůstane vypnutý, pokud jsou tyto zásady nastaveny, i když povolují provoz DNS. |
| NodeLocal DNSCache | Upstream node-local-dns DaemonSet není k dispozici. |
LocalDNS zůstane při instalaci upstreamové služby NodeLocal DNSCache zakázaná. |
Jakmile AKS povolí LocalDNS v Preferred režimu, zůstane povolený během následných aktualizací fondu nesouvisejících uzlů. Chcete-li jej zakázat, výslovně nastavte LocalDNS mode na hodnotu Disabled.
Důležité
Upgrade standardního fondu uzlů AKS na Kubernetes 1.37 nebo novější verzi může aktivovat LocalDNS, pokud fond uzlů nemá explicitně nastavený profil LocalDNS. Aktivace LocalDNS změní cestu předávání DNS používanou úlohami.
Před upgradem:
- Zkontrolujte, jestli má každý fond uzlů explicitní profil LocalDNS.
- Ověřte, že každý vlastní server DNS virtuální sítě přijímá dotazy DNS přes udp i port TCP 53 z podsítě uzlu AKS.
- Ověřte, že skupiny zabezpečení sítě, brány firewall, síťové virtuální zařízení a trasy povolují oba protokoly.
- Otestujte změnu v neprodukční skupině uzlů.
- Pokud síť není připravena pro LocalDNS, před upgradem explicitně nastavte
modenaDisabled.
Aktualizace profilu LocalDNS u existujícího fondu uzlů spustí opětovné vytvoření bitové kopie uzlu, pokud se výsledný profil liší od aktuálního profilu. Tato podmínka zahrnuje změnu režimu na Disabled. Naplánujte dočasnou nedostupnost uzlu a odpovídajícím způsobem nakonfigurujte repliky úloh a rozpočty přerušení podů.
Osvědčené postupy pro konfiguraci LocalDNS
Při implementaci LocalDNS v clusterech AKS zvažte následující osvědčené postupy:
-
Začněte minimální konfigurací: Začněte jednoduchou konfigurací, která používá
Preferredrežim k ověření syntaxe konfigurace LocalDNS před přechodem doRequiredrežimu. RežimPreferredověří konfiguraci bez povolení LocalDNS a umožňuje včas zachytit chyby konfigurace, aniž by to mělo vliv na váš cluster. -
Implementace správných strategií ukládání do mezipaměti: Konfigurace nastavení mezipaměti na základě charakteristik úloh:
- U často se měnících záznamů používejte kratší
cacheDurationInSecondshodnoty. Při tom je důležité si uvědomit, že cacheDurationInSeconds funguje jako limit hodnoty TTL záznamu DNS, ale nezvyšuje ho. Výsledná hodnota TTL je menší hodnota z toho, co je vráceno z upstreamu nebo nastaveno v cache pluginu. - U stabilních záznamů používejte k omezení dotazů DNS delší dobu ukládání do mezipaměti.
- Povolte
serveStales příslušnými nastaveními, aby byla služba zachována během výpadků DNS. - Ukládání do mezipaměti s localDNS funguje nejlépe a nezaručuje zastaralé odpovědi. Mezipaměť je rozdělena na 256 částí a s výchozím maximem 10 000 položek, což umožňuje každé části pojmout přibližně 39 položek. Když je shard plný a je potřeba přidat novou položku, jedna z existujících položek se náhodně vybere, aby byla vyřazena. U starších položek neexistuje žádná předvolba nebo jejich platnost vyprší. V důsledku toho nemusí být zastaralý záznam vždy dostupný, zejména v případě velkého objemu dotazů.
- U často se měnících záznamů používejte kratší
-
Monitorování výkonu DNS: Po povolení LocalDNS monitorujte výkon DNS vaší aplikace pomocí:
- Metriky výkonu aplikací
- Metriky uzlů pro detekci sníženého síťového tlaku
- Položky protokolu, když je
queryLoggingnastavena naLog.
- Dodržujte princip nejnižších oprávnění: Při konfiguraci pravidel předávání DNS povolte přístup pouze k požadovaným serverům a doménám DNS.
- Testování před produkčním nasazením: Před uvedením do produkčních clusterů vždy otestujte konfiguraci LocalDNS v neprodukčním prostředí.
- Použití infrastruktury jako kódu (IaC):: Uložte soubor localdnsconfig.json do úložiště infrastruktury a zahrňte ho do šablon nasazení AKS.
- Konfigurace sítě pro předávání TCP: Při použití protokolu TCP pro předávání DNS do virtuální sítěDNS zajistěte, aby vaše skupiny zabezpečení sítě (NSG), brány firewall nebo síťová virtuální zařízení (NVA) neblokovaly provoz TCP mezi servery CoreDNS/LocalDNS a VnetDNS.
- Vyhněte se povolení NodeLocal DNSCache i LocalDNS: Nedoporučuje se povolit jak NodeLocal DNSCache Kubernetes, tak LocalDNS ve fondu uzlů. I když AKS tuto konfiguraci neblokuje, veškerý provoz DNS se směruje přes LocalDNS, což může vést k neočekávanému chování nebo snížení výhod NodeLocal DNSCache.
- Před povolením LocalDNS neuložte limit připojení TCP na nadřazený vlastní server DNS: Pokud povolíte LocalDNS ve fondu uzlů, každý uzel otevře dlouhotrvající připojení TCP z místního proxy serveru DNS k upstreamovém překladači místo krátkých výměn UDP použitých dříve. Pokud je váš vlastní server DNS (například BIND, Nevázaný, Windows DNS nebo zařízení třetí strany) nakonfigurovaný s pevným limitem pro souběžná připojení klientů TCP nebo pokud jste tento limit upravili na základě provozu před localDNS, můžou být nová připojení TCP z LocalDNS odmítnuta, což způsobuje selhání překladu DNS na úrovni celého clusteru. Před zapnutím LocalDNS ponechte jakýkoli limit počtu připojení TCP na dostatečně vysoké výchozí hodnotě, po jeho aktivaci ověřte ustálený počet připojení TCP z uzlů AKS a teprve poté limit upravte s rezervou pro horizontální škálování uzlů, upgrady a reimaging.
Požadavky
Automatické clustery AKS zahrnují předkonfigurované LocalDNS. Požadavky v této části platí hlavně v případě, že povolíte nebo přizpůsobíte chování LocalDNS, což je nejběžnější ve scénářích standardního a pokročilého přizpůsobení AKS.
- Abyste mohli používat LocalDNS, musíte mít existující cluster AKS s Kubernetes verze 1.31 a novější. Pokud potřebujete cluster AKS, můžete ho vytvořit pomocí Azure CLI, Azure PowerShell nebo portálu Azure.
- Tento článek vyžaduje Azure CLI verze 2.80.0 a novější. Pokud používáte Azure Cloud Shell, je už nainstalovaná nejnovější verze.
- LocalDNS se podporuje jenom ve fondech uzlů se systémem Azure Linux nebo Ubuntu 22.04 a novějším.
- Skladová položka virtuálního počítače používaná pro fond uzlů musí mít alespoň 4 virtuální procesory (jádra), aby bylo možné podporovat LocalDNS.
Povolení nebo přizpůsobení LocalDNS v clusteru AKS
LocalDNS nakonfigurujete na úrovni fondu uzlů v AKS, abyste mohli přizpůsobit chování podle úloh a prostředí.
V AKS Automatic je localDNS již předem nakonfigurovaný, takže tato část je primárně určená pro přizpůsobení.
V AKS Standard použijte tuto část k povolení a konfiguraci LocalDNS.
Ověření vlastního DNS před povolením LocalDNS
Pokud vaše virtuální síť používá vlastní servery DNS, před povolením LocalDNS otestujte oba přenosy DNS z uzlu AKS:
dig +udp @<custom-dns-ip> <fqdn>
dig +tcp @<custom-dns-ip> <fqdn>
Oba příkazy musí vrátit platnou odpověď. Pokud je udp úspěšný, ale vyprší časový limit protokolu TCP, nepovolujte localDNS, dokud nebude povolený port TCP 53 přes úplnou síťovou cestu a vlastní server DNS je nakonfigurovaný tak, aby přijímal dotazy TCP.
Povolení LocalDNS ve fondu uzlů
Poznámka:
Pokud používáte architekturu NAP (Node Auto-Provisioning), pokyny k povolení LocalDNS s architekturou NAP najdete v konfiguraci LocalDNS .
Tento krok se obvykle vztahuje na AKS Standard. AKS Automatic už obsahuje předkonfigurované LocalDNS.
Pokud chcete při vytváření fondu uzlů povolit LocalDNS, použijte následující příkaz s vaším vlastním konfiguračním souborem:
az aks nodepool add --name mynodepool1 --cluster-name myAKSCluster --resource-group myResourceGroup --localdns-config ./localdnsconfig.json
Pokud chcete povolit LocalDNS ve stávajícím fondu uzlů, použijte následující příkaz s vlastním konfiguračním souborem:
az aks nodepool update --name mynodepool1 --cluster-name myAKSCluster --resource-group myResourceGroup --localdns-config ./localdnsconfig.json
Důležité
Povolení LocalDNS ve fondu uzlů zahájí operaci opětovného vytvoření image na všech uzlech v rámci daného fondu. Tento proces může způsobit dočasné přerušení spuštěných úloh a může vést k výpadkům aplikace, pokud nejsou správně spravované. Před povolením tohoto nastavení byste měli naplánovat potenciální přerušení služeb a zajistit, aby aplikace byly nakonfigurované pro vysokou dostupnost nebo aby měly správně nastavené rozpočty přerušení.
Zakázání LocalDNS ve fondu uzlů
Poznámka:
Pokud používáte architekturu NAP (Node Auto-Provisioning), pokyny k zakázání LocalDNS s architekturou NAP najdete v konfiguraci LocalDNS .
Zakázání LocalDNS je pokročilá operace a obecně se nedoporučuje pro automatické produkční výchozí hodnoty AKS, pokud nemáte ověřenou výjimku.
Chcete-li zakázat LocalDNS pro fond uzlů, musíte aktualizovat localdnsconfig.json soubor nastavením mode vlastnosti na Disabled. Tato změna dává AKS pokyn, aby vypnul místní proxy server DNS na všech uzlech v zadaném fondu a obnovil rozlišení DNS na výchozí chování clusteru. Po aktualizaci konfiguračního souboru ho použijte ve fondu uzlů pomocí Azure CLI, aby se změna projevila.
az aks nodepool update --name mynodepool1 --cluster-name myAKSCluster --resource-group myResourceGroup --localdns-config ./localdnsconfig.json
Ověření operace LocalDNS
V AKS Automatic ověření potvrzuje, že je pro vaše úlohy aktivní předkonfigurovaná základní konfigurace LocalDNS. Ve standardu AKS ověření potvrdí zavedení LocalDNS.
Po povolení LocalDNS můžete ověřit jeho operaci spuštěním dotazů DNS z podů v zadaném fondu uzlů a kontrolou SERVER pole v odpovědích, abyste potvrdili, že se vrátí adresy LocalDNS (169.254.10.10 nebo 169.254.10.11).
Před spuštěním kroků ověření se ujistěte, že jsou splněny následující podmínky:
- Nainstalovali
kubectljste a nakonfigurovali přístup ke clusteru AKS. - Váš uživatelský účet má dostatečná oprávnění k vytvoření podů a spuštění příkazů uvnitř nich.
- Fond uzlů, kde chcete ověřit LocalDNS, je ve stavu Připraveno.
- Image BusyBoxu (
busybox:1.28) je přístupná z uzlů clusteru.
Příklad ověření:
Ve fondu uzlů vytvořte ladicí pod, kde je povolená localDNS:
kubectl run dnstest --image=busybox:1.28 -- sleep 3600Po spuštění podu spusťte následující příkaz k ověření rozlišení DNS.
kubectl exec -it dnstest -- nslookup kubernetes.defaultZkontrolujte výstup. Pokud localDNS funguje správně, měla by se zobrazit odpověď s adresou serveru 169.254.10.10 nebo 169.254.10.11:
Server: 169.254.10.10 Address 1: 169.254.10.10 Name: kubernetes.default Address 1: 10.0.0.1 kubernetes.default.svc.cluster.local
Konfigurovat LocalDNS
Poznámka:
Pokud používáte architekturu NAP (Node Auto-Provisioning), pokyny ke konfiguraci LocalDNS s architekturou NAP najdete v tématu Konfigurace LocalDNS .
LocalDNS používá konfigurační file založený na formátu JSON localdnsconfig.json k definování chování řešení DNS pro každý pool uzlů. Tento soubor umožňuje zadat provozní režimy, bloky serveru pro různé domény DNS a nastavení modulu plug-in, jako je ukládání do mezipaměti, předávání a protokolování.
Výchozí konfigurace LocalDNS
V AKS Automatic je localDNS předem nakonfigurovaný. Přizpůsobení používejte pouze v případech, kdy máte konkrétní požadavek.
Ve službě AKS Standard je tato výchozí konfigurace dobrým výchozím bodem.
Při přizpůsobení LocalDNS použijte jako šablonu následující formát konfigurace. Podle potřeby můžete definovat další bloky serveru, ale přidání nepodporovaných nebo nestandardních vlastností nejvyšší úrovně do výsledků konfigurace způsobí selhání ověření.
{
"mode": "Required",
"vnetDNSOverrides": {
".": {
"queryLogging": "Error",
"protocol": "PreferUDP",
"forwardDestination": "VnetDNS",
"forwardPolicy": "Sequential",
"maxConcurrent": 1000,
"cacheDurationInSeconds": 3600,
"serveStaleDurationInSeconds": 3600,
"serveStale": "Immediate"
},
"cluster.local": {
"queryLogging": "Error",
"protocol": "ForceTCP",
"forwardDestination": "ClusterCoreDNS",
"forwardPolicy": "Sequential",
"maxConcurrent": 1000,
"cacheDurationInSeconds": 3600,
"serveStaleDurationInSeconds": 3600,
"serveStale": "Immediate"
}
},
"kubeDNSOverrides": {
".": {
"queryLogging": "Error",
"protocol": "PreferUDP",
"forwardDestination": "ClusterCoreDNS",
"forwardPolicy": "Sequential",
"maxConcurrent": 1000,
"cacheDurationInSeconds": 3600,
"serveStaleDurationInSeconds": 3600,
"serveStale": "Immediate"
},
"cluster.local": {
"queryLogging": "Error",
"protocol": "ForceTCP",
"forwardDestination": "ClusterCoreDNS",
"forwardPolicy": "Sequential",
"maxConcurrent": 1000,
"cacheDurationInSeconds": 3600,
"serveStaleDurationInSeconds": 3600,
"serveStale": "Immediate"
}
}
}
Konfigurujte mode pro LocalDNS
LocalDNS je možné povolit ve třech možných režimech, které definují rozsah vynucení LocalDNS pro úlohu:
-
Required: LocalDNS se ve fondu uzlů vynucuje, pokud jsou splněny všechny požadavky. Pokud požadavky nejsou splněné, nasazení selže. -
Disabled: Zakáže místní funkci DNS, takže dotazy DNS se nepřeloží místně na uzlu. -
Preferred: AKS ověří, jestli je vaše konfigurace LocalDNS syntakticky správná, ale na uzlech nepovoluje LocalDNS . Použití tohoto režimu ale stále spustí operaci přeinstalace uzlu, takže můžete otestovat konfiguraci a odhalit chyby, aniž by to mělo vliv na překlad názvů DNS v clusteru.
U produkčních úloh v AKS Automatic ponechte předkonfigurované chování LocalDNS, pokud nemáte ověřenou potřebu přizpůsobit.
Následující tabulka shrnuje chování LocalDNS pro jednotlivé režimy a verzi Kubernetes:
| Verze Kubernetes | Preferovaný | Povinné | Invalidní |
|---|---|---|---|
| Starší než 1.31 | Není podporováno | Není podporováno | Není podporováno |
| 1.31 až 1.36 | LocalDNS není povolené | LocalDNS nainstalováno a vynuceno | LocalDNS není nainstalovaný |
| 1.37 a novější | LocalDNS se nainstaluje a povolí, pokud kontroly kompatibility proběhnou úspěšně | localDNS je nainstalován a vynucen | LocalDNS není nainstalovaný |
Poznámka:
Od Kubernetes 1.37 platí, že když se vytvoří nebo aktualizuje způsobilý standardní fond uzlů AKS, včetně upgradu verze Kubernetes, AKS nastaví režim LocalDNS na Preferred, pokud neexistuje žádný explicitně zadaný profil. V Preferred režimu služba AKS zpočátku povoluje LocalDNS pouze v případě, že fond uzlů projde kontrolami kompatibility. AKS zachovává explicitně nakonfigurované profily, včetně Disabled.
Bloky serveru pro LocalDNS
Výchozí konfigurace se vztahuje na dotazy z podů používajících dnsPolicy:default (v části vnetDNSOverrides) a pody používající dnsPolicy:ClusterFirst (v části kubeDNSOverrides). V každém z nich jsou definovány dva výchozí bloky serveru: . a cluster.local.
-
.představuje všechny externí požadavky DNS z podů, které se pokoušejí rozlišit veřejné nebo neklastrové domény (napříkladmicrosoft.com). -
cluster.localpředstavuje všechny interní dotazy zjišťování služby Kubernetes z podů, které se snaží přeložit názvy služby Kubernetes nebo interní prostředky clusteru. Tyto dotazy se směrují přes CoreDNS pro řešení v rámci clusteru.
Podporované moduly plug-in pro konfiguraci LocalDNS
| Plugin | Popis | Výchozí | Povolené vstupy |
|---|---|---|---|
queryLogging |
Definujte úroveň protokolování pro dotazy DNS. | Error |
Error
Log
|
protocol |
Nastaví protokol používaný pro dotazy DNS (předvolba UDP/TCP). |
ForceTCP pro cluster.local, jinak PreferUDP |
PreferUDP
ForceTCP
|
forwardDestination |
Určuje server DNS, do který se mají předávat dotazy. |
ClusterCoreDNS pro provoz cluster.local a kubeDNS, jinak VnetDNS |
VnetDNS
ClusterCoreDNS
|
forwardPolicy |
Určuje zásadu, která se má použít při výběru nadřazeného serveru DNS. | Sequential |
Random
RoundRobin
Sequential
|
maxConcurrent |
Maximální počet souběžných dotazů DNS zpracovávaných službou LocalDNS | 1000 |
Integer |
cacheDurationInSeconds |
Maximální hodnota TTL (Time To Live) v sekundách, pro které se odpovědi DNS ukládají do mezipaměti. | 3600 |
Integer |
serveStaleDurationInSeconds |
Doba trvání (v sekundách) pro obsluhu zastaralých odpovědí DNS v případě nedostupnosti upstreamu | 3600 |
Integer |
serveStale |
Zásady pro poskytování zastaralých odpovědí DNS během upstreamových selhání | Immediate |
Verify
Immediate
Disabled
|
Ověřovací pravidla konfigurace
Při vytváření konfigurace LocalDNS mějte na paměti tato ověřovací pravidla, abyste se vyhnuli selháním nasazení:
-
Omezení kořenové zóny (
.) : V částivnetDNSOverrides, pro kořenovou zónuforwardDestinationnemůže býtClusterCoreDNS. -
Omezení zón Cluster.local: V obou
vnetDNSOverridesakubeDNSOverrides,forwardDestinationprocluster.localnemůže býtVnetDNS. -
Protokol a kompatibilita službyStale: Je-li
protocolnastavena naForceTCP,serveStalenelze nastavit naVerify. Místo toho použijteImmediate.
Poznámka:
Tato ověřovací pravidla se vynucují během nasazování konfigurace. Porušení způsobí selhání ověření konfigurace LocalDNS.
Vytvoření vlastního bloku serveru v LocalDNS
CoreDNS odpovídá dotazům na určitý blok serveru na základě přesné shody pro dotazovanou doménu, a ne na částečných shodách. Pokud potřebujete vlastní bloky serveru, můžete je přidat do konfigurace LocalDNS vytvořením souboru s názvem localdnsconfig.json s přidanými konfiguracemi.
Pokud máte například při přístupu k microsoft.com konkrétní potřeby DNS, můžete použít následující blok serveru:
"microsoft.com": {
"queryLogging": "Error",
"protocol": "ForceTCP",
"forwardDestination": "ClusterCoreDNS",
"forwardPolicy": "Sequential",
"maxConcurrent": 1000,
"cacheDurationInSeconds": 3600,
"serveStaleDurationInSeconds": 3600,
"serveStale": "Immediate"
}
Monitorování localDNS
V AKS Automatic je localDNS předkonfigurovaný, takže začněte se standardním ověřováním a monitorováním chování před použitím vlastního ladění.
LocalDNS zveřejňuje metriky Prometheus, které můžete použít k monitorování a upozorňování. Metriky se zveřejňují na portu 9253 IP adresy uzlu.
Příklad konfigurace scrapování pro doplněk Azure Managed Prometheus ve formě DaemonSetu:
kind: ConfigMap
apiVersion: v1
metadata:
name: ama-metrics-prometheus-config-node
namespace: kube-system
data:
prometheus-config: |-
global:
scrape_interval: 1m
scrape_configs:
- job_name: localdns-metrics
scrape_interval: 1m
scheme: http
metrics_path: /metrics
relabel_configs:
- source_labels: [__metrics_path__]
regex: (.*)
target_label: metrics_path
- source_labels: [__address__]
replacement: '$NODE_NAME'
target_label: instance
static_configs:
- targets: ['$NODE_IP:9253']
Řešení potíží s LocalDNS
Dotazy DNS na konkrétní domény selhávají
Pokud dotazy DNS na konkrétní domény selhávají po povolení LocalDNS:
Zkontrolujte, jestli ve vašem localdnsconfig.json nemáte nastavení specifická pro domény, které mohou být chybně nakonfigurované.
Dočasně zkuste odstranit přepsání specifická pro danou doménu a použít pouze výchozí konfiguraci bez úprav
..Zkontrolujte, jestli k problému dochází u protokolu UDP (User Datagram Protocol) i protokolu TCP (Transmission Control Protocol) úpravou
protocolnastavení.V protokolech CoreDNS zkontrolujte vypršení časových limitů adres LocalDNS
169.254.10.10:53nebo169.254.10.11:53. Z ovlivněného uzlu otestujte nadřazený vlastní server DNS samostatně přes UDP a TCP:dig +udp @<custom-dns-ip> <fqdn> dig +tcp @<custom-dns-ip> <fqdn>Pokud je UDP úspěšný, ale tcp selže, ověřte, že:
- Vlastní server DNS naslouchá na portu TCP 53.
- Skupiny zabezpečení sítě a brány firewall umožňují port TCP 53 z podsítě uzlu AKS.
- NVA ani trasy nezahazují provoz TCP DNS ani jej nesměrují asymetricky.
Chcete-li zakázat LocalDNS v ovlivněném fondu uzlů, aktualizujte režim LocalDNS na
Disabled. Změna povoleného fondu naDisabledv rámci aktualizace aktivuje opětovné vytvoření image uzlu. V případě trvalé opravy se ujistěte, že vlastní server DNS a síťová cesta podporují DNS přes UDP i TCP na portu 53.
Aktualizace DNS serverů VNet pro LocalDNS
Když aktualizujete vlastní servery DNS přímo v konfiguraci virtuální sítě (pomocí portálu Azure nebo rozhraní příkazového řádku), uzly clusteru AKS tyto změny automaticky nepoužívají. Aktualizace nastavení DNS na úrovni virtuální sítě informuje pouze poskytovatele síťových prostředků (NRP), ale nehlásí poskytovatele prostředků AKS. V důsledku toho uzly AKS nadále používají předchozí nastavení serveru DNS, dokud nebudete provádět další akce.
Pokud chcete zajistit, aby uzly AKS přebíraly nové nastavení serveru DNS virtuální sítě:
Podle potřeby aktualizujte konfiguraci DNS virtuální sítě pomocí webu Azure Portal nebo rozhraní API.
Pomocí poskytovatele prostředků AKS znovu vytvořte fond uzlů a ujistěte se, že se použijí a zachovají aktualizovaná nastavení DNS:
az aks nodepool upgrade --resource-group myResourceGroup --cluster-name myAKSCluster --name mynodepool --node-image-only
Tento proces zajišťuje, aby poskytovatel prostředků AKS věděl o změnách DNS a použije je na všechny uzly ve fondu uzlů.
Aktualizace zásad sítě Cilium pro povolení překladu DNS pomocí LocalDNS
Pokud nasadíte zásady sítě Cilium ve vašem clusteru, musíte explicitně povolit výchozí přenos dat podů na IP adresy LocalDNS.
Zásady sítě vynucují model výchozího zamítnutí pro cíle, které nejsou zadané, takže provoz DNS do LocalDNS je blokovaný, pokud není explicitně povolený.
- Na Azure CNI Powered by Cilium <=v1.16 s k8s <=v1.31 lze tohoto dosáhnout zásadou založenou na CIDR.
- Na Azure CNI Powered by Cilium >=v1.17 with K8s >=1.32, lze použít zásady sítě Cilium umožňující výchozí přenos dat hostitelským entitám.
Informace o zásadách sítě Cilium, které umožňují provoz napříč všemi verzemi, najdete v tématu Je místní DNS AKS podporován s Azure CNI Powered by Cilium?