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.