Sobes.tech
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:

  1. 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
    
  2. 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
    
  3. LoadBalancer Servisi (Bulut sağlayıcı seviyesinde):

    • LoadBalancer tü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
    
  4. Ö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.