Kubernetes NodeLocalDNS ConfigMap Güncellemesi Nasıl Yapılır?

Kubernetes NodeLocalDNS ConfigMap Güncellemesi Nasıl Yapılır?

Kubernetes’te DNS işlerini hızlandırmak için NodeLocalDNS sıkça tercih ediliyor. Zamanla, kendi DNS sunucunu veya internal bir hostname eklemen gerekirse, işin anahtarı ConfigMap dosyasını doğru düzenlemekten geçiyor.
Aşağıda, gerçek bir örnekle, ConfigMap’i nasıl güncelleyeceğini ve önemli satırları kısa kısa notlarla anlatıyorum.


NodeLocalDNS İçin Örnek ConfigMap

Mevcut ConfigMap’i düzenlemek için:

kubectl -n kube-system edit configmap nodelocaldns

Aşağıdaki örnek yapı, pratikte sık karşılaştığım temel gereksinimleri kapsıyor:

apiVersion: v1
kind: ConfigMap
data:
  Corefile: |
    cluster.local:53 {
        errors
        cache {
            success 9984 30
            denial 9984 5
        }
        reload
        loop
        bind 169.254.25.10
        forward . 10.233.0.3 {
            force_tcp
        }
        prometheus :9253
        health 169.254.25.10:9254
    }
    in-addr.arpa:53 {
        errors
        cache 30
        reload
        loop
        bind 169.254.25.10
        forward . 10.233.0.3 {
            force_tcp
        }
        prometheus :9253
    }
    ip6.arpa:53 {
        errors
        cache 30
        reload
        loop
        bind 169.254.25.10
        forward . 10.233.0.3 {
            force_tcp
        }
        prometheus :9253
    }
    .:53 {
        errors
        cache 30
        reload
        loop
        hosts {
            192.168.10.10 internal-app.local
            192.168.10.11 devops-tool.local
            192.168.10.12 private-registry.local
            fallthrough
        }
        bind 169.254.25.10
        forward . 8.8.8.8 1.1.1.1
        prometheus :9253
    }

Dikkat Etmen Gereken Yerler

  • forward . 8.8.8.8 1.1.1.1
    → DNS sorgularının çözülemeyenlerini hangi dış DNS’lere göndereceğini buradan ayarlayabilirsin. Kendi şirket DNS’in ya da genel DNS (Google/Cloudflare) kullanabilirsin.
  • hosts { ... }
    → Cluster içi bazı özel hostname’leri burada sabitlemek mümkün.
    (Örneğin; internal uygulamalar, özel araçlar, vs. Kendi domain/IP’ni girmen yeterli.)
  • bind 169.254.25.10
    → NodeLocalDNS’in kendi node’unda hangi IP’de dinleyeceği. Cluster kurulumunda otomatik gelmişse değiştirmene gerek yok, ama farklı bir IP seçtiysen buna dikkat et.

Yaptığın Değişiklikleri Uygulama

ConfigMap’i kaydettikten sonra, değişikliklerin aktif olması için NodeLocalDNS pod’larını yeniden başlatmak gerek:

kubectl -n kube-system rollout restart daemonset nodelocaldns

Bir dakika içinde, tüm worker node’larda yeni DNS ayarın devrede olur.


Kubernetes’te DNS işlerini optimize etmek için NodeLocalDNS’in Corefile ayarları çok işine yarayacak.
ConfigMap’te IP ve domain’leri kendi ortamına göre değiştirmen yeterli.
İlk başta göz korkutucu dursa da birkaç denemeden sonra işler yerine oturuyor.

Read more