Sobes.tech
Middle+

Kubernetesda yukni taqsimlash qanday amalga oshiriladi?

sobes.tech AI

AIdan javob

Kubernetesda yuklab olishni muvofiqlashtirish bir nechta darajada amalga oshiriladi:

  1. Xizmat (Kube-proxy darajasida):

    • Har bir Pod Xizmatda noyob IP manzil oladi.
    • Har bir tugun ustida ishlaydigan Kube-proxy, Xizmat va EndpointSlice o'zgarishlarini nazorat qiladi.
    • Trafikni yo'naltirish qoidalarini (iptables, ipvs) sozlaydi.
    • Trafik Xizmatning klaster IP manziliga yo'naltiriladi va tanlangan algoritm (standart Round Robin) bo'yicha Podlar orasida taqsimlanadi.
    • Kube-proxy uchun ikki ish rejimi mavjud: iptables (Linux netfilter asosida, standart) va ipvs (katta klasterlar uchun samaraliroq, Virtual Server API asosida).
    apiVersion: v1
    kind: Service
    metadata:
      name: my-service
    spec:
      selector:
        app: my-app # app: my-app etiketi bilan Podlarni tanlaydi
      ports:
        - protocol: TCP
          port: 80 # Xizmat porti
          targetPort: 8080 # Podlar porti
    
  2. Ingress (L7 darajasida):

    • Tashqi HTTP/S yuklab olish uchun yagona kirish nuqtasi sifatida ishlaydi.
    • Qoidalarni amalga oshirish uchun Ingress controller (masalan, Nginx Ingress Controller) talab qilinadi.
    • URL yo'li, host nomi va boshqa L7 qoidalariga asoslangan holda trafikni ma'lum bir Xizmatga yo'naltiradi.
    • Turli yuklab olish strategiyalari, SSL terminatsiyasi, nom asosida virtual hostingni amalga oshirish imkonini beradi.
    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 Xizmatga trafikni yo'naltiradi
                port:
                  number: 80
    
  3. LoadBalancer Xizmati (Bulut provayder darajasida):

    • LoadBalancer turidagi Xizmatni yaratishda, Kubernetes bulut provayderining API bilan muloqot qiladi (AWS, GCP, Azure va boshqalar).
    • Provayder tashqi yuklab olish muvofiqlashtiruvchisini yaratadi, u trafikni klaster tugunlariga yo'naltiradi.
    • Keyinchalik, Kube-proxy trafikni klaster ichidagi Podlarga yo'naltiradi.
    • Bu turdagi Xizmat tashqi kirish va L4 (TCP/UDP) yoki L7 (HTTP/S) darajasida yuklab olishni ta'minlaydi, provayderga qarab.
    apiVersion: v1
    kind: Service
    metadata:
      name: my-external-service
    spec:
      selector:
        app: my-app
      ports:
        - protocol: TCP
          port: 80
          targetPort: 8080
      type: LoadBalancer # Tashqi yuklab olish muvofiqlashtiruvchisini yaratadi
    
  4. Maxsus yuklab olish muvofiqlashtiruvchilari (masalan, HAProxy, Nginx Pod sifatida):

    • Klaster ichida Deployment va Service (ClusterIP yoki NodePort) sifatida joylashtirilishi mumkin.
    • Tashqi trafikni bu Servicega sozlang.
    • Muvofiqlashtiruvchi boshqa Podlar orasida trafikni taqsimlaydi.

Shu tarzda, Kubernetes ichki mexanizmlar (Service, Kube-proxy) bilan tashqi yechimlar (Ingress, Cloud provayder yuklab olish muvofiqlashtiruvchilari) va maxsus muvofiqlashtiruvchilarni birlashtirgan ko'p darajali yondashuvni taklif qiladi.