Rozpoznawanie nazw DNS w usłudze Azure Kubernetes Service (AKS)

Dotyczy: ✔️ AKS Automatic AKS Standard ✔️

Rozpoznawanie systemu nazw domen (DNS) jest krytycznym składnikiem w usłudze Azure Kubernetes Service (AKS), umożliwiając zasobnikom i usługom komunikowanie się przy użyciu nazw czytelnych dla człowieka zamiast adresów IP. Usługa AKS udostępnia wbudowane usługi DNS, aby zapewnić bezproblemowe rozpoznawanie nazw dla zasobów klastra wewnętrznego i zewnętrznych punktów końcowych. Zrozumienie sposobu działania systemu DNS w usłudze AKS pomaga operatorom klastra i deweloperom zapewnić niezawodną łączność, zoptymalizować wydajność i skutecznie rozwiązywać problemy z siecią.

AKS Automatic to zalecany, domyślny wybór gotowy do wdrożeń produkcyjnych dla większości obciążeń AKS. Klastry automatyczne AKS są wstępnie skonfigurowane z funkcją LocalDNS w celu poprawy wydajności DNS, zmniejszenia obciążenia mechanizmu conntrack i zwiększenia odporności bez konieczności dodatkowej konfiguracji.

Uwaga / Notatka

Od wersji Kubernetes 1.37 usługa AKS Standard domyślnie używa trybu Preferred LocalDNS w przypadku pul węzłów spełniających kryteria, dla których nie skonfigurowano jawnie profilu LocalDNS. W trybie Preferred usługa AKS włącza funkcję LocalDNS tylko wtedy, gdy pula węzłów i klaster spełniają wymagane kontrole zgodności. Jeśli sprawdzanie nie powiedzie się, usługa LocalDNS pozostanie wyłączona. Jawnie skonfigurowane profile mają pierwszeństwo przed tym ustawieniem domyślnym, więc pula węzłów jawnie ustawiona na Disabled pozostanie wyłączona. Aby zapobiec włączeniu ustawień LocalDNS, jawnie ustaw tryb LocalDNS na wartość Wyłączone. Instrukcje można znaleźć w sekcji Disable LocalDNS on a Node Pool.

Aby uzyskać więcej informacji o usłudze AKS Automatic, zobacz Czym jest usługa AKS Automatic?

CoreDNS w usłudze Azure Kubernetes Service

CoreDNS to domyślna usługa DNS w usłudze AKS. Zapewnia wewnętrzne rozpoznawanie nazw i odnajdywanie usług dla obciążeń uruchomionych w klastrze. Działa jako zestaw zasobników w przestrzeni nazw kube-system i jest ściśle zintegrowany z siecią Kubernetes.

Gdy zasobnik w usłudze AKS wystawia zapytanie DNS, takie jak rozpoznawanie nazwy innej usługi, żądanie przechodzi do zasobników CoreDNS. Te zasobniki przetwarzają zapytanie i zwracają odpowiedni adres IP lub przesyłają żądanie do nadrzędnego serwera DNS dla domen zewnętrznych.

Ta architektura zapewnia równowagę między elastycznością a bezpieczeństwem operacyjnym w środowisku zarządzanym. Aby uzyskać szczegółowe informacje na temat dostosowywania usługi CoreDNS w usłudze AKS, zapoznaj się z przewodnikiem dostosowywania coreDNS.

Gdy nazwa LocalDNS jest aktywna, ścieżka rozpoznawania zależy od zasobnika dnsPolicy (Default lub ClusterFirst) i konfiguracji bloku serwera LocalDNS. Na przykład gdy zasobnik używa dnsPolicy: Default, zewnętrzne zapytania DNS przebiegają następującą ścieżką:

Workload -> LocalDNS -> upstream DNS server

Usługa LocalDNS działa na węźle jako jednostka systemd, więc otrzymuje zapytanie wcześniej niż CoreDNS. cluster.local Zapytania są przekazywane do sieci CoreDNS, a zapytania zewnętrzne są przekazywane do sieci CoreDNS lub bezpośrednio do serwera DNS sieci wirtualnej. Aby poznać dokładny sposób przekazywania dla każdej zasady DNS oraz konfigurację domyślną, zobacz Bloki serwera dla LocalDNS.

Niestandardowe serwery DNS sieci wirtualnej muszą akceptować zarówno zapytania UDP, jak i TCP DNS z węzłów usługi AKS. Za pomocą polecenia PreferUDPusługa LocalDNS ponawia próby za pośrednictwem protokołu TCP, gdy odpowiedź UDP jest obcięta.

Aby uzyskać informacje na temat projektu CoreDNS, zobacz stronę projektu nadrzędnego CoreDNS.

LocalDNS w usłudze Azure Kubernetes Service

Uwaga / Notatka

Ten artykuł zawiera omówienie funkcji LocalDNS i jej zalet w usłudze AKS.

W przypadku usługi AKS Automatic lokalna sieciDNS jest wstępnie skonfigurowana.

W przypadku usługi AKS Standard informacje o tym, jak włączyć i skonfigurować LocalDNS, można znaleźć w przewodniku z instrukcjami dotyczącymi LocalDNS.

Przegląd

LocalDNS to zaawansowana funkcja w usłudze Azure Kubernetes Service (AKS), która wdraża serwer proxy systemu nazw domen (DNS) na każdym węźle w celu zapewnienia wysoce odpornego, niskiego opóźnienia w rozpoznawaniu nazw DNS. Dzięki obsłudze zapytań DNS lokalnie ten serwer proxy zmniejsza ruch do zasobników dodatków CoreDNS, zwiększając ogólną niezawodność i wydajność DNS w klastrze. LocalDNS jest szczególnie korzystne w dużych klastrach lub środowiskach z dużymi ilościami zapytań DNS, w sytuacji, gdy scentralizowane rozwiązywanie DNS może stać się wąskim gardłem.

Gdy LocalDNS jest włączony, AKS wdraża jako usługę systemd lokalną pamięć podręczną DNS na każdym węźle. Zasobniki na węźle wysyłają zapytania DNS do tej lokalnej pamięci podręcznej, co umożliwia szybsze rozwiązywanie poprzez zmniejszenie liczby przeskoków sieciowych. Takie podejście minimalizuje conntrack również użycie tabel, obniżając ryzyko wyczerpania tabel. Ponadto, jeśli nadrzędny DNS stanie się niedostępny, LocalDNS może nadal dostarczać buforowane odpowiedzi przez określony czas, co pomaga zachować łączność podu i niezawodność usługi.

Diagram przedstawiający architekturę LocalDNS.

LocalDNS i AKS Automatic

AKS Automatic wstępnie konfiguruje usługę LocalDNS w ramach domyślnych ustawień gotowych do użycia w środowisku produkcyjnym. Nie musisz uruchamiać osobnego polecenia włączającego w klastrach AKS Automatic.

Z tego artykułu dowiesz się, jak działa usługa LocalDNS i dlaczego poprawia działanie DNS dla obciążeń AKS. Jeśli potrzebujesz kroków włączania i konfiguracji usługi AKS Standard, skorzystaj z przewodnika z instrukcjami localDNS.

Kluczowe możliwości

  • Mniejsze opóźnienie rozpoznawania nazw DNS: każdy węzeł usługi AKS uruchamia usługę LocalDNS systemd . Obciążenia uruchomione w węźle wysyłają zapytania DNS do tej usługi, co rozwiązuje je lokalnie, zmniejszając przeskoki sieciowe i przyspieszając wyszukiwanie DNS.
  • Dostosowywalne zachowanie DNS: użyj polecenia kubeDNSOverrides i vnetDNSOverrides , aby kontrolować zachowanie DNS w klastrze.
  • Unikaj wyścigów conntrack i wyczerpania tabeli conntrack: zasobniki wysyłają zapytania DNS do usługi LocalDNS w tym samym węźle bez tworzenia nowych conntrack wpisów tabeli. Pominięcie śledzenia połączeń pomaga zmniejszyć konflikty w systemie conntrack i zapobiega zapełnianiu tabel wpisami DNS protokołu UDP (User Datagram Protocol). Ta optymalizacja zapobiega zarzuconym i odrzucanym połączeniom spowodowanym wyczerpaniem conntrack tabeli i warunkami wyścigu.
  • Połączenie uaktualnione do protokołu TCP: połączenie z localdns pamięci podręcznej do usługi CoreDNS klastra korzysta z protokołu TCP (Transmission Control Protocol). Protokół TCP umożliwia ponowne równoważenie połączenia i usuwa conntrack wpisy tabeli, gdy serwer zamyka połączenie (w przeciwieństwie do połączeń UDP, które mają domyślny limit czasu 30 sekund). Aplikacje nie wymagają zmian, ponieważ localdns usługa nadal nasłuchuje ruchu UDP.
  • Buforowanie: Możesz skonfigurować wtyczkę pamięci podręcznej LocalDNS przy użyciu serveStale i ustawień czasu życia (TTL). Ustaw parametry serveStale, serveStaleDurationInSeconds i cacheDurationInSeconds, aby zapewnić odporność DNS, nawet podczas awarii nadrzędnego serwera DNS.
  • Kontrola protokołu: ustaw preferowany protokół zapytań DNS, taki jak PreferUDP lub ForceTCP, dla każdej domeny. PreferUDP nie jest instrukcją używania wyłącznie protokołu UDP. Resolver może ponowić próbę lub przełączyć się na protokół TCP, więc niestandardowe nadrzędne serwery DNS i mechanizmy kontroli sieci muszą obsługiwać zarówno UDP, jak i TCP na porcie 53.

Inne korzyści i zagadnienia

Korzyści Rozważania
Lepsza skalowalność: zmniejsza obciążenie scentralizowanych zasobników CoreDNS Minimalne obciążenie zasobów: wykorzystuje niewielką ilość CPU i pamięci w każdym węźle
Bezproblemowa integracja: nie wymaga zmian istniejących połączeń aplikacji Zmiany konfiguracji: Aktualizacje wymagają uaktualnień obrazu węzła, co może powodować tymczasowe zakłócenia
Blokuj nieprawidłowe domeny wyszukiwania: uniemożliwia nieprawidłowe zapytania DNS na poziomie węzła Planowanie dostępności: zespoły korzystające z usługi AKS Standard powinny ocenić, czy wydajność i odporność DNS uzasadniają włączenie lokalnej sieciDNS

Działanie AKS Automatic i AKS Standard

Tryb klastra Zachowanie lokalnych sieciDNS
Automatyczne usługi AKS Wstępnie skonfigurowane
AKS Standard, Kubernetes 1.31 do 1.36 Skonfigurowane osobno dla każdej puli węzłów
AKS Standard, Kubernetes 1.37 i nowsze Domyślnie ustawia kwalifikujące się pule węzłów na Preferred, jeśli nie istnieje jawnie określony profil LocalDNS. Usługa LocalDNS jest włączona tylko wtedy, gdy sprawdzanie zgodności przejdzie pomyślnie. Jawne profile, w tym Disabled, są zachowywane.

Dzięki użyciu LocalDNS uzyskując szybsze i bardziej niezawodne rozwiązanie DNS dla obciążeń, można zmniejszyć ryzyko awarii związanych z systemem DNS i uzyskać większą kontrolę nad ruchem DNS w środowisku usługi AKS.