DNS ve Hizmet Keşfi
Pod'ların Kubernetes'in yerleşik DNS'ini kullanarak birbirlerini nasıl bulduğunu ve hizmet keşfinin arka planda nasıl çalıştığını anlayın.
DNS ve Hizmet Keşfi, CoddyKit'te ücretsiz bir DevOps Bootcamp dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, DevOps Bootcamp öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. DevOps Bootcamp kursu toplamda 4 dersten oluşur.
Hizmet Bulma Sorunu
Pod'lar gelir ve gider, IP'leri de sürekli değişir. IP'leri sabit kodlamak anında sorun çıkarır. Kubernetes bu sorunu DNS tabanlı hizmet bulma ile çözer.
Bir IP yerine kararlı bir adla iletişim kurarsınız.
Küme DNS'i
Her kümede bir DNS hizmeti çalışır (genellikle CoreDNS). Bu hizmet, Hizmetler ve Pod'lar için otomatik olarak DNS kayıtları oluşturur; böylece adlar doğru ClusterIP'ye çözümlenir.
Hizmet DNS Adları
Bir Hizmet, öngörülebilir bir deseni izleyen DNS adı alır:
service-name.namespace.svc.cluster.local
Aynı ad alanında yalnızca kısa olan service-name adını kullanabilirsiniz.
# from a Pod in the same namespace
curl http://payment-service:8080
# fully qualified, from any namespace
curl http://payment-service.shop.svc.cluster.local:8080Ad Alanları ve Adlandırma
Ad alanı, adın bir parçasıdır. Başka bir ad alanındaki Hizmete ulaşmak için onu ekleyin: service.namespace.
# Pod in 'frontend' namespace calling 'backend' namespace
curl http://api.backend.svc.cluster.localDNS'i Pod'dan Sınama
Ad çözümlemesini sınamak için geçici bir Pod başlatabilirsiniz.
kubectl run dnstest --image=busybox:1.36 --rm -it --restart=Never -- nslookup payment-serviceCoreDNS Adları Nasıl Çözümler?
Bir Pod bir ad sorguladığında istek CoreDNS'e gider. CoreDNS eşleşen Hizmeti arar ve onun ClusterIP'sini döndürür. Başsız Hizmetlerde ise Pod IP'lerini doğrudan döndürür.
Başsız Hizmetler
Başsız bir Hizmet (clusterIP: None), tek sanal IP'yi devre dışı bırakır. Bunun yerine DNS, tek tek Pod IP'lerini döndürür; bu, Pod'lara doğrudan adres veren durum bilgili uygulamalar için gereklidir.
apiVersion: v1
kind: Service
metadata:
name: db
spec:
clusterIP: None
selector:
app: db
ports:
- port: 5432Pod DNS Kayıtları
Başsız bir Hizmetle, hizmeti destekleyen her Pod kendi DNS kaydını da alabilir. Bu, Pod'ların db-0 ve db-1 gibi kararlı kimliklere sahip olduğu StatefulSets için kullanışlıdır.
# stable per-Pod name in a StatefulSet
curl http://db-0.db.default.svc.cluster.local:5432Pod resolv.conf Yapılandırmasını İnceleme
Kubernetes, DNS yapılandırmasını her Pod'a ekler. Arama alanları, kısa adların doğru biçimde çözümlenmesini sağlar.
kubectl exec -it mypod -- cat /etc/resolv.conf
# nameserver 10.96.0.10
# search default.svc.cluster.local svc.cluster.local cluster.localOrtam Değişkenleri ve DNS Karşılaştırması
Kubernetes, Hizmet bağlantı bilgilerini ortam değişkenleri olarak da ekler, ancak bunu yalnızca Pod başlatıldığında var olan Hizmetler için yapar. DNS tercih edilir, çünkü her zaman mevcut durumu yansıtır.
Yaygın DNS Tuzakları
- Ad alanları arasında çağrı yaparken ad alanını unutmak
- Eşleşen Pod'ları olmayan bir Hizmet için DNS beklemek (uç nokta yok)
- Adı yeniden çözümlemek yerine uygulamada eski IP'leri önbelleğe almak
Hızlı Kontrol
Doğru DNS adı biçimini seçin.
Özet
Kubernetes'in, Hizmetlere service.namespace.svc.cluster.local biçimini izleyen kararlı DNS adları vermek için CoreDNS kullandığını öğrendiniz. Kısa adlar bir ad alanı içinde çalışır, başsız Hizmetler tek tek Pod IP'lerini sunar ve DNS her zaman mevcut küme durumunu yansıtır.
Sıkça Sorulan Sorular
“DNS ve Hizmet Keşfi” dersi ücretsiz mi?
Evet — “DNS ve Hizmet Keşfi” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve DevOps Bootcamp kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. DevOps Bootcamp kursu toplamda 4 dersten oluşur.
“DNS ve Hizmet Keşfi” dersinde ne öğreneceğim?
Pod'ların Kubernetes'in yerleşik DNS'ini kullanarak birbirlerini nasıl bulduğunu ve hizmet keşfinin arka planda nasıl çalıştığını anlayın. DevOps Bootcamp ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
DevOps Bootcamp öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te DevOps Bootcamp, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“DNS ve Hizmet Keşfi” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu DevOps Bootcamp dersinde kod yazıp çalıştırabilir miyim?
Evet. Her DevOps Bootcamp dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Hizmetlerle Uygulamaları Erişime Açma
- Hizmet Türleri: ClusterIP, NodePort, LoadBalancer
- Harici Erişim için Ingress
- DNS ve Hizmet Keşfi