Cross-cluster service
- Docker & Kubernetes kursu
- Uzman
- Ders 28/47
- 4 dk
Cluster'lar arası service erişimini öğrenirsin.
Cross-cluster service
Bir cluster'daki servisin başka bir cluster'dan adla erişilmesi için çözümler:
- Multi-Cluster Services API (MCS):
ServiceExportile dışa açılan servis, diğer cluster'lardaad.namespace.svc.clusterset.localadıyla görünür (GKE, Submariner, Cilium ClusterMesh destekler). - Service mesh: Istio çok cluster'lı kurulumda servis keşfini ve mTLS'i cluster'lar arasında genişletir.
- Basit yol: servisi bir iç yük dengeleyiciyle (LoadBalancer + DNS) açmak.
apiVersion: multicluster.x-k8s.io/v1alpha1
kind: ServiceExport
metadata:
name: odeme
namespace: magaza
# diğer cluster'dan: http://odeme.magaza.svc.clusterset.localAğ önkoşulları
Cluster'lar arası iletişim için pod ya da servis ağlarının çakışmaması ve birbirine yönlendirilebilir olması gerekir. Bu yüzden cluster'lar kurulurken CIDR aralıkları planlanır:
uretim-eu pod CIDR 10.10.0.0/16 servis CIDR 10.110.0.0/16
uretim-tr pod CIDR 10.20.0.0/16 servis CIDR 10.120.0.0/16
# çakışma yok: yönlendirme ve MCS mümkünÇakışan aralıklar sonradan değiştirilemez; cluster yeniden kurulmak zorunda kalınabilir.
Uygulama Servisi dışa aktar
Bir ServiceExport YAML'ı yaz: multicluster.x-k8s.io/v1alpha1; adı odeme, namespace'i magaza. Ardından ayrı bir satırda uretim-tr context'inde magaza'daki ServiceImport'ları listeleyen komutu yaz (kubectl get serviceimports).
Başlangıç kodu
# buraya yazÖrnek çözüm
apiVersion: multicluster.x-k8s.io/v1alpha1
kind: ServiceExport
metadata:
name: odeme
namespace: magaza
kubectl get serviceimports -n magaza --context uretim-trBeklenen çıktı
serviceexport.multicluster.x-k8s.io/odeme created NAME TYPE IP AGE odeme ClusterSetIP ["10.120.4.17"] 30s
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 MCS API'de dışa açılan bir servisin diğer cluster'lardaki DNS son eki nedir?
- svc.cluster.local
- global.local
- mesh.local
- svc.clusterset.local Doğru cevap
Açıklama: cluster.local yerel cluster içindir.
2 Servisi diğer cluster'lara aç.
apiVersion: multicluster.x-k8s.io/v1alpha1
kind: ____
metadata:
name: odeme
apiVersion: multicluster.x-k8s.io/v1alpha1
kind: ServiceExport
metadata:
name: odeme
Açıklama: ServiceExport dışa açar; diğer tarafta ServiceImport oluşur.
3 Eşleştir.
| Kavram | Anlamı |
|---|---|
ServiceExport |
Dışa aç |
ServiceImport |
Diğer cluster'da görünür |
clusterset.local |
Küme seti DNS'i |
CIDR planı |
Çakışmayı önler |