איזון עומסים ברשת
במאמר הזה נסביר איך להגדיר מאזן עומסים (LB) ברמה 4 שנתמך על ידי מאזן עומסים רגיל של Azure באמצעות GKE on 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