יצירת מאזן עומסי רשת

בדף הזה מוסבר איך להגדיר מאזן עומסים ברמה 4 עם נקודת קצה של AWS Elastic Load Balancer ‏ (ELB) או מאזן עומסי רשת ‏ (NLB).

מידע נוסף על סוגים אחרים של מאזני עומסים שאפשר להשתמש בהם עם GKE ב-AWS זמין במאמר סקירה כללית על מאזני עומסים.

הדף הזה מיועד למומחי רשת שרוצים להתקין ציוד רשת, להגדיר אותו ולתת לו תמיכה. מידע נוסף על תפקידים נפוצים ומשימות לדוגמה שאנחנו מתייחסים אליהם בתוכן של Google Cloud זמין במאמר תפקידים נפוצים של משתמשים ומשימות ב-GKE.

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

בחירת סוג מאזן העומסים

‫GKE ב-AWS יוצר מאזן עומסים של שירות בתור AWS Classic Elastic Load Balancer ‏ (Classic ELB) או NLB. כברירת מחדל, GKE ב-AWS יוצר Classic ELB. כדי ליצור NLB, מגדירים את ההערה service.beta.kubernetes.io/aws-load-balancer-type לערך nlb. מידע נוסף על ההבדלים בין סוגים של מאזני עומסים זמין במאמר Load balancer types (סוגים של מאזני עומסים) בתיעוד של AWS.

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

מאזני עומסים של שירותים יכולים להיות חיצוניים (עם שם DNS שניתן לפתרון באופן ציבורי) או פנימיים (עם גישה רק בתוך ה-VPC).

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

אי אפשר להוסיף את ההערה aws-load-balancer-internal לשירות קיים. כדי לעבור בין תצורות שפונות לאינטרנט לבין תצורות פנימיות, צריך למחוק את איזון העומסים הקיים וליצור אותו מחדש.

בחירת תת-הרשתות

כשיוצרים מאזני עומסים, מערכת AWS צריכה לדעת באילו רשתות משנה למקם אותם. כברירת מחדל, המערכת מזהה את רשתות המשנה האלה באופן אוטומטי מבין רשתות המשנה ב-VPC. לשם כך, צריך להוסיף תגים ספציפיים לרשתות המשנה. לפרטים על גילוי אוטומטי של רשתות משנה ותיוג שלהן, אפשר לעיין במאמר בנושא רשתות משנה של איזון עומסים.

אפשרות אחרת היא לציין רשתות משנה של איזון עומסים באמצעות הערה, על ידי הוספת ההערה service.beta.kubernetes.io/aws-load-balancer-subnets ל-Service. הערך של ההערה הזו הוא רשימה מופרדת בפסיקים של מזהי רשתות משנה או שמות של רשתות משנה – לדוגמה: subnet-012345678abcdef,subnet-abcdef123456789,subnet-123456789abcdef.

יצירת מאזן עומסים לדוגמה

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

  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 לפריסה.

  5. מחליטים איזה סוג של מאזן עומסים צריך:

    • ‫Classic ELB שפונה לאינטרנט
    • מאזן עומסים ברשת (NLB) שפונה לאינטרנט
    • מאזן עומסים פנימי של Classic ELB
    • מאזן עומסים פנימי לרשת (NLB)

    בוחרים את הכרטיסייה שמתאימה לדרישות שלכם ומעתיקים את קובץ המניפסט שבה לקובץ בשם 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
    

    מאזן עומסים ברשת (NLB) שפונה לאינטרנט

    כדי ליצור NLB, מגדירים את ההערה service.beta.kubernetes.io/aws-load-balancer-type ל-nlb. קובץ ה-YAML הבא כולל את ההערה הזו.

    apiVersion: v1
    kind: Service
    metadata:
      name: my-lb-service
      annotations:
        service.beta.kubernetes.io/aws-load-balancer-type: nlb
    spec:
      type: LoadBalancer
      selector:
        app: products
        department: sales
      ports:
      - protocol: TCP
        port: 60000
        targetPort: 50001
    

    Internal Classic

    יוצרים מאזן עומסים פנימי על ידי הגדרת ההערה service.beta.kubernetes.io/aws-load-balancer-internal לערך "true". קובץ ה-YAML הבא כולל את ההערה הזו.

    apiVersion: v1
    kind: Service
    metadata:
      name: my-lb-service
      annotations:
        service.beta.kubernetes.io/aws-load-balancer-internal: "true"
    spec:
      type: LoadBalancer
      selector:
        app: products
        department: sales
      ports:
      - protocol: TCP
        port: 60000
        targetPort: 50001
    

    מאזן עומסים פנימי מסוג NLB

    כדי ליצור NLB פנימי, מגדירים את ההערות הבאות:

    • service.beta.kubernetes.io/aws-load-balancer-internal עד "true"
    • service.beta.kubernetes.io/aws-load-balancer-type עד nlb

    קובץ ה-YAML הבא כולל את שתי ההערות.

    apiVersion: v1
    kind: Service
    metadata:
      name: my-lb-service
      annotations:
        service.beta.kubernetes.io/aws-load-balancer-internal: "true"
        service.beta.kubernetes.io/aws-load-balancer-type: nlb
    spec:
      type: LoadBalancer
      selector:
        app: products
        department: sales
      ports:
      - protocol: TCP
        port: 60000
        targetPort: 50001
    
  6. יוצרים את השירות באמצעות kubectl apply:

    kubectl apply -f my-lb-service.yaml
    
  7. אפשר לראות את כתובת השירות של kubectl get service.

    kubectl get service my-lb-service
    

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

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

    curl http://EXTERNAL_IP:60000
    

    מחליפים את EXTERNAL_IP בכתובת מהעמודה EXTERNAL-IP בשלב הקודם.

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

```none
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

השלבים הבאים