CodeBlanks Logo Icon CodeBlanks

Service nedir?

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.9

Uygulama 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

terminal
# buraya yaz

Örnek çözüm

terminal
kubectl expose deployment web --port=80 --target-port=8080
kubectl get svc
kubectl get endpointslices -l kubernetes.io/service-name=web

Beklenen çı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.

Soru
kubectl ____ deployment web --port=80 --target-port=8080
Cevap
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ı

Orta seviye bölümündeki tüm dersler