Tüm Ürünler
Search
Belge Merkezi

Container Service for Kubernetes:DNS FAQ

Son Güncelleme:Oct 06, 2026

Bu konu, Container Service for Kubernetes (ACK) kümelerindeki Alan Adı Sistemi (DNS) ile ilgili sık sorulan soruları yanıtlar.

Neden bir CoreDNS Pod'una exec komutuyla erişemiyorum?

CoreDNS konteyner görüntüsü, kabuk içermeyen scratch tabanlı olarak oluşturulur. Görüntüde kabuk bulunmadığından kubectl -n kube-system exec -it {coredns-pod-name} bash komutunu çalıştırmak başarısız olur.

Bir CoreDNS Pod'unun ağ ortamını incelemek için bunun yerine nsenter kullanın. Talimatlar için bkz. CoreDNS Pod'unun ağ bağlantısını kontrol etme. CoreDNS günlüklerini görüntülemek için CoreDNS günlük analizi ve izleme özelliğini etkinleştirin. Bkz. CoreDNS günlüklerini analiz etme ve izleme.

CoreDNS neden kullanım dışı bir API kullanıyor?

Küme yükseltme ön denetimi sırasında, coredns kullanıcı aracısına sahip bir istemci /apis/discovery.k8s.io/v1beta1 adresindeki kullanım dışı discovery.k8s.io/v1beta1 API'sine erişir.

Bu durum aşağıdaki iki nedenden biriyle oluşur:

  • Güncel olmayan CoreDNS sürümü: Yüklü sürüm discovery.k8s.io/v1 öğesini desteklemez, bu nedenle v1beta1 sürümüne geri döner.

  • Eski API seçimi: CoreDNS daha eski bir Kubernetes sürümünde (örneğin, v1.20) başlatıldı ve başlangıçta v1beta1 kullanımı sabitlendi. Küme yükseltildikten sonra bu API kullanım dışı kaldığında bile CoreDNS bunu kullanmaya devam etti.

Her iki durumda da öncelikle CoreDNS'i yükseltin. Yükseltme mevcut değilse yeni bir API seçimi zorlamak için yeniden başlatın.

CoreDNS'i yükseltmek veya yeniden başlatmak için:

  1. ACK konsolunda oturum açın ve sol gezinme bölmesinde Clusters öğesini tıklayın.

  2. Küme adınızı tıklayın. Sol gezinme bölmesinde Add-ons öğesini tıklayın.

  3. Add-ons sayfasında CoreDNS bileşenini yükseltin. Sayfa yükseltmenin mümkün olmadığını gösteriyorsa 4. adıma geçin. Daha fazla bilgi için bkz. Bileşenleri yönetme.

  4. CoreDNS'i yeniden başlatın:

    kubectl -n kube-system rollout restart deployment coredns
    Önemli

    Yeniden başlatma sırasında ara sıra DNS çözümleme hataları oluşabilir. Etkiyi azaltmak için bkz. IPVS hatalarından kaynaklanan aralıklı DNS zaman aşımlarını azaltma.

  5. CoreDNS Pod'larının çalıştığını doğrulayın:

    kubectl -n kube-system get pod -l k8s-app=kube-dns

    Beklenen çıktı, Running durumunda yeni oluşturulan Pod'ları gösterir:

    NAME                       READY   STATUS    RESTARTS   AGE
    coredns-xxxxxxxxxx-xxxxx   1/1     Running   0          30s
    coredns-xxxxxxxxxx-yyyyy   1/1     Running   0          28s

    Her iki Pod da Running durumuna geçtiğinde, ön denetim sayfasındaki kullanım dışı API çağrı kayıtları güvenle yoksayılabilir ve küme yükseltmesine devam edebilirsiniz.

CoreDNS günlük hatası: dns: buffer size too small

CoreDNS varsayılan UDP arabellek boyutunu (bufsize) 1232 bayt olarak ayarlar. Bir DNS yanıtı bu sınırı aştığında çözümleme başarısız olur ve günlüklerde dns: buffer size too small hatası görünür. Bu durum genellikle büyük yanıt döndüren DNS sorgularını etkiler. Arka plan bilgisi için bu GitHub sorununa bakın.

Bu sorunu otomatik olarak çözen CoreDNS v1.7.1 veya sonraki bir sürüme yükseltin. v1.7.1'den önceki sürümler için CoreDNS ConfigMap içinde bufsize değerini manuel olarak ayarlayın:

kubectl edit cm -n kube-system coredns

\[512, 4096\] aralığında (dahil) bir değerle bufsize ekleyin:

. {
    bufsize 1220
    log
}

Daha fazla bilgi için bkz. CoreDNS bufsize eklenti belgeleri.

Neden bir Hizmet oluşturulduktan sonra istekler tutarsız şekilde NXDOMAIN ve NOERROR döndürüyor?

CoreDNS birden çok Pod çoğaltması olarak çalışır. Yeni bir Hizmet oluşturulduktan hemen sonra bir Pod, API sunucusundan en son Hizmet bilgilerini henüz almamış olabilirken diğer Pod bu bilgilere zaten sahip olabilir. Eşitlenmemiş Pod'a yönlendirilen istekler NXDOMAIN döndürür; güncellenmiş Pod'a yönlendirilen istekler ise NOERROR döndürür. Tüm CoreDNS Pod'ları API sunucusuyla eşitlendiğinde tutarsızlık kendiliğinden çözülür. Manuel bir işlem gerekmez.

Windows düğümlerinde DNS çözümleme

Windows düğümlerindeki Pod'ların DNS davranışları Linux'tan farklıdır:

  • **ClusterFirstWithHostNet desteklenmez.** Windows, Pod'lar için bu DNS ilkesini desteklemez.

  • **Nokta (.) içeren tüm adlar tam nitelikli alan adları (FQDN) olarak değerlendirilir.** Windows, arama soneki listesini tarayan Linux'un aksine nokta içeren adlar için DNS arama son eklerini eklemez.

  • Pod başına yalnızca bir DNS soneki kullanılır. Sonek, Pod'un ad alanından türetilir; örneğin, default ad alanındaki bir Pod default.svc.cluster.local sonekini alır. Bu, kubernetes.default.svc.cluster.local ve kubernetes adlarının doğru şekilde çözüldüğü ancak kubernetes.default veya kubernetes.default.svc gibi kısmen nitelikli adların çözülmediği anlamına gelir.

  • **DNS sorguları için Resolve-DnsName kullanın.** Windows, küçük davranış farkları olan birden çok DNS çözümleyicisini destekler. Resolve-DnsName PowerShell cmdlet'i en tutarlı sonuçları verir.

Daha fazla bilgi için bkz. Hizmetler ve Pod'lar için DNS.