בדף הזה מוסבר איך להגדיר מאזן עומסים L4 עם נקודת קצה של AWS Elastic Load Balancer (ELB) או מאזן עומסי רשת (NLB).
מידע נוסף על סוגים אחרים של מאזני עומסים שאפשר להשתמש בהם עם GKE ב-AWS זמין במאמר סקירה כללית על מאזני עומסים.
הדף הזה מיועד למומחי רשת שרוצים להתקין ציוד רשת, להגדיר אותו ולתת לו תמיכה. מידע נוסף על תפקידים נפוצים ומשימות לדוגמה שאנחנו מתייחסים אליהם בתוכן זמין במאמר תפקידים נפוצים של משתמשים ומשימות ב-GKE. Google Cloud
לפני שמתחילים
- יוצרים אשכול ומגדירים את
kubectlכך שיתחבר אליו. - תיוג של רשתות המשנה של מאזן העומסים של השירות. הערך הזה נדרש לגילוי אוטומטי של רשתות משנה.
- מחליטים אם צריך ELB מסוג Classic או מסוג Network.
- מחליטים אם צריך מאזן עומסים שפונה לאינטרנט או מאזן עומסים פנימי.
בחירת סוג מאזן העומסים
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. בדוגמה הבאה, יוצרים מאזן עומסים לדוגמה.
יוצרים את הפריסה. הקונטיינרים בפריסה הזו מאזינים ליציאה 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"יצירת הפריסה באמצעות
kubectl apply:kubectl apply -f my-deployment-50001.yamlמוודאים ששלושה פודים פועלים:
kubectl get pods --selector=app=productsיוצרים שירות מסוג
LoadBalancerלפריסה.מחליטים איזה סוג של מאזן עומסים צריך:
- 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: 50001Internal 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: 50001NLB פנימי
כדי ליצור 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יוצרים את השירות באמצעות
kubectl apply:kubectl apply -f my-lb-service.yamlאפשר לראות את הכתובת למקרי חירום של השירות ב-
kubectl get service.kubectl get service my-lb-serviceהפלט יכלול עמודה
EXTERNAL-IPעם כתובת של מאזן העומסים (ציבורית או פרטית, בהתאם לאופן שבו מאזן העומסים נוצר).אם יצרתם מאזן עומסים שפונה לאינטרנט, אתם יכולים להתחבר למאזן העומסים באמצעות
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
השלבים הבאים
מידע נוסף על GKE זמין במסמכי העזרה בנושא Google Cloud חשיפת אפליקציות באמצעות שירותים.