Google עוקבת מרחוק אחרי החומרה של Google Distributed Cloud במודל מחובר ומבצעת בה תחזוקה. לצורך הזה, למהנדסי Google יש גישה Secure Shell (SSH) לחומרה של Distributed Cloud במודל מחובר. אם Google מזהה בעיה, מהנדס של Google יפנה אליכם כדי לפתור אותה. אם זיהיתם בעיה בעצמכם, פנו מיד לתמיכה של Google כדי לאבחן אותה ולפתור אותה.
קישוריות של מכונות שמחוברות ל-Distributed Cloud
בקטע הזה מוסבר איך לבדוק את החיבור לאינטרנט ואת הקישוריות של המכונות המחוברות ל-Distributed Cloud באמצעות התכונה 'סייר המדדים' ב-Cloud Monitoring. Google Cloud
בנוהל הזה נעשה שימוש במדדי Monitoring הבאים:
Machine Connected (
/machine/connected): מציין אם המכונה מחוברת ל- Google Cloud.קישוריות רשת (
/machine/network/connectivity): מציין אם לממשק הרשת הראשי של המחשב יש קישוריות לאינטרנט.
כדי להשלים את השלבים בקטע הזה, אתם צריכים לעמוד בדרישות המוקדמות הבאות:
- גישה למסוף Google Cloud ולפרויקט המקושר שלכם ב-Distributed Cloud. Google Cloud
- תפקיד ה-IAM Monitoring Viewer, שמאפשר לכם לצפות במדדים של Monitoring.
- (אופציונלי) ערך
machine_idשל המכונה המחוברת ל-Distributed Cloud, לסינון התוצאות שמוחזרות.
שימוש ב-Metrics Explorer כדי לאמת את הקישוריות של המכונה
עוברים אל Metrics Explorer:
במסוף Google Cloud , עוברים לקטע Monitoring.
בעץ הניווט שבצד ימין, לוחצים על Metrics Explorer (הכלי לבחירת מדדים).
בוחרים את סוג משאב היעד:
בדף Metrics Explorer, עוברים לדף Queries.
משתמשים בסרגל החיפוש כדי לחפש את סוג המשאב Machine. אפשר גם להשתמש במזהה המשאב המלא
edgecontainer.googleapis.com/Machine.בתוצאות שמוחזרות, לוחצים על סוג המשאב Machine.
מאמתים את החיבור של המחשב אל Google Cloud:
בקטע Metric, מחפשים את הערך
connected.בוחרים במדד Machine Connected (מכונה מחוברת). הנתיב המלא שלה הוא
edgecontainer.googleapis.com/machine/connected.(אופציונלי) אפשר לסנן לפי ערך היעד
machine_idבאמצעות הקטע Filter.בתרשים הזמן שמופיע, מוודאים שהקו תקין נשאר רציף ב-100%. אם בשלב כלשהו הערך הזה הוא 0% או Unhealthy, המחשב איבד את הקישוריות ל- Google Cloud בזמן שצוין.
מאמתים את החיבור של המכונה לאינטרנט:
בקטע Metric, מחפשים את הערך
connectivity.בוחרים במדד קישוריות לרשת. הנתיב המלא שלה הוא
edgecontainer.googleapis.com/machine/network/connectivity.(אופציונלי) אפשר לסנן לפי ערך היעד
machine_idבאמצעות הקטע Filter.בתרשים הזמן שמופיע, מוודאים שהקו תקין נשאר רציף ב-100%. אם בשלב כלשהו הערך הזה הוא 0% לא תקין, המשמעות היא שהמחשב איבד את הקישוריות לאינטרנט בזמן שצוין.
הסבר על תוצאות האימות
בטבלה הבאה מוסברות התוצאות שמוחזרות ב-Metrics Explorer.
| מצב המכונה | אבחון | רזולוציה |
|---|---|---|
| תקין הערך של המדד 'המחשב מחובר' הוא 1הערך של המדד 'קישוריות לרשת' הוא 1 |
פעולה רגילה. | אין. |
| מנותק הערך של המדד 'המחשב מחובר' הוא 0הערך של המדד 'קישוריות לרשת' הוא 1 |
למחשב יש חיבור לאינטרנט, אבל הוא לא יכול להתחבר אל Google Cloud. | בודקים את [כללי חומת האש](distributed-cloud/connected/1.11.0/docs/requirements#connected_management_and_monitoring_traffic) עבור שירותי Google ונקודות קצה של API. מוודאים שהסוכנים המחוברים של Distributed Cloud פועלים במחשב. |
| מבודד הערך של המדד 'המחשב מחובר' הוא 0הערך של המדד 'קישוריות לרשת' הוא 0 |
למכונה אין קישוריות לאינטרנט. | בודקים את כבל החשמל ואת כבל הרשת, את ההגדרה של הרשת המקומית ואת סטטוס ה-LED של המכונה. מאמתים את ההגדרות של ה-VLAN והניתוב. |
| לסירוגין הערך של המדד 'המכונה מחוברת' משתנה לסירוגין בין 0 ל-1הערך של המדד 'קישוריות לרשת' משתנה לסירוגין בין 0 ל-1 |
חיבור לא יציב לרשת, אובדן מנות או זמן אחזור מוגזם. | בודקים אם יש עומס ברשת המקומית או חומרה פגומה. |
אם אתם מבחינים בערכים קבועים של 0 באחד מהמדדים, צריך לפעול לפי השלבים לפתרון בעיות שמתוארים בטבלה כדי לפתור אותן. אם הבעיה נמשכת, אפשר לפנות לתמיכה של Google ולציין את ערך machine_id של המחשב המושפע ואת חותמת הזמן של ההפסקה.
פגיעה בסשנים של BGP במשאבי Cloud Router שמשמשים לחיבורי VPN
חיבורי VPN ב-Distributed Cloud מסתמכים על סשנים של BGP שנוצרו ומנוהלים על ידי משאבי Cloud Router המתאימים, כדי לפרסם מסלולים בין אשכול מחובר ב-Distributed Cloud לבין Google Cloud. אם משנים את ההגדרה של משאב Cloud Router שמשויך לחיבור VPN של Distributed Cloud, יכול להיות שהחיבור יפסיק לפעול.
כדי לשחזר את ההגדרה הפגומה של סשן BGP ב-Cloud Router המושפע, מבצעים את השלבים הבאים:
במסוף Google Cloud , מאתרים את השם של סשן ה-BGP הפגום. לדוגמה:
INTERFACE=anthos-mcc-34987234מקבלים את כתובות ה-IP של BGP של ה-Cloud Router ושל BGP של הנתב השכן עבור סשן BGP פגום, וגם את ה-ASN של הנתב השכן שמשמש לחיבור VPN ב-Distributed Cloud שמושפע מהבעיה. לדוגמה:
GDCE_BGP_IP=168.254.208.74 CLOUD_ROUTER_BGP_IP=168.254.208.73 PEER_ASN=65506אם מחקתם את סשן ה-BGP, תוכלו לקבל את המידע הזה מאשכול מחובר של Distributed Cloud:
מקבלים את פרטי הכניסה לאשכול:
gcloud edge-cloud container clusters get-credentials CLUSTER_ID \ --location REGION \ --project PROJECT_ID
מחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_ID: השם של אשכול היעד. -
REGION: Google Cloud האזור שבו נוצר אשכול היעד. -
PROJECT_ID: המזהה של Google Cloud פרויקט היעד.
-
אחזור ההגדרה של משאב
MultiClusterConnectivityConfig:kubectl get multiclusterconnectivityconfig -A
הפקודה מחזירה פלט שדומה לזה:
NAMESPACE NAME LOCAL ASN PEER ASN kube-system MultiClusterConfig1 65505 65506 ```מקבלים את כתובת ה-IP של ה-BGP של הרשת השכנה, את כתובת ה-IP של Cloud Router ואת מספר ה-ASN של סשן ה-BGP:
kubectl describe multiclusterconnectivityconfig -n kube-system MCC_CONFIG_NAME
מחליפים את
MCC_CONFIG_NAMEבשם שלMultiClusterConfigResourceשהתקבל בשלב הקודם.הפקודה מחזירה פלט שדומה לזה:
Spec: Asns: Peer: 65505 Self: 65506 # GDCE ASN Tunnels: Ike Key: Name: MCC_CONFIG_NAME-0 Namespace: kube-system Peer: Bgp IP: 169.254.208.73 # Cloud Router BGP IP Private IP: 34.157.98.148 Public IP: 34.157.98.148 Self: Bgp IP: 169.254.208.74 # GDCE BGP IP Private IP: 10.100.29.49 Public IP: 208.117.254.68 ```
במסוף Google Cloud , מאתרים את השם, האזור וGoogle Cloud שם הפרויקט של מנהרת ה-VPN הפגומה. לדוגמה:
VPN_TUNNEL=VPNTunnel1 REGION=US-East1 VPC_PROJECT_ID=VPC-Project-1מוחקים את סשן ה-BGP הפגום מההגדרה של Cloud Router.
יוצרים ממשק חדש של Cloud Router:
gcloud compute routers add-interface --interface-name=INTERFACE_NAME \ --vpn-tunnel=TUNNEL_NAME \ --ip-address=ROUTER_BGP_IP \ --project=VPC_PROJECT_ID \ --region=REGION \ --mask-length=30
מחליפים את מה שכתוב בשדות הבאים:
-
INTERFACE_NAME: שם תיאורי שמזהה באופן ייחודי את הממשק הזה. -
TUNNEL_NAME: השם של מנהרת ה-VPN שקיבלתם בשלב הקודם. -
ROUTER_BGP_IP: כתובת ה-IP של BGP של Cloud Router שקיבלתם קודם בהליך הזה. -
VPC_PROJECT_ID: מזהה הפרויקט של ה-VPCGoogle Cloud שמשמש כיעד. -
REGION: האזור שבו נוצר פרויקט ה-VPC Google Cloud של היעד. Google Cloud
-
יוצרים את הקישור בין רשתות שכנות באמצעות BGP:
gcloud compute routers add-bgp-peer --interface=INTERFACE_NAME \ --peer-name=TUNNEL_NAME \ --region REGION \ --project=VPC_PROJECT_ID \ --peer-ip-address=GDCE_BGP_IP \ --peer-asn=GDCE_BGP_ASN \ --advertised-route-priority=100 \ --advertisement-mode=DEFAULT
מחליפים את מה שכתוב בשדות הבאים:
-
INTERFACE_NAME: השם של הממשק שיצרתם בשלב הקודם. -
TUNNEL_NAME: השם של מנהרת ה-VPN שבה השתמשתם כדי ליצור את הממשק בשלב הקודם. -
REGION: האזור שבו נוצר פרויקט ה-VPC Google Cloud של היעד. Google Cloud -
VPC_PROJECT_ID: מזהה הפרויקט של ה-VPCGoogle Cloud שמשמש כיעד. -
GDCE_BGP_IP: כתובת ה-IP של BGP עמית ב-Distributed Cloud שקיבלתם קודם בהליך הזה. -
GDCE_BGP_ASN: מספר מערכת אוטונומית (ASN) של BGP עמית ב-Distributed Cloud, שקיבלתם קודם בהליך הזה.
-
בשלב הזה, סשן ה-BGP חוזר להיות פעיל.
מכונות וירטואליות תקועות במצב Pending
עומס עבודה של מכונה וירטואלית יכול להיתקע במצב Pending ולא להתווסף לתזמון בצומת אם קורה אחד מהדברים הבאים:
- מערכת Distributed Cloud Connected לא יכולה להקצות למכונה הווירטואלית את המשאבים המבוקשים, כמו זמן מעבד, זיכרון או שטח דיסק.
- יש תקלה בהגדרת המכונה הווירטואלית.
- יש תקלה באחסון של המכונה הווירטואלית.
- צומת היעד מזוהמת.
כדי לפתור את הבעיה:
מקבלים את פרטי הכניסה לאשכול כמו שמתואר במאמר קבלת פרטי כניסה לאשכול.
קבלת מידע על המכונה הווירטואלית שהושפעה:
kubectl describe virtualmachine VM_NAME -n NAMESPACE
מחליפים את מה שכתוב בשדות הבאים:
-
VM_NAME: השם של המכונה הווירטואלית של היעד. -
NAMESPACE: מרחב השמות של המכונה הווירטואלית של היעד.
הפקודה מחזירה פלט שדומה לזה:
Status: ... State: Pending ... Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal SuccessfulCreate 15m virtualmachine-controller Created virtual machine my-stuck-vm Warning DiskProvisioningFailed 14m virtualmachine-controller Failed to provision disk: DataVolume my-stuck-vm-data-disk not ready Warning PVCNotBound 14m virtualmachine-controller PersistentVolumeClaim my-stuck-vm-data-disk is in phase Pending Warning VMINotCreated 10m virtualmachine-controller VirtualMachineInstance cannot be created: dependencies not readyהפלט של הפקודה מכיל הודעות שעשויות להצביע על מגבלות משאבים, כשלים בתזמון, תקלות באחסון ובעיות אחרות.
-
בודקים את הפלט כדי לזהות את הסיבות לכישלון בתזמון, כמו שמוסבר בקטעים הבאים.
אין מספיק משאבים
יכול להיות שתופיע הודעה שמציינת שאין מספיק משאבים, כמו מעבד, זיכרון או מקום בדיסק. לדוגמה:
5/8 nodes are available: 3 Insufficient memory, 3 Insufficient CPU.
כדי לפתור את הבעיה, צריך לבדוק את המשאבים שהוקצו למכונות הווירטואליות המושפעות ולעומסי עבודה אחרים שמתוזמנים בצומת, ואז לבצע את הפעולות הבאות בהתאם לצרכים העסקיים:
- להקטין את עומסי העבודה האחרים שמתוזמנים בצומת,
- צמצום כמות המשאבים שהוקצו למכונה הווירטואלית המושפעת,
- להוסיף עוד מכונות לאשכול המושפע.
צמתים עם כתמים
יכול להיות שתופיע הודעה שמציינת שהצומת של היעד מוכתם. לדוגמה:
5/8 nodes are available: 3 node(s) had taint {<taint-key>:<taint-value>}, that the pod didn't tolerate.
כדי לפתור את הבעיה, צריך לבצע את הפעולות הבאות:
משתמשים בפקודה הבאה כדי לבדוק אם יש כתמים בצומת:
kubectl get nodes -o custom-columns=NAME:.metadata.name,TAINTS:.spec.taints
הפקודה מחזירה פלט שדומה לזה:
NAME TAINTS node-name-1 [map[effect:PreferNoSchedule key:node-role.kubernetes.io/master] map[effect:PreferNoSchedule key:node-role.kubernetes.io/control-plane]] node-name-2 <none>מבצעים אחת מהפעולות הבאות:
- אם יש כתמים לא צפויים, צריך להסיר אותם כמו שמתואר במאמר Taints and Tolerations.
- אם יש taints צפויים, מוסיפים את ה-tolerations המתאימים להגדרות של המכונה הווירטואלית, כמו שמתואר במאמר Taints and Tolerations.
תקלות באחסון
יכול להיות שתופיע הודעה שמציינת שיש בעיה באחסון של המכונה הווירטואלית. לדוגמה:
5/8 nodes are available: 3 node(s) had volume node affinity conflict, 3 node(s) had unbound immediate PersistentVolumeClaims.
ההודעה הזו עשויה להצביע על כך שנפח האחסון המתאים לא מצליח להתחבר לצומת היעד.
כדי לפתור את הבעיה, צריך לבצע את הפעולות הבאות:
כדי לקבל את הסטטוס של התביעות לנפח אחסון מתמשך (PVC) במרחב השמות של המכונה הווירטואלית המושפעת, משתמשים בפקודה הבאה:
kubectl get pvc -n NAMESPACE
מחליפים את
NAMESPACEבשם של מרחב השמות של היעד.הפקודה מחזירה פלט שדומה לזה:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE windows-robin-disk-0 Bound pvc-b1a1d264-84bf-4e58-857d-f37f629d5082 25Gi RWX robin-block-immediate 30h windows-robin-disk-1 Bound pvc-0130b9a8-7fed-4df0-8226-d79273792a16 25Gi RWX robin-block-immediate 30h windows-robin-vm-0-restored-windows-robin-disk-0 Pending gce-pd-gkebackup-in 26mמוודאים של-PVC המתאים יש סטטוס
Bound. אם הסטטוס הואPending, מערכת המשנה של האחסון לא הצליחה להקצות את נפח האחסון. במקרים כאלה, צריך לפתור את הבעיה בהגדרת מערכת המשנה של האחסון ולוודא שזמיןStorageClassמתאים.