1.29: תצוגה מקדימה
1.28: לא זמין
במאמר הזה מוסבר איך להעביר את הגדרות התצורה של השילוב של מאזן העומסים F5 BIG-IP למצב איזון עומסים ידני באשכולות בגרסה 1.29. אם האשכולות שלכם הם בגרסה 1.30 ומעלה, מומלץ לפעול לפי ההוראות במאמר תכנון העברת אשכול לתכונות מומלצות.
שימוש ב-F5 BIG-IP במצב איזון עומסים ידני מאפשר לכם לשדרג את סוכני F5 באופן עצמאי בלי להשפיע על הפונקציונליות של מאזן העומסים של F5 או על שירותי Kubernetes. אם תעברו להגדרה ידנית, תוכלו לקבל עדכונים ישירות מ-F5 כדי להבטיח ביצועים ואבטחה אופטימליים.
ההעברה הזו נדרשת בנסיבות הבאות:
אתם רוצים להפעיל תכונות חדשות כמו Controlplane V2 וגם צריכים גישה ל-F5.
אתם צריכים יכולות שזמינות בגרסה של BIG-IP CIS Container Ingress Services (CIS) Controller שגבוהה מגרסה v1.14.
אם אף אחת מהנסיבות שלמעלה לא רלוונטית לגביכם, תוכלו להמשיך להשתמש בהגדרה החבילה לאיזון עומסים של F5 BIG-IP.
בכל מקרה, אנחנו ממשיכים לתמוך רשמית ב-F5 כפתרון לאיזון עומסים.
תמיכה במאזן העומסים F5 BIG-IP
אנחנו תומכים בשימוש ב-F5 BIG-IP עם סוכני איזון עומסים, שכוללים את שני הבקרים הבאים:
F5 Controller (קידומת ה-pod:
load-balancer-f5): מבצע התאמה בין שירותי Kubernetes מסוגLoadBalancerלבין פורמט F5 Common Controller Core Library (CCCL) ConfigMap.F5 BIG-IP CIS Controller v1.14 (pod prefix:
k8s-bigip-ctlr-deployment): מתרגם ConfigMaps להגדרות של מאזן העומסים F5.
הסוכנים האלה מייעלים את ההגדרה של מאזני עומסים של F5 באשכול Kubernetes. כשיוצרים שירות מסוג LoadBalancer, הבקרים מגדירים באופן אוטומטי את מאזן העומסים F5 להפניית תעבורה לצמתי האשכול.
עם זאת, לפתרון המשולב יש מגבלות:
הגמישות של Service API מוגבלת. אי אפשר להגדיר את בקר BIG-IP איך שרוצים, או להשתמש בתכונות מתקדמות של F5. חברת F5 כבר מספקת תמיכה משופרת ב-Service API באופן מקורי.
ההטמעה משתמשת ב-API של CCCL ConfigMap מדור קודם וב-CIS בגרסה 1.x. עם זאת, חברת F5 מספקת עכשיו את AS3 ConfigMap API החדש יותר ואת 2.x CIS.
הבקר של CIS בחבילת Google Distributed Cloud נשאר בגרסה v1.14 בגלל בעיות תאימות להנחיות השדרוג של F5 ל-CIS v2.x. לכן, כדי לאפשר לכם גמישות בטיפול בנקודות חולשה באבטחה ובגישה לתכונות העדכניות, אנחנו מעבירים את סוכני F5 מלהיות רכיבים בחבילה להתקנה עצמאית. אם תבצעו מיגרציה, תוכלו להמשיך להשתמש בסוכנים הקיימים ללא הפרעה, והשירותים שיצרתם בעבר ימשיכו לפעול.
במקרים של אשכולות חדשים של איזון עומסים ידני עם F5 כפתרון לאיזון עומסים, צריך להתקין את הבקרים באופן עצמאי. באופן דומה, אם האשכול שלכם הועבר מ-F5 בחבילה ואתם רוצים להשתמש בגרסה חדשה יותר של CIS Controller, אתם צריכים להתקין את הבקרים בעצמכם.
דרישות
אלה הדרישות להעברה:
גרסת אשכול האדמין וכל אשכולות המשתמשים צריכה להיות 1.29 ומעלה.
אתם צריכים להשתמש בכתובות IP סטטיות לצמתים של אדמין ושל משתמשים באשכול. סוג כתובת ה-IP מוגדר בשדה
network.ipMode.type, ואי אפשר לשנות אותו. אם השדה הזה מוגדר ל-DHCP, אי אפשר להעביר את האשכולות.
עדכון קובץ התצורה של אשכול המשתמשים
מבצעים את השינויים הבאים בקובץ התצורה של אשכול המשתמשים:
שינוי של
loadBalancer.kindל-"ManualLB".הערכים בשדות
loadBalancer.vips.controlPlaneVIPו-loadBalancer.vips.ingressVIPצריכים להיות זהים.מגדירים את
nodePortשמשמש לתעבורת HTTP שנשלחת ל-VIP של הכניסה.קבלת הערך הנוכחי של
nodePortב-HTTP:kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \ get svc istio-ingress -n gke-system -oyaml | grep http2 -A 1מחליפים את
USER_CLUSTER_KUBECONFIGבנתיב של קובץ ה-kubeconfig של אשכול המשתמשים.מוסיפים את הערך מהפקודה הקודמת לשדה
loadBalancer.manualLB.ingressHTTPNodePort, לדוגמה:loadBalancer: manualLB: ingressHTTPNodePort: 30243
מגדירים את
nodePortשמשמש לתעבורת HTTPS שנשלחת ל-VIP של Ingress:קבלת הערך הנוכחי של HTTPS
nodePort:kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \ get svc istio-ingress -n gke-system -oyaml | grep https -A 1מוסיפים את הערך מהפקודה הקודמת לשדה
loadBalancer.manualLB.ingressHTTPSNodePort, לדוגמה:loadBalancer: manualLB: ingressHTTPSNodePort: 30879
הגדרת
nodePortלשרת Kubernetes API:מקבלים את הערך הנוכחי של
nodePortעבור שרת ה-API של Kubernetes:kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ get svc kube-apiserver -n USER_CLUSTER_NAME -oyaml | grep kube-apiserver-port -A 1מחליפים את מה שכתוב בשדות הבאים:
ADMIN_CLUSTER_KUBECONFIGעם הנתיב של קובץ ה-kubeconfig של אשכול הניהול.
USER_CLUSTER_NAME: שם אשכול המשתמשים.
מוסיפים את הערך מהפקודה הקודמת לשדה
loadBalancer.manualLB.controlPlaneNodePort, לדוגמה:loadBalancer: manualLB: controlPlaneNodePort: 30968
מגדירים את
nodePortלשרת הקישוריות:כדי לקבל את הערך הנוכחי של
nodePortעבור שרת הקישוריות:kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ get svc kube-apiserver -n USER_CLUSTER_NAME -oyaml | grep konnectivity-server-port -A 1מוסיפים את הערך מהפקודה הקודמת לשדה
loadBalancer.manualLB.konnectivityServerNodePort, לדוגמה:loadBalancer: manualLB: konnectivityServerNodePort: 30563
מוחקים את כל הקטע
loadBalancer.f5BigIP.
עדכון אשכול המשתמשים
מריצים את הפקודה הבאה כדי להעביר את האשכול:
gkectl update cluster \
--kubeconfig ADMIN_CLUSTER_KUBECONFIG \
--config USER_CLUSTER_CONFIGמחליפים את מה שכתוב בשדות הבאים:
ADMIN_CLUSTER_KUBECONFIG: הנתיב לקובץ kubeconfig של אשכול האדמין.
USER_CLUSTER_CONFIG: הנתיב של קובץ התצורה של אשכול המשתמשים.
עדכון קובץ ההגדרה של אשכול הניהול
מבצעים את השינויים הבאים בקובץ התצורה של אשכול האדמין:
שינוי של
loadBalancer.kindל-"ManualLB".משאירים את אותו הערך בשדה
loadBalancer.vips.controlPlaneVIP.בודקים את הערך של השדה
adminMaster.replicas. אם הערך הוא 3, אשכול האדמין הוא בעל זמינות גבוהה (HA). אם הערך הוא 1, אשכול האדמין הוא לא HA.מבצעים את השלבים הבאים רק עבור אשכולות אדמין שאינם HA:
מקבלים את הערך של
nodePortעבור שרת ה-API של Kubernetes:kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ get svc kube-apiserver -n kube-system -oyaml | grep nodePortמחליפים את
ADMIN_CLUSTER_KUBECONFIGבנתיב של קובץ ה-kubeconfig של אשכול האדמין.מוסיפים את הערך מהפקודה הקודמת לשדה
loadBalancer.manualLB.controlPlaneNodePort, לדוגמה:loadBalancer: manualLB: controlPlaneNodePort: 30968
מריצים את הפקודה הבאה כדי לראות אם יש תוספים
nodePort:kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ get deploy monitoring-operator -n kube-system -oyaml | grep admin-ingress-nodeportאם הפלט של הפקודה הקודמת הוא ערך, מוסיפים אותו לשדה
loadBalancer.manualLB.addonsNodePort, לדוגמה:loadBalancer: manualLB: addonsNodePort: 31405מוחקים את כל הקטע
loadBalancer.f5BigIP.
עדכון אשכול האדמין
מריצים את הפקודה הבאה כדי לעדכן את האשכול:
gkectl update admin \
--kubeconfig ADMIN_CLUSTER_KUBECONFIG \
--config ADMIN_CLUSTER_CONFIGמחליפים את מה שכתוב בשדות הבאים:
ADMIN_CLUSTER_KUBECONFIG: הנתיב לקובץ kubeconfig של אשכול האדמין.
ADMIN_CLUSTER_CONFIG: הנתיב של קובץ התצורה של אשכול האדמין.
אימות של משאבי F5 מדור קודם
אחרי שמעדכנים את האשכולות לשימוש באיזון עומסים ידני, התנועה לאשכולות לא מופרעת כי משאבי F5 הקיימים עדיין קיימים. אפשר לראות את זה על ידי הפעלת הפקודה הבאה:
kubectl --kubeconfig CLUSTER_KUBECONFIG \ api-resources --verbs=list -o name | xargs -n 1 kubectl --kubeconfig CLUSTER_KUBECONFIG get --show-kind --ignore-not-found --selector=onprem.cluster.gke.io/legacy-f5-resource=true -A
מחליפים את CLUSTER_KUBECONFIG בנתיב של קובץ ה-kubeconfig של אשכול האדמין או של אשכול המשתמש.
הפלט הצפוי אמור להיראות כך:
אשכול אדמין:
Warning: v1 ComponentStatus is deprecated in v1.19+ NAMESPACE NAME TYPE DATA AGE kube-system secret/bigip-login-xt697x Opaque 4 13h NAMESPACE NAME SECRETS AGE kube-system serviceaccount/bigip-ctlr 0 13h kube-system serviceaccount/load-balancer-f5 0 13h NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE kube-system deployment.apps/k8s-bigip-ctlr-deployment 1/1 1 1 13h kube-system deployment.apps/load-balancer-f5 1/1 1 1 13h NAME ROLE AGE clusterrolebinding.rbac.authorization.k8s.io/bigip-ctlr-clusterrole-binding ClusterRole/bigip-ctlr-clusterrole 13h clusterrolebinding.rbac.authorization.k8s.io/load-balancer-f5-clusterrole-binding ClusterRole/load-balancer-f5-clusterrole 13h NAME CREATED AT clusterrole.rbac.authorization.k8s.io/bigip-ctlr-clusterrole 2024-03-25T04:37:34Z clusterrole.rbac.authorization.k8s.io/load-balancer-f5-clusterrole 2024-03-25T04:37:34Z
אשכול משתמשים:
Warning: v1 ComponentStatus is deprecated in v1.19+ NAMESPACE NAME TYPE DATA AGE kube-system secret/bigip-login-sspwrd Opaque 4 14h NAMESPACE NAME SECRETS AGE kube-system serviceaccount/bigip-ctlr 0 14h kube-system serviceaccount/load-balancer-f5 0 14h NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE kube-system deployment.apps/k8s-bigip-ctlr-deployment 1/1 1 1 14h kube-system deployment.apps/load-balancer-f5 1/1 1 1 14h NAME ROLE AGE clusterrolebinding.rbac.authorization.k8s.io/bigip-ctlr-clusterrole-binding ClusterRole/bigip-ctlr-clusterrole 14h clusterrolebinding.rbac.authorization.k8s.io/load-balancer-f5-clusterrole-binding ClusterRole/load-balancer-f5-clusterrole 14h NAME CREATED AT clusterrole.rbac.authorization.k8s.io/bigip-ctlr-clusterrole 2024-03-25T05:16:40Z clusterrole.rbac.authorization.k8s.io/load-balancer-f5-clusterrole 2024-03-25T05:16:41Z
בדיקת מאזן העומסים
אחרי ההעברה, לא צריך לשנות הגדרות במאזן העומסים כי שמרתם על אותם ערכים של כתובות VIP ושל nodePort. בטבלאות הבאות מפורטים המיפויים מכתובות VIP לכתובות IP של צמתים:nodePort.
אשכול אדמין HA
תנועה לצמתי מישור הבקרה
Google Distributed Cloud מטפל אוטומטית באיזון העומסים של תעבורת מישור הבקרה עבור אשכולות אדמין עם זמינות גבוהה. למרות שלא צריך להגדיר מיפוי במאזן העומסים, חובה לציין כתובת IP בשדה loadBalancer.vips.controlPlaneVIP.
תנועה לשירותים בצמתי התוסף
אם באשכול האדמין היה ערך ל-addonsNodePort, אמור להיות מיפוי לכתובות ה-IP ולערך nodePort של התנועה לשירותים בצמתים של התוסף:
- (
addonsVIP:8443) -> (NODE_IP_ADDRESSES:addonsNodePort)
צריך להגדיר את המיפוי הזה לכל הצמתים באשכול הניהול, גם לצמתים של מישור הבקרה וגם לצמתים של התוספים.
אשכול אדמין ללא זמינות גבוהה
תנועה במישור הבקרה
הטבלה הבאה מציגה את המיפוי לכתובת ה-IP ולערך nodePort של צומת מישור הבקרה:
- (
controlPlaneVIP:443) -> (NODE_IP_ADDRESSES:controlPlaneNodePort)
צריך להגדיר את המיפוי הזה לכל הצמתים באשכול האדמין, גם לצומת של מישור הבקרה וגם לצמתים של התוספים.
תנועה לשירותים בצמתי התוסף
אם באשכול האדמין היה ערך ל-addonsNodePort, אמורה להיות לכם המיפוי הבא לכתובות ה-IP ולערכים של nodePort בשירותים שפועלים בצמתי תוספים:
- (
addonsVIP:8443) -> (NODE_IP_ADDRESSES:addonsNodePort)
צריך להגדיר את המיפוי הזה לכל הצמתים באשכול האדמין, גם לצומת של מישור הבקרה וגם לצמתים של התוספים.
אשכול משתמשים
תנועה במישור הבקרה
הטבלה הבאה מציגה את המיפוי לכתובות ה-IP ולערכי nodePort של תנועה במישור הבקרה:
- (
controlPlaneVIP:443) -> (NODE_IP_ADDRESSES:controlPlaneNodePort) - (
controlPlaneVIP:8132) -> (NODE_IP_ADDRESSES:konnectivityServerNodePort)
צריך למפות את כל הצמתים באשכול האדמין, גם את הצמתים של מישור הבקרה של אשכול האדמין וגם את הצמתים של מישור הבקרה של אשכול המשתמשים.
תנועה במישור הנתונים
הטבלה הבאה מציגה את המיפוי לכתובות ה-IP ולערכי nodePort של תנועת מישור הנתונים:
- (
ingressVIP:80) -> (NODE_IP_ADDRESSES:ingressHTTPNodePort) - (
ingressVIP:443) -> (NODE_IP_ADDRESSES:ingressHTTPSNodePort)