בדף הזה מוסבר איך להגדיר מאזן עומסים ברמה 4 עם נקודת קצה של AWS Elastic Load Balancer (ELB) או מאזן עומסי רשת (NLB).
מידע נוסף על סוגים אחרים של מאזני עומסים שאפשר להשתמש בהם עם GKE ב-AWS זמין במאמר סקירה כללית על מאזני עומסים.
הדף הזה מיועד למומחי רשת שרוצים להתקין ציוד רשת, להגדיר אותו ולתת לו תמיכה. מידע נוסף על תפקידים נפוצים ומשימות לדוגמה שאנחנו מתייחסים אליהם בתוכן של Google Cloud זמין במאמר תפקידים נפוצים של משתמשים ומשימות ב-GKE.
לפני שמתחילים
- יוצרים אשכול ומגדירים את
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: 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יוצרים את השירות באמצעות
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 חשיפת אפליקציות באמצעות שירותים.