Service selector
- Docker & Kubernetes kursu
- Orta seviye
- Ders 41/82
- 4 dk
Service selector ile Pod seçmeyi öğrenirsin.
Service selector
Service'in selector'ı pod etiketleriyle eşleşir; deployment'ın adıyla ilgisi yoktur. Bu, güçlü desenlere izin verir: iki sürümün pod'ları aynı etiketi taşırsa trafik ikisine dağılır; etiketi değiştirince trafik bir sürüme geçer (mavi-yeşil dağıtım):
# mavi: app=web, surum=v1 yeşil: app=web, surum=v2
spec:
selector:
app: web
surum: v2 # trafik yalnızca v2'ye
kubectl patch svc web -p '{"spec":{"selector":{"app":"web","surum":"v1"}}}' # geri dönSelector'sız servis
Selector yazılmazsa Kubernetes uç noktaları otomatik doldurmaz. Bu, cluster dışındaki bir veritabanına cluster içinden sabit bir adla erişmek için kullanılır; ya da ExternalName türü bir DNS takma adı verir:
apiVersion: v1
kind: Service
metadata:
name: dis-db
spec:
type: ExternalName
externalName: db.sirket.com # dis-db -> db.sirket.com (CNAME)Uygulama Sürüme göre seçici
Bir Service YAML'ı yaz: adı web; selector iki etiketle: app: web ve surum: v2; port port: 80, targetPort: 8080.
Başlangıç kodu
# buraya yazÖrnek çözüm
apiVersion: v1
kind: Service
metadata:
name: web
spec:
selector:
app: web
surum: v2
ports:
- port: 80
targetPort: 8080Beklenen çıktı
service/web created
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Service selector'ında birden çok etiket varsa pod'un seçilmesi için ne gerekir?
- Hiçbirini taşımaması
- Tüm etiketleri taşıması Doğru cevap
- Herhangi birini taşıması
- İlk etiketi taşıması
Açıklama: Etiketler VE ile birleşir.
2 Servisin selector'ını yerinde değiştir.
kubectl ____ svc web -p '{"spec":{"selector":{"app":"web","surum":"v1"}}}'
kubectl patch svc web -p '{"spec":{"selector":{"app":"web","surum":"v1"}}}'
Açıklama: patch nesnenin bir kısmını değiştirir.
3 Eşleştir.
| Kavram | Anlamı |
|---|---|
selector |
Pod etiketleriyle eşleşir |
çoklu etiket |
VE ile birleşir |
mavi-yeşil |
Etiketle trafik geçişi |
ExternalName |
DNS takma adı |