איזון עומסים ברשת
במאמר הזה מוסבר איך להגדיר מאזן עומסים (LB) ברמה 4 שנתמך על ידי מאזן עומסים רגיל של Azure באמצעות GKE ב-Azure .
כשיוצרים שירות מסוג LoadBalancer, בקר GKE ב-Azure מגדיר מאזן עומסים של Azure.
לפני שמתחילים
- צריך ליצור אשכול ולהגדיר את
kubectlכדי לגשת לאשכול.
בחירה של מאזן עומסים ציבורי או פרטי
מאזני עומסים של שירותים יכולים להיות ציבוריים – עם כתובות IP ציבוריות בקצה הקדמי – או פנימיים – עם גישה רק דרך כתובות IP פרטיות.
כברירת מחדל, שירות חדש הוא ציבורי. כדי ליצור מאזן עומסים פנימי, מגדירים את ההערה service.beta.kubernetes.io/azure-load-balancer-internal
לערך "true" במניפסט.
בחירת רשת משנה למאזני עומסים פנימיים
כשיוצרים מאזן עומסים פנימי, מערכת GKE on Azure צריכה לבחור את תת-הרשת שבה ימוקם מאזן העומסים. רשת המשנה של איזון העומסים של שירות ברירת המחדל נבחרת מפרמטרים של יצירת האשכול באופן הבא:
- אם השדה
cluster.networking.serviceLoadBalancerSubnetIdמצוין והוא לא ריק, - אחרת,
cluster.controlPlane.subnetId
אפשר גם לציין את רשת המשנה שבה רוצים להשתמש עבור מאזן עומסים מסוים על ידי הוספת ההערה service.beta.kubernetes.io/azure-load-balancer-internal-subnet לשירות. הערך של ההערה הזו הוא שם רשת המשנה.
יצירת 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:kubectl apply -f my-deployment-50001.yamlמוודאים ששלושה פודים פועלים:
kubectl get pods --selector=app=productsיוצרים שירות מסוג
LoadBalancerלפריסה. אתם יכולים ליצור מאזן עומסים רגיל של Azure שהוא ציבורי או פנימי. בוחרים אחת מהאפשרויות הבאות.מעתיקים את אחד הקובצי המניפסט הבאים לקובץ בשם
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פנימי
יוצרים מאזן עומסים פנימי על ידי הגדרת ההערה
service.beta.kubernetes.io/azure-load-balancer-internalלערך"true". קובץ ה-YAML הבא כולל את ההערה הזו.yaml apiVersion: v1 kind: Service metadata: name: my-lb-service annotations: service.beta.kubernetes.io/azure-load-balancer-internal: "true" 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. מחליפים את external-ip בכתובת מהפלט שלkubectl get serviceמהשלב הקודם.curl http://external-ip:60000הפלט אמור להיראות כך:
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