Kubernetes DNS Hizmeti Nedir? CoreDNS ve kube-dns Mantığı
Bu rehberde ne öğreneceksiniz?
Bu rehber, Kubernetes kümelerinde yerleşik DNS hizmetinin nasıl çalıştığını açıklar.
Servis keşfi, otomatik DNS kayıtları ve CoreDNS ile kube-dns farkları sade biçimde anlatılır.
🧠 Teknik Özet
Ana Konu:
Kubernetes DNS hizmeti ve servis keşfi mekanizması.
Çözülen Problem:
Pod IP’leri değişse bile servislerin birbirini isimle bulabilmesi.
İzlenen Yol:
DNS mantığı → Kayıt formatları → Kısa ad çözümleme → CoreDNS mimarisi.
Kubernetes DNS Hizmeti Ne Sağlar?
Kubernetes, küme içinde otomatik bir DNS servisi kurar.
Bu servis, uygulamaların birbirine isimle erişmesini sağlar.
Pod’lar silinse veya taşınsa bile bağlantılar bozulmaz.
Servis isimleri her zaman geçerlidir.
Kubernetes DNS Nasıl Çalışır?
Kümede kube-dns adlı bir servis oluşturulur.
Bu servis, Kubernetes API olaylarını dinler.
nameserver 10.32.0.10
search namespace.svc.cluster.local svc.cluster.local cluster.local
options ndots:5
- Bu yapı, Pod içindeki DNS çözümleme davranışını belirler.
Otomatik Oluşturulan Kubernetes DNS Kayıtları
- Kubernetes, servis ve Pod’lar için belirli DNS kayıtları üretir.
| Kaynak Türü | DNS Kayıt Türü | DNS Kayıt Formatı | Örnek |
|---|---|---|---|
| Servis | A | servis.namespace.svc.cluster.local | api.dev.svc.cluster.local |
| Pod | A | ip-tireli.namespace.pod.cluster.local | 10-32-0-125.dev.pod.cluster.local |
| Servis | SRV | _port._protokol.servis.namespace.svc.cluster.local | _http._tcp.web.prod.svc.cluster.local |
- Bu yapı, servis keşfini DNS tabanlı hale getirir.
Kısa Hostname Kullanımı
- resolv.conf içindeki arama alanları sayesinde tam DNS adı gerekmez.
Aynı namespace:
baska-servis
Farklı namespace:
baska-servis.baska-namespace
- Pod hedefleniyorsa:
ip-tireli.namespace.pod
- .pod uzantısı otomatik tamamlanmaz.
Kubernetes DNS Uygulamaları
1. kube-dns (Eski Sistem) Kubernetes 1.11 öncesinde kullanıldı.
- Üç konteynerden oluşur:
kube-dns (SkyDNS): DNS çözümleme
dnsmasq: Önbellekleme
sidecar: Sağlık ve metrikler
- Güvenlik ve ölçek sorunları yaşandı.
CoreDNS (Güncel Sistem)
Kubernetes 1.11 sonrası varsayılandır.
- Tek süreç, tek konteyner mimarisi kullanır.
Avantajları:
-
Daha güvenli
-
Daha hızlı
-
Daha az kaynak tüketimi
-
Gerçek Pod doğrulaması yapar
-
Var olmayan Pod IP’leri artık çözülmez.
Gelişmiş DNS Yapılandırması (dnsConfig)
- Pod bazında özel DNS ayarları yapılabilir.
apiVersion: v1
kind: Pod
metadata:
name: ozel-dns
namespace: rabisu-dev
spec:
containers:
- name: ornek
image: nginx
dnsPolicy: None
dnsConfig:
nameservers:
- 203.0.113.44
searches:
- ozel.dns.local
- Bu yapı, Pod’un resolv.conf dosyasını doğrudan değiştirir.
❓ Sıkça Sorulan Sorular (SSS)
1. Servis keşfi neden kritiktir? IP değişimlerini gizler ve mikroservis iletişimini stabil tutar.
2. CoreDNS neden kube-dns’in yerini aldı? Güvenlik, performans ve ölçeklenebilirlik için.
3. DNS olmadan Kubernetes çalışır mı? Çalışır, ancak servis iletişimi zorlaşır.
4. dnsConfig ne zaman kullanılmalı? Özel veya harici DNS sunucusu gerektiğinde.
🎯 Sonuç
Kubernetes DNS servisi, küme içi iletişimin temelidir. CoreDNS ile bu yapı artık daha güvenli ve daha hızlıdır.
Bu mimariyi Rabisu Bulut Kubernetes altyapısında hemen deneyebilirsiniz.