Service nedir?
- Docker & Kubernetes kursu
- Orta seviye
- Ders 37/82
- 4 dk
Service'in ağ üzerinden Pod'lara erişim sağladığını öğrenirsin.
Service nedir?
Pod'lar gelip gider ve her biri yeni bir IP alır. Service, etiketle seçilen bir grup pod'un önünde sabit bir sanal IP ve DNS adı sunar; gelen trafiği hazır pod'lara dağıtır:
web (Service, 10.96.45.12:80)
├─► 10.244.1.5:8080 (web-…-abcde)
├─► 10.244.2.7:8080 (web-…-fghij)
└─► 10.244.1.9:8080 (web-…-klmno)Aynı namespace'teki başka bir pod bu servise http://web adresiyle ulaşır.
expose ve Endpoints
Bir deployment için Service'i en hızlı kubectl expose oluşturur. Service'in arkasındaki gerçek pod adresleri EndpointSlice nesnelerinde tutulur; boş çıkıyorsa selector hiçbir pod'la eşleşmiyordur:
$ kubectl expose deployment web --port=80 --target-port=8080
service/web exposed
$ kubectl get endpointslices -l kubernetes.io/service-name=web
NAME ADDRESSTYPE PORTS ENDPOINTS
web-x7k2p IPv4 8080 10.244.1.5,10.244.2.7,10.244.1.9Uygulama Servisi aç ve doğrula
Üç komut yaz: web deployment'ını --port=80 --target-port=8080 ile expose et; service'leri listele; web servisinin EndpointSlice'larını -l kubernetes.io/service-name=web ile listele.
Başlangıç kodu
# buraya yazÖrnek çözüm
kubectl expose deployment web --port=80 --target-port=8080
kubectl get svc
kubectl get endpointslices -l kubernetes.io/service-name=webBeklenen çıktı
service/web exposed NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 2d web ClusterIP 10.96.45.12 <none> 80/TCP 2s NAME ADDRESSTYPE PORTS ENDPOINTS web-x7k2p IPv4 8080 10.244.1.5,10.244.2.7
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Service hangi pod'lara trafik gönderir?
- Deployment'ın ilk pod'una
- Selector'la eşleşen ve hazır (Ready) olan pod'lara Doğru cevap
- Aynı node'daki tüm pod'lara
- Adı aynı olan pod'lara
Açıklama: readinessProbe'dan geçmeyen pod uç nokta listesinden çıkarılır.
2 Deployment için bir Service oluştur.
kubectl ____ deployment web --port=80 --target-port=8080
kubectl expose deployment web --port=80 --target-port=8080
Açıklama: expose, deployment'ın selector'ını kullanır.
3 Eşleştir.
| Kavram | Anlamı |
|---|---|
Service |
Sabit adres |
selector |
Hedef pod'lar |
EndpointSlice |
Gerçek pod adresleri |
http://web |
DNS adı |