Risoluzione DNS nel servizio Azure Kubernetes (AKS)

Si applica a: ✔️ Servizio Azure Kubernetes Standard automatico ✔️ Servizio Azure Kubernetes standard

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.

AKS Automatic è l’opzione predefinita consigliata per gli ambienti di produzione per la maggior parte dei carichi di lavoro di AKS. I cluster AKS Automatic sono preconfigurati con LocalDNS per migliorare le prestazioni DNS, ridurre il carico su conntrack e aumentare la resilienza senza richiedere ulteriori configurazioni.

Nel servizio Azure Kubernetes Standard, LocalDNS è facoltativo ed è possibile abilitarlo e configurarlo separatamente.

Per altre informazioni sul servizio Azure Kubernetes automatico, vedere Che cos'è il servizio Azure Kubernetes Automatico?

CoreDNS nel servizio Azure Kubernetes

CoreDNS è il servizio DNS predefinito in AKS. Fornisce la risoluzione dei nomi interna e l'individuazione dei servizi per i carichi di lavoro in esecuzione nel cluster. Opera come un insieme di pod nel namespace kube-system ed è strettamente integrato con la rete Kubernetes.

Quando un pod in AKS invia una query DNS, ad esempio per risolvere il nome di un altro servizio, la richiesta viene inviata 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 articolo fornisce una panoramica di che cos’è LocalDNS e dei suoi vantaggi in AKS.

Per AKS Automatic, LocalDNS è preconfigurato.

Per AKS Standard, consulta la guida pratica a LocalDNS per informazioni su come abilitare e configurare 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 ai pod dei componenti aggiuntivi 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.

Diagramma che mostra l'architettura LocalDNS.

LocalDNS e AKS automatico

AKS Automatic preconfigura LocalDNS nell'ambito delle configurazioni predefinite pronte per la produzione. Non è necessario eseguire un comando enable separato sui cluster AKS Automatic.

Usa questo articolo per capire come funziona LocalDNS e perché migliora il comportamento DNS per i carichi di lavoro di AKS. Se ti servono istruzioni per l'abilitazione e la configurazione di AKS Standard, usa la guida pratica di LocalDNS.

Funzionalità chiave

  • Latenza di risoluzione DNS ridotta: 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: usare kubeDNSOverrides e vnetDNSOverrides per controllare il comportamento DNS nel cluster.
  • Evitare concorrenze conntrack e l'esaurimento della tabella conntrack: i pod inviano query DNS al servizio LocalDNS nello stesso nodo senza creare nuove voci di 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 tabelle conntrack. Questa ottimizzazione impedisce l'eliminazione e il rifiuto delle connessioni a causa dell'esaurimento delle tabelle conntrack e le condizioni race.
  • Connessione aggiornata a TCP: la connessione dalla localdns cache al servizio CoreDNS del cluster usa TCP (Transmission Control Protocol). TCP consente il ribilanciamento della connessione e rimuove le conntrack voci 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 del localdns traffico UDP.
  • Memorizzazione nella cache: È possibile configurare il plugin della cache LocalDNS con serveStale e le impostazioni Time to Live (TTL). Impostare i parametri serveStale, serveStaleDurationInSeconds e cacheDurationInSeconds per garantire la resilienza DNS, anche durante un'interruzione del DNS upstream.
  • Controllo del protocollo: 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 interruzioni: 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 Pianificazione della disponibilità: i team che utilizzano AKS Standard devono valutare se le prestazioni e la resilienza del DNS giustificano l'abilitazione di LocalDNS

Comportamento di AKS Automatic e AKS Standard

Modalità cluster Comportamento di LocalDNS
AKS Automatico Preconfigurato
Servizio Azure Kubernetes Standard Optional

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.