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

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

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

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

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

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

‫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

השלבים הבאים