Kubernetes'te DNS Çözümleme: ndots, Arama Alanları, CoreDNS Önbelleği ve Beş Saniyelik Takılmalar
Bir pod dış bir adı sorarken neden sekiz DNS sorgusu üretir, ndots'u düşürmek neyi kırar, autopath ve NodeLocal DNSCache ne zaman gerekir, tam 5 saniyelik gecikmeler nereden çıkar ve hangi düzeltme uygulama, pod ya da CoreDNS seviyesine aittir.
Kubernetes içindeki uygulamalar dış bir API'ye ya da başka bir servise giderken kimse DNS'i düşünmez; ta ki tail gecikmesi açıklanamaz biçimde 5 saniye sıçrayana ya da CoreDNS pod'ları küme büyüdükçe yük altında ezilene kadar. Problemin kaynağı çoğu zaman uygulama değil, pod'un içine yazılan çözümleyici ayarlarıdır. Bu yazı bir pod'un bir adı nasıl çözdüğünü, varsayılanların neden yanlış ölçekte kalabildiğini ve hangi durumda hangi düzeltmenin işe yaradığını anlatır.
Bir pod adı nasıl çözer
Varsayılan dnsPolicy: ClusterFirst ile kubelet her pod'a şöyle bir çözümleyici dosyası yazar: küme DNS servisinin adresi, üç arama alanı (<namespace>.svc.cluster.local, svc.cluster.local, cluster.local) ve options ndots:5. Bu üç arama alanı sayesinde aynı ad alanındaki bir servise sadece veritabani, başka ad alanındaki bir servise veritabani.diger-ns diyebilirsiniz.
ndots:5 kuralı şudur: sorgulanan adda beşten az nokta varsa ad "göreli" sayılır ve önce arama alanlarıyla sırayla denenir, en son mutlak hâliyle sorulur. api.example.com iki nokta taşıdığı için önce api.example.com.<namespace>.svc.cluster.local, sonra svc.cluster.local ve cluster.local ekleriyle sorulur; üçü NXDOMAIN döndükten sonra gerçek ad gider. Her deneme için hem A hem AAAA kaydı istendiğinde dış bir adrese giden tek bir çağrı sekiz DNS sorgusuna dönüşür. Kümeye dokunmayan bir HTTP isteği, yolun başında CoreDNS'e dört gidiş dönüş yaptırır.
dig varsayılan olarak arama alanlarını uygulamaz; +search bayrağı uygulamanın gerçekten gördüğü davranışı gösterir. Çıktıdaki sorgu sayısı ve süresi yazının geri kalanının somut gerekçesidir.
Üç düzeltme, üç farklı yer
Uygulama tarafında: adı mutlak yaz. Adın sonuna nokta koymak (api.example.com.) çözümleyiciye "bu ad tamdır, arama alanı ekleme" der ve tüm ek sorguları kaldırır. Kod ya da yapılandırma sizdeyse en ucuz düzeltme budur. Tuzağı: bazı HTTP istemcileri ve TLS kütüphaneleri sondaki noktayı Host başlığına ya da SNI'ya taşır ve sunucu sanal konağı eşleştiremez. Kütüphanenizde deneyin, varsayarak geçmeyin.
Pod tarafında: ndots'u düşür. Kaynağa dokunamıyorsanız pod spesifikasyonundan çözümleyici seçeneklerini değiştirin:
ndots:2 ile api.example.com doğrudan mutlak sorulur, veritabani ve veritabani.diger-ns hâlâ arama alanlarından geçer. Kırdığı tek şey tam biçimli iç adlar değil, üç parçalı kısaltmalardır: servis.ns.svc biçimini kullanan bir kütüphane iki nokta taşıdığı için artık arama yapmadan mutlak sorulur ve çözülmez. Dağıtmadan önce ekip içinde bu kısaltmanın kullanılıp kullanılmadığını grep ile arayın.
Sunucu tarafında: CoreDNS'i arama yolunu yürütmeye ikna et. CoreDNS'in autopath eklentisi arama yürüyüşünü istemci yerine sunucuda yapar: ilk sorguya, doğru sonucu işaret eden bir CNAME ile birlikte yanıt döner ve istemci geri kalan denemeleri hiç yapmaz. Bunun bedeli kubernetes eklentisinin pods verified modunda çalışması, yani CoreDNS'in hangi IP'nin hangi ad alanına ait olduğunu bilmek için tüm pod'ları izlemesidir. Büyük kümede bu izleme belleği ve API sunucusu yükünü gözle görülür artırır. Kaynağı ve pod'u değiştiremediğiniz üçüncü parti iş yükleri için mantıklı, genel varsayılan olarak değil.
Önbellek ve zaman aşımı
CoreDNS'in cache eklentisi hem olumlu hem olumsuz yanıtları saklar; ndots yürüyüşünün ürettiği NXDOMAIN'ler olumsuz önbellekten döner, bu da aynı dış adı sık soran iş yüklerinde yükü ciddi düşürür. Varsayılan cache 30 olumlu yanıtların TTL'ini 30 saniyeyle sınırlar. Kısa TTL küme içi servis değişimini hızlı yansıtır ama sorgu sayısını artırır; dış adlar için ayrı bir sunucu bloğunda daha uzun önbellek tutmak makul bir denge verir.
Bu Corefile'ın ilk bloğu yalnız example.com altındaki adları uzun önbellekle yanıtlar, ikincisi kubeadm'in kurduğu varsayılandır. reload eklentisi ConfigMap değişince yeniden başlatma gerektirmez; loop eklentisi CoreDNS'in kendine yönlendirdiği döngüleri yakalayıp pod'u durdurur, bu yüzden CrashLoopBackOff gördüğünüzde önce düğümün kendi çözümleyici dosyasına bakın.
Ölçmeden ayar yapmayın. coredns_dns_requests_total, coredns_dns_request_duration_seconds ve coredns_cache_hits_total metrikleri sorgu tipine ve bölgeye göre etiketlidir; ndots değişikliğinin etkisi bu üçünde dakikalar içinde görünür.
Beş saniyelik takılmalar
DNS gecikmesinin klasik belirtisi ortalamanın değil kuyruğun bozulmasıdır: çoğu istek milisaniye, bazıları tam 5 saniye. Bu sayı glibc çözümleyicisinin varsayılan zaman aşımıdır ve neredeyse her zaman kaybolan bir UDP paketine işaret eder. Kaybın en bilinen nedeni, A ve AAAA sorgularının aynı soketten aynı anda çıkması ve küme DNS servisine giden DNAT sırasında conntrack tablosuna iki kaydın yarışarak girmesidir; kaybeden paket sessizce düşer, istemci zaman aşımını bekleyip yeniden dener.
Üç çare vardır. glibc tabanlı imajlarda single-request-reopen seçeneği iki sorguyu ayrı soketlerden yollayarak yarışı ortadan kaldırır; dnsConfig.options ile eklenir. Alpine gibi musl tabanlı imajlar bu seçeneği tanımaz ve sessizce yok sayar, bu yüzden Alpine'de sorun devam eder ve çoğu ekip bunu "DNS bazen yavaş" diye kabullenir. Kalıcı çözüm NodeLocal DNSCache'tir: her düğümde bir DaemonSet, pod'ların sorgusunu düğümdeki yerel önbellekten karşılar, üst kaynağa TCP ile gider ve conntrack'i hiç devreye sokmaz. Yerel önbellek isabet oranı yüksek olduğu için CoreDNS'e giden yük de düşer. Bedeli bir ek bileşen ve kubelet'in küme DNS adresinin değiştirilmesidir; yükseltmelerde bu DaemonSet'i unutmak tüm kümenin DNS'ini keser.
Sık düşülen tuzaklar
hostNetwork: true olan bir pod'a ClusterFirst politika verirseniz düğümün çözümleyicisini alır ve küme servislerini çözemez; doğru değer ClusterFirstWithHostNettir. dnsPolicy: None yalnız dnsConfig içinde eksiksiz nameservers verildiğinde çalışır, aksi hâlde pod hiç başlamaz.
Küme alan adı cluster.local dışında bir şeyse, kaynak kodda ya da Helm şablonlarında cluster.local sabitlenmiş her bileşen çözümlenemeyen adlar üretir ve belirtisi çoğu zaman DNS hatası değil, bağlantı reddi olur. Şablonun küme alan adını bir değerden aldığını ve o değerin boş kalmadığını kurulumdan önce kontrol edin; boş değer svc. ile biten yarım bir ad üretir ve hiçbir yerde uyarı vermez.
Sık sorgulanan iş yükleri için TTL'i sıfıra yaklaştırmak, her isteği CoreDNS'e taşıyıp tam da kaçınmak istediğiniz yükü yaratır. TTL'i düşürmek yerine değişimin kaynağını, örneğin çok sık yeniden oluşturulan headless servis pod'larını, azaltmayı deneyin.
Ne zaman dokunmamalı
Küçük bir küme, tek ad alanı ve az sayıda dış bağımlılık varsa varsayılanlar iyidir; ndots:5 işe yarar bir kolaylık sağlar ve CoreDNS'in iki replikası her şeyi karşılar. Sorun küme büyüdükçe, dış API çağrıları arttıkça ve gecikme hedefi sıkılaştıkça çıkar. O noktada sıra hep aynıdır: önce dig +search ile ne olduğunu gör, sonra en az müdahaleyle, uygulama ya da pod seviyesinde düzelt, ancak ölçüm hâlâ kötüyse CoreDNS'e ve düğüm seviyesindeki önbelleğe geç.
1-5 tab geçiş ·
tab sonraki ·
esc geri al ·
↓ kaydır
> ls -lah ~/services/ --sort=tier
[OK] 25 records · 8 featured · 1 retainer · 16 standard
/02 hizmetler
services.tree
> note
· Fiyatlar USD cinsindendir. 6-12 günlük projelerde %7, 13+ günlük projelerde %14 hacim indirimi uygulanmaktadır. 100 adam-gün ve üzeri kapsamlı programlarda proje bazlı özel fiyatlandırma yapılır. Fiyatlar kapsam, aciliyet ve uzun dönem iş birliğine göre müzakere edilebilir.
> ls ~/products/ --open-source
[OK] 2 entries · 1 live · 1 pre-release
/03 ürünler
products.list
liveaçık kaynak · mit/prod/01
filex
her yere gömülebilen self-hosted dosya yöneticisi
tek go binary · vue/react/web-component embed · 5 storage sürücüsü · realtime collab · rbac · native multi-tenancy · ai ajanları için mcp server
Altyapıyı kurar, otomasyonu sağlar, sistemi ayakta tutar.
BRF Teknoloji, Bursa merkezli bir DevSecOps ve yazılım danışmanlık firmasıdır. Kubernetes cluster yönetiminden serverless platform kurulumuna, CI/CD pipeline tasarımından AI agent geliştirmeye kadar 25 farklı hizmet alanında çalışıyoruz.
İşimizin özü basit: sisteminizi ayağa kaldırır, otomatize eder ve gece 3'te sizi uyandırmayacak hale getiririz. Terraform ile altyapınızı kodlar, ArgoCD ile deploy sürecinizi GitOps'a taşır, Prometheus ile her şeyi izleriz. Bir şey bozulursa — biz bozulmadan önce müdahale ederiz.
Vendor lock-in'e karşıyız. Açık kaynak araçlarla, self-hosted çözümlerle ve endüstri standardı teknolojilerle çalışırız. Knative üzerinde kendi serverless platformunuzu kurarız, Kata Containers ile izole ederiz, Vault ile secret'larınızı yönetiriz. Her projeyi net kapsam, net süre, net fiyatla teslim ederiz.
DevSecOps & CI/CD
Kubernetes & Serverless
Infrastructure as Code
AI & Agent (MCP/ACP)
Güvenlik & Sıfır Güven
Full-Stack Geliştirme
Self-Hosted Çözümler
> grep -i question ~/faq.md
[OK] 3 entries · click to expand
[?]BRF Teknoloji'nin DevOps çözümleri hangi hizmetleri içerir?▾
CI/CD pipeline kurulumu, Kubernetes cluster yönetimi, container migrasyonu, Terraform ile altyapı otomasyonu, monitoring & alerting, şirket içi teknoloji kurulumları ve DevOps danışmanlık hizmetleri sunuyoruz.
[?]Yazılım geliştirme hizmetleriniz nelerdir?▾
MVP geliştirme, mevcut yazılım performans optimizasyonu, backend API geliştirme (Node.js, Go, Python) ve tam stack uygulama geliştirme hizmetleri sunuyoruz. Her projede teknik borç minimumda tutularak teslim edilir.
[?]Hangi DevOps araçlarıyla çalışıyorsunuz?▾
Kubernetes ve Docker’dan Talos Linux’a, Terraform ve OpenTofu’dan Ansible’a, Jenkins, GitLab CI/CD, GitHub Actions, ArgoCD, Flux, Helm ve Rancher’a kadar endüstri standardı araçlarla çalışıyoruz. İzleme ve hata takibinde Prometheus, Grafana, Loki, Tempo, OpenTelemetry ve GlitchTip; ağ katmanında Cilium ve Envoy; test otomasyonunda Playwright, Cypress, k6, Locust, Testcontainers ve Trivy kullanıyoruz. Projenizin ihtiyacına göre en uygun araç setini birlikte belirliyoruz.
brf.sh / 2026
·bursa/tr·
timezone utc+3·
tüm sistemler nominal
> ./connect --target=brf.sh
/05 iletişim
contact.txt
> cat contact.txt
[email][email protected] [phone]+90 530 871 2248 [location] Üçevler Mah. İzmir Yolu Cad 241D 16120 Nilüfer/Bursa [hours] Hafta içi 09:00 — 18:00 UTC+3 [eta] <24s iş günü
[OK] handshake ready
· turnstile enabled
· yanıt süresi: <24s · saat dilimi UTC+3 / bursa
CI/CD Pipeline Kurulumu
GitHub Actions, GitLab CI/CD ile otomatik build, test ve deploy süreçleri.
Mevcut ya da sıfırdan bir repo için otomatik build, test ve deploy pipeline'ı kurulur. GitHub Actions, GitLab CI/CD veya tercih edilen araç kullanılır. Staging + production ortamları için ayrı akışlar tanımlanır.
Mevcut uygulamaların container mimarisine taşınması.
Mevcut uygulamaların container mimarisine taşınması. Docker image tasarımı, Compose yapılandırması ve Kubernetes manifest'lerine dönüştürme. İleri düzey izolasyon için Kata Containers / gVisor dahil edilebilir.
Prometheus, Grafana, Loki ile altyapı ve servis izleme.
Prometheus + Grafana stack kurulumu, servis ve altyapı metrikleri için dashboard'lar, kritik eşikler için alert tanımları. İsteğe bağlı: Zabbix, Loki log aggregation.
GitLab, Nextcloud, VPN, mail sunucusu gibi şirket içi araçlar.
GitLab, Mattermost, Nextcloud, mail sunucusu, VPN, iç monitoring gibi araçların şirket sunucularında kurulumu. Docker Compose veya Kubernetes üzerinde deploy edilir.
MCP/ACP agent'lar, RAG pipeline, multi-agent orchestration, model serving.
LLM entegrasyonu (OpenAI, Claude, Gemini, lokal modeller), MCP (Model Context Protocol) ve ACP (Agent Communication Protocol) ile tool-augmented AI agent'lar. RAG pipeline, multi-agent orchestration, model serving (vLLM/Ollama). Mevcut iş süreçlerine yapay zeka katmanı.
Apache Kafka, RabbitMQ, NATS ile event-driven data pipeline. Apache Airflow ile ETL/ELT orkestrasyon, real-time data akışı, CDC (Change Data Capture). Data lake/warehouse tasarımı, schema registry, dead letter queue yönetimi.
Paketler
Kafka/RabbitMQ kurulumu + temel producer/consumer
$3,500
5–7 adam/gün
ETL pipeline (Airflow + source → warehouse)
$5,200
8–12 adam/gün
Tam event-driven architecture (CDC + streaming + DLQ)
ELK Stack veya Loki + Grafana ile merkezi log yönetimi. OpenTelemetry ile distributed tracing, Jaeger/Tempo entegrasyonu. Log retention politikası, structured logging standartları, anomaly detection. Tüm servislerde uçtan uca observability.
Playwright, Cypress ile E2E test otomasyonu, k6/Gatling ile yük testi. CI/CD pipeline'a entegre pre-deploy quality gate, test coverage raporlama, visual regression testing. AI-assisted test generation ile test yazım süresini %60'a kadar düşürme.
Backstage veya Port ile internal developer portal kurulumu. Self-service ortam oluşturma, golden path template'leri, service catalog, TechDocs entegrasyonu. Developer experience (DX) metrikleri, DORA metrics takibi, cognitive load azaltma.
Paketler
Backstage/Port kurulumu + service catalog
$3,900
6–8 adam/gün
Golden path templates + self-service ortam
$6,500
10–14 adam/gün
Tam platform (portal + templates + DORA + DX metrikleri)
Toplanan Kişisel Verileriniz, Toplanma Yöntemi ve Hukuki Sebebi
Kimliğinizi belirli ya da belirlenebilir kılan her türlü bilgi "kişisel veri" olarak kabul edilmektedir. Web sitemizi ziyaret ettiğinizde veya hizmetlerimizi kullandığınızda; ad, soyad, e-posta adresi, telefon numarası gibi iletişim bilgileriniz, IP adresiniz ve tarayıcı çerez verileri otomatik ya da yarı-otomatik yollarla toplanabilir. Bu veriler, 6698 sayılı Kişisel Verilerin Korunması Kanunu'nun 5. maddesinde belirtilen "bir sözleşmenin kurulması veya ifasıyla doğrudan doğruya ilgili olması" ve "ilgili kişinin temel hak ve özgürlüklerine zarar vermemek kaydıyla, veri sorumlusunun meşru menfaatleri için veri işlenmesinin zorunlu olması" hukuki sebeplerine dayanılarak işlenmektedir.
Kişisel Verilerinizin İşlenme Amacı
Toplanan kişisel verileriniz; hizmetlerimizin sunulması ve iyileştirilmesi, müşteri taleplerinin karşılanması, yasal yükümlülüklerin yerine getirilmesi, bilgi güvenliği süreçlerinin yürütülmesi ve iletişim faaliyetlerinin yönetilmesi amaçlarıyla işlenmektedir. Verileriniz, belirtilen amaçlarla sınırlı ve ölçülü olarak işlenir; amacın ortadan kalkması halinde silinir, yok edilir veya anonim hale getirilir.
Toplanan Kişisel Verilerin Kimlere ve Hangi Amaçlarla Aktarılabileceği
Kişisel verileriniz; yasal düzenlemelerin gerektirdiği hallerde kamu kurum ve kuruluşlarına, hizmetlerin sunulması amacıyla iş ortaklarımıza ve teknik altyapı sağlayıcılarına, hukuki uyuşmazlıklarda avukatlar ve danışmanlara aktarılabilir. Aktarım, Kanun'un 8. ve 9. maddelerine uygun olarak, gerekli teknik ve idari tedbirler alınarak gerçekleştirilir.
Kişisel Verileri İşlenen Kişi Olarak Haklarınız
6698 sayılı Kanun'un 11. maddesi uyarınca; kişisel verilerinizin işlenip işlenmediğini öğrenme, işlenmişse bilgi talep etme, işlenme amacını ve amacına uygun kullanılıp kullanılmadığını öğrenme, yurt içinde veya yurt dışında aktarıldığı üçüncü kişileri bilme, eksik veya yanlış işlenmişse düzeltilmesini isteme, Kanun'un 7. maddesindeki şartlar çerçevesinde silinmesini veya yok edilmesini isteme, yapılan işlemlerin aktarıldığı üçüncü kişilere bildirilmesini isteme, münhasıran otomatik sistemler vasıtasıyla analiz edilmesi suretiyle aleyhinize bir sonucun ortaya çıkmasına itiraz etme ve kanuna aykırı işleme sebebiyle zarara uğramanız halinde zararın giderilmesini talep etme haklarına sahipsiniz. Bu haklarınızı kullanmak için web sitemizdeki iletişim kanalları aracılığıyla bize başvurabilirsiniz.
Şartlar ve Koşullar
Şartlar ve Koşullar
1. Hizmet Kapsamı ve Değişiklikler
BRF Teknoloji, sunduğu yazılım geliştirme, DevOps danışmanlık, altyapı kurulumu ve teknik destek hizmetlerini bu şartlar ve koşullar çerçevesinde yürütür. Hizmet kapsamı, her proje için ayrıca belirlenir ve karşılıklı mutabakat ile kesinleştirilir. BRF Teknoloji, sunduğu hizmetlerin kapsamını, fiyatlandırmasını ve teknik detaylarını önceden bildirmek kaydıyla güncelleme hakkını saklı tutar.
2. Gizlilik Politikası
Hizmetlerimiz kapsamında toplanan kişisel veriler, Gizlilik Politikamız çerçevesinde işlenir. Detaylı bilgi için Gizlilik Politikası sayfamızı inceleyebilirsiniz.
3. Hizmet Kullanımı ve Sorumluluklar
Müşteriler, sunulan hizmetleri yalnızca yasal ve etik çerçevede kullanmayı kabul eder. Hizmetlerin kötüye kullanılması, üçüncü taraf haklarının ihlali veya yasa dışı faaliyetler için kullanılması durumunda BRF Teknoloji hizmeti askıya alma veya sonlandırma hakkına sahiptir. Müşteri, proje kapsamında sağladığı bilgilerin doğruluğundan ve güncelliğinden sorumludur.
4. Ödeme Şartları
Ödeme koşulları proje bazında belirlenir ve proje başlangıcında karşılıklı mutabakat ile kesinleştirilir. Aksi belirtilmedikçe, faturalar proje tesliminden itibaren 15 gün içinde ödenir. Geciken ödemelerde aylık %2 gecikme faizi uygulanabilir.
5. İptal ve İade Politikası
İptal talepleri, hizmetin başlangıç tarihinden en az 7 gün önce yazılı olarak bildirilmelidir. Başlamış projelerde, tamamlanan iş oranına göre ücretlendirme yapılır. Proje kapsamında özel olarak geliştirilen yazılım ve altyapı bileşenleri için iade yapılmaz.