במאמר הזה מוסבר איך להגדיר AWS Elastic Load Balancer (ELB) עם GKE ב-AWS.
כשיוצרים שירות מסוג LoadBalancer, בקר GKE ב-AWS מגדיר Classic או Network ELB ב-AWS.
אפשר גם לעיין במדריך לתחילת העבודה כדי ליצור Classic ELB שפונה כלפי חוץ ממסוף Google Cloud , או לעיין במאמר יצירת מאזן עומסים (ALB) של אפליקציות ב-AWS.
לפני שמתחילים
לפני שמתחילים להשתמש ב-GKE on AWS, חשוב לוודא שביצעתם את המשימות הבאות:
- ממלאים את הדרישות המוקדמות.
- מתקינים שירות ניהול.
- יוצרים אשכול משתמשים.
- בספריית
anthos-aws, משתמשים ב-anthos-gkeכדי להחליף הקשר לאשכול המשתמשים. מחליפים את CLUSTER_NAME בשם אשכול המשתמש.cd anthos-aws env HTTPS_PROXY=http://localhost:8118 \ anthos-gke aws clusters get-credentials CLUSTER_NAME
- כלי שורת הפקודה
curlאו כלי דומה מותקן.
בחירת מאזן עומסים חיצוני או פנימי
GKE on AWS יוצר מאזן עומסים חיצוני (בתת-רשת ציבורית) או פנימי (בתת-רשת פרטית) בהתאם להערה למשאב LoadBalancer.
אם בוחרים מאזן עומסים חיצוני, אפשר לגשת אליו באמצעות כתובות ה-IP שמותרות בקבוצות האבטחה של מאגר הצמתים וברשימות בקרת הגישה (ACL) לרשת של רשת המשנה.
בחירת סוג מאזן עומסים
בוחרים אם רוצים ליצור מאזן עומסים קלאסי (Classic ELB) או מאזן עומסי רשת (NLB). למידע נוסף על ההבדלים בין סוגי מאזני העומסים, אפשר לעיין במאמר Load balancer types (סוגי מאזני עומסים) בתיעוד של AWS.
יצירת LoadBalancer
כדי ליצור מאזן עומסים, יוצרים פריסה וחושפים אותה באמצעות שירות.
יוצרים את הפריסה. הקונטיינרים בפריסה הזו מאזינים ליציאה 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:env HTTPS_PROXY=http://localhost:8118 \ kubectl apply -f my-deployment-50001.yamlמוודאים ששלושה פודים פועלים:
env HTTPS_PROXY=http://localhost:8118 \ kubectl get pods --selector=app=productsיוצרים שירות מסוג
LoadBalancerלפריסה. אפשר ליצור Classic ELB או Network ELB ברשת המשנה הציבורית או הפרטית. צריך לבחור אחת מהאפשרויות האלה:- Classic ELB בתת-רשת ציבורית
- מאזן עומסים ברשת המשנה הציבורית
- Classic ELB בתת-רשת פרטית
- מאזן עומסים ברשת המשנה הפרטית
לאחר מכן, מעתיקים את המניפסט הבא לקובץ בשם
my-lb-service.yaml.Classic Public
apiVersion: v1 kind: Service metadata: name: my-lb-service spec: type: LoadBalancer selector: app: products department: sales ports: - protocol: TCP port: 60000 targetPort: 50001NLB Public
כדי ליצור 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: 50001Classic Private
יוצרים LoadBalancer פרטי על ידי הגדרת ההערה
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 Private
כדי ליצור 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:env HTTPS_PROXY=http://localhost:8118 \ kubectl apply -f my-lb-service.yamlמציגים את שם המארח של השירות באמצעות
kubectl get service.env HTTPS_PROXY=http://localhost:8118 \ kubectl get service my-lb-service \ --output jsonpath="{.status.loadBalancer.ingress..hostname}{'\n'}"הפלט אמור להיראות כך:
elb-id.elb.aws-region.amazonaws.comאם יצרתם מאזן עומסים שפונה החוצה ויש לכם גישה לרשת המשנה הציבורית של ה-VPC, אתם יכולים להתחבר למאזן העומסים באמצעות
curl. מחליפים את external-ip בכתובת ה-IP מהפלט שלkubectl get serviceמהשלב הקודם.curl external-ip:60000הפלט אמור להיראות כך:
Hello, world! Version: 2.0.0 Hostname: my-deployment-50001-84b6dc5555-zmk7q
סידור וארגון
כדי להסיר את השירות ואת הפריסה, משתמשים ב-kubectl delete.
env HTTPS_PROXY=http://localhost:8118 \
kubectl delete -f my-lb-service.yaml
env HTTPS_PROXY=http://localhost:8118 \
kubectl delete -f my-deployment-50001.yaml
פתרון בעיות
אם אין לכם גישה לנקודת קצה של מאזן עומסים, נסו לתייג את רשתות המשנה.
המאמרים הבאים
כדי ליצור Classic ELB שפונה כלפי חוץ ממסוף Google Cloud , פועלים לפי המדריך למתחילים.
אפשר לקרוא את המאמר חשיפת אפליקציות באמצעות שירותים במסמכי העזרה של GKE on Google Cloud .