Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
La risoluzione DNS (Domain Name System) è un componente fondamentale nel servizio Azure Kubernetes, consentendo ai pod e ai servizi di comunicare usando nomi leggibili anziché indirizzi IP. AKS fornisce servizi DNS integrati per garantire una risoluzione dei nomi fluida e senza interruzioni sia per le risorse interne del cluster che per gli endpoint esterni. Comprendere il funzionamento del DNS nel servizio Azure Kubernetes consente agli operatori del cluster e agli sviluppatori di garantire connettività affidabile, ottimizzare le prestazioni e risolvere i problemi di rete in modo efficace.
CoreDNS nel servizio Azure Kubernetes
CoreDNS è il servizio DNS predefinito nel servizio Azure Kubernetes, che fornisce la risoluzione dei nomi interna e l'individuazione dei servizi per i carichi di lavoro in esecuzione nel cluster. Funziona come set di pod nello spazio dei nomi kube-system ed è strettamente integrato con la rete Kubernetes.
Quando un pod in AKS invia una query DNS, come la risoluzione del nome di un altro servizio, la richiesta viene instradata ai pod CoreDNS. Questi pod elaborano la query e restituiscono l'indirizzo IP appropriato o inoltrano la richiesta a un server DNS upstream per domini esterni.
Questa architettura garantisce un equilibrio tra flessibilità e sicurezza operativa in un ambiente gestito. Per informazioni dettagliate su come personalizzare CoreDNS in AKS, vedere la guida alla personalizzazione di CoreDNS.
Per informazioni sul progetto CoreDNS, vedere la pagina del progetto upstream CoreDNS.
LocalDNS nel servizio Azure Kubernetes
Annotazioni
Questo documento offre una panoramica di LocalDNS e dei relativi vantaggi in AKS. Non include istruzioni di configurazione. Per indicazioni sull'abilitazione e la configurazione di LocalDNS, vedere la guida pratica localDNS.
Informazioni generali
LocalDNS è una funzionalità avanzata del servizio Azure Kubernetes che distribuisce un proxy DNS (Domain Name System) in ogni nodo per offrire una risoluzione DNS a bassa latenza e altamente resiliente. Gestendo le query DNS in locale, questo proxy riduce il traffico verso i pod addon CoreDNS, migliorando l'affidabilità e le prestazioni complessive del DNS nel cluster. LocalDNS è particolarmente utile in cluster o ambienti di grandi dimensioni con volumi di query DNS elevati, in cui la risoluzione DNS centralizzata può diventare un collo di bottiglia.
Quando LocalDNS è abilitato, AKS distribuisce una cache DNS locale come systemd servizio in ogni nodo. I pod nel nodo inviano le query DNS a questa cache locale, consentendo una risoluzione più rapida riducendo gli hop di rete. Questo approccio riduce inoltre al minimo l'utilizzo conntrack delle tabelle, riducendo il rischio di esaurimento delle tabelle. Inoltre, se il DNS upstream diventa non disponibile, LocalDNS può continuare a gestire le risposte memorizzate nella cache per una durata configurabile, consentendo di mantenere la connettività dei pod e l'affidabilità del servizio.
Funzionalità chiave
Riduzione della latenza di risoluzione DNS: Ogni nodo AKS esegue un servizio LocalDNS
systemd. I carichi di lavoro in esecuzione nel nodo inviano query DNS a questo servizio, risolvendoli in locale, riducendo gli hop di rete e velocizzando le ricerche DNS.Comportamento DNS personalizzabile: È possibile usare
kubeDNSOverridesevnetDNSOverridesper controllare il comportamento DNS nel cluster.Evitare race conntrack e l'esaurimento della tabella conntrack: i pod inviano query DNS al servizio LocalDNS nello stesso nodo senza creare nuove voci nella tabella
conntrack. Ignorare il rilevamento delle connessioni consente di ridurre le race conntrack e di evitare che voci DNS UDP (User Datagram Protocol) riempiano le tabelleconntrack. Questa ottimizzazione impedisce l'eliminazione e il rifiuto delle connessioni a causa dell'esaurimento delle tabelleconntracke le condizioni race.Connessione aggiornata a TCP: La connessione dalla
localdnscache al servizio CoreDNS del cluster usa TCP (Transmission Control Protocol). TCP consente il ribilanciamento della connessione e rimuove leconntrackvoci di tabella quando il server chiude la connessione (a differenza delle connessioni UDP, con un timeout predefinito di 30 secondi). Le applicazioni non necessitano di modifiche, perché il servizio rimane in ascolto dellocaldnstraffico UDP.Memorizzazione nella cache: Il plug-in della cache LocalDNS può essere configurato con le impostazioni serveStale e Time to Live (TTL).
serveStale,serveStaleDurationInSecondsecacheDurationInSecondspossono essere configurati per ottenere la resilienza DNS, anche durante un'interruzione upstream del DNS.Controllo del protocollo: È possibile impostare il protocollo di query DNS (ad esempio PreferUDP o ForceTCP) per ogni dominio. Questa flessibilità consente di ottimizzare il traffico DNS per domini specifici o soddisfare i requisiti di rete.
Altri vantaggi e considerazioni
| Vantaggi | Considerazioni |
|---|---|
| Maggiore scalabilità: riduce il carico sui pod CoreDNS centralizzati | Overhead minimo delle risorse: usa una piccola quantità di CPU e memoria in ogni nodo |
| Integrazione senza problemi: non richiede modifiche alle connessioni dell'applicazione esistenti | Modifiche alla configurazione: gli aggiornamenti richiedono aggiornamenti delle immagini del nodo, che possono causare interruzioni temporanee |
| Blocca domini di ricerca non validi: impedisce query DNS non valide a livello di nodo |
L'uso di LocalDNS consente di ottenere una risoluzione DNS più rapida e affidabile per i carichi di lavoro, ridurre il rischio di interruzioni correlate a DNS e ottenere un maggiore controllo sul traffico DNS nell'ambiente del servizio Azure Kubernetes.
Passaggi successivi
Per informazioni su come abilitare LocalDNS e configurarne le impostazioni nel cluster del servizio Azure Kubernetes, vedere la guida pratica localDNS.
Per altre informazioni sui concetti di base della rete, vedere Concetti di rete per le applicazioni nel servizio Azure Kubernetes.