איזון עומסים ברשת

במאמר הזה מוסבר איך להגדיר מאזן עומסים (LB) ברמה 4 שנתמך על ידי מאזן עומסים רגיל של Azure באמצעות GKE ב-Azure .

כשיוצרים שירות מסוג LoadBalancer, בקר GKE ב-Azure מגדיר מאזן עומסים של Azure.

לפני שמתחילים

בחירה של מאזן עומסים ציבורי או פרטי

מאזני עומסים של שירותים יכולים להיות ציבוריים – עם כתובות IP ציבוריות בקצה הקדמי – או פנימיים – עם גישה רק דרך כתובות IP פרטיות.

כברירת מחדל, שירות חדש הוא ציבורי. כדי ליצור מאזן עומסים פנימי, מגדירים את ההערה service.beta.kubernetes.io/azure-load-balancer-internal לערך "true" במניפסט.

בחירת רשת משנה למאזני עומסים פנימיים

כשיוצרים מאזן עומסים פנימי, מערכת GKE on Azure צריכה לבחור את תת-הרשת שבה ימוקם מאזן העומסים. רשת המשנה של איזון העומסים של שירות ברירת המחדל נבחרת מפרמטרים של יצירת האשכול באופן הבא:

  1. אם השדה cluster.networking.serviceLoadBalancerSubnetId מצוין והוא לא ריק,
  2. אחרת, cluster.controlPlane.subnetId

אפשר גם לציין את רשת המשנה שבה רוצים להשתמש עבור מאזן עומסים מסוים על ידי הוספת ההערה service.beta.kubernetes.io/azure-load-balancer-internal-subnet לשירות. הערך של ההערה הזו הוא שם רשת המשנה.

יצירת LoadBalancer לדוגמה

כדי ליצור מאזן עומסים, יוצרים פריסה וחושפים אותה באמצעות שירות.

  1. יוצרים את הפריסה. הקונטיינרים בפריסה הזו מאזינים ליציאה 50001. שומרים את קובץ ה-YAML הבא בקובץ בשם my-deployment-50001.yaml:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: my-deployment-50001
    spec:
      selector:
        matchLabels:
          app: products
          department: sales
      replicas: 3
      template:
        metadata:
          labels:
            app: products
            department: sales
        spec:
          containers:
          - name: hello
            image: "gcr.io/google-samples/hello-app:2.0"
            env:
            - name: "PORT"
              value: "50001"
    
  2. יצירת הפריסה באמצעות kubectl apply:

    kubectl apply -f my-deployment-50001.yaml
    
  3. מוודאים ששלושה פודים פועלים:

    kubectl get pods --selector=app=products
    
  4. יוצרים שירות מסוג LoadBalancer לפריסה. אתם יכולים ליצור מאזן עומסים רגיל של Azure שהוא ציבורי או פנימי. בוחרים אחת מהאפשרויות הבאות.

    מעתיקים את אחד הקובצי המניפסט הבאים לקובץ בשם my-lb-service.yaml.

    גלוי לכולם

    apiVersion: v1
    kind: Service
    metadata:
      name: my-lb-service
    spec:
      type: LoadBalancer
      selector:
        app: products
        department: sales
      ports:
      - protocol: TCP
        port: 60000
        targetPort: 50001
    

    פנימי

    יוצרים מאזן עומסים פנימי על ידי הגדרת ההערה service.beta.kubernetes.io/azure-load-balancer-internal לערך "true". קובץ ה-YAML הבא כולל את ההערה הזו. yaml apiVersion: v1 kind: Service metadata: name: my-lb-service annotations: service.beta.kubernetes.io/azure-load-balancer-internal: "true" spec: type: LoadBalancer selector: app: products department: sales ports: - protocol: TCP port: 60000 targetPort: 50001

  5. יוצרים את השירות באמצעות kubectl apply:

    kubectl apply -f my-lb-service.yaml
    
  6. אפשר לראות את הכתובת למקרי חירום של השירות ב-kubectl get service.

    kubectl get service my-lb-service
    

    הפלט יכלול עמודה EXTERNAL-IP עם כתובת של מאזן העומסים (ציבורית או פרטית, בהתאם לאופן שבו מאזן העומסים נוצר).

  7. אם יצרתם מאזן עומסים ציבורי, אתם יכולים להתחבר למאזן העומסים באמצעות curl. מחליפים את external-ip בכתובת מהפלט של kubectl get service מהשלב הקודם.

    curl http://external-ip:60000
    

    הפלט אמור להיראות כך:

    Hello, world!
    Version: 2.0.0
    Hostname: my-deployment-50001-84b6dc5555-zmk7q
    

סידור וארגון

כדי להסיר את השירות ואת הפריסה, משתמשים ב-kubectl delete.

kubectl delete -f my-lb-service.yaml
kubectl delete -f my-deployment-50001.yaml