Middle+
Kubernetes'te yük dengeleme nasıl uygulanır?
sobes.tech yapay zeka
AI'dan gelen yanıt
Kubernetes'te yük dengeleme, birkaç seviyede uygulanır:
-
Servis (Kube-proxy seviyesinde):
- Her Pod, Servis içinde benzersiz bir IP adresi alır.
- Her düğümde çalışan Kube-proxy, Servis ve EndpointSlice'daki değişiklikleri izler.
- Trafiği yönlendirme kuralları (iptables, ipvs) ile yapılandırır.
- Bu kurallar, trafiği Servis'in küme IP'sine yönlendirir ve bu trafiği seçilen algoritma (varsayılan Round Robin) ile Pod'lar arasında dağıtır.
- Kube-proxy'nin iki çalışma modu vardır: iptables (Linux netfilter tabanlı, varsayılan) ve ipvs (daha büyük kümeler için daha verimli, Virtual Server API tabanlı).
apiVersion: v1 kind: Service metadata: name: my-service spec: selector: app: my-app # app: my-app etiketi olan Pod'ları seçer ports: - protocol: TCP port: 80 # Servis portu targetPort: 8080 # Pod'larındaki port -
Ingress (L7 seviyesinde):
- Dış HTTP/S trafiği için tek giriş noktası olarak çalışır.
- Kuralları uygulamak için bir Ingress denetleyicisi (örneğin, Nginx Ingress Controller) gereklidir.
- URL yolu, ana bilgisayar adı ve diğer L7 kurallarına göre trafiği belirli bir Servis'e yönlendirir.
- Farklı yük dengeleme stratejileri, SSL sonlandırma, isim tabanlı sanal barındırma gibi özellikleri destekler.
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: my-ingress spec: rules: - host: myapp.example.com http: paths: - path: / pathType: Prefix backend: service: name: my-service # Bu Servis'e trafiği yönlendirir port: number: 80 -
LoadBalancer Servisi (Bulut sağlayıcı seviyesinde):
LoadBalancertüründe bir Servis oluşturulduğunda, Kubernetes bulut sağlayıcısının API'siyle etkileşime geçer (AWS, GCP, Azure vb.).- Sağlayıcı, trafiği küme düğümlerine yönlendiren dış bir yük dengeleyici oluşturur.
- Daha sonra Kube-proxy, trafiği küme içindeki Pod'lara yönlendirir.
- Bu tür Servis, sağlayıcıya bağlı olarak L4 (TCP/UDP) veya L7 (HTTP/S) seviyesinde dış erişim ve yük dengeleme sağlar.
apiVersion: v1 kind: Service metadata: name: my-external-service spec: selector: app: my-app ports: - protocol: TCP port: 80 targetPort: 8080 type: LoadBalancer # Dış yük dengeleyici oluşturur -
Özel Yük Dengeleyiciler (örneğin, HAProxy, Nginx Pod olarak):
- Küme içinde Deployment ve Service (ClusterIP veya NodePort) olarak dağıtılabilir.
- Dış trafiği bu Service'e yapılandırın.
- Yük dengeleyici, trafiği diğer Pod'lar arasında dağıtacaktır.
Bu şekilde, Kubernetes yerleşik mekanizmaları (Service, Kube-proxy) ile dış çözümleri (Ingress, Bulut Sağlayıcı Yük Dengeleyicileri) ve özel yük dengeleyicileri bir araya getirerek çok seviyeli bir yük dengeleme yaklaşımı sunar.