איפוס של צומת שנכשל ב-Google Distributed Cloud

כשצמתים ב-Google Distributed Cloud נכשלים, מה שיכול לקרות בגלל בעיות באחסון, ברשת או בטעות בהגדרת מערכת ההפעלה, כדאי לשחזר ביעילות את תקינות האשכול. אחרי שמשחזרים את תקינות האשכול, אפשר לפתור את הבעיה של כשל הצומת. במאמר הזה מוסבר איך להתאושש מתרחישים של כשל בצומת על ידי איפוס צומת, והסרה כפויה של הצומת אם צריך.

אם רוצים להוסיף או להסיר צמתים מאשכול כשאף צומת לא נכשל, אפשר לעיין במאמר בנושא עדכון אשכולות.

איפוס הצמתים

אם הצמתים ב-Google Distributed Cloud נכשלים בגלל תקלות בחומרה, פגיעה בדיסק או בעיות במערכת ההפעלה, צריך לשחזר את תקינות האשכול לפני שמנסים לפתור את הבעיות במכונה הבסיסית.

ארכיטקטורה של שחזור צמתים

צמתים פיזיים ב-Google Distributed Cloud מתוכננים כיחידות תשתית חד-פעמיות. אם מערכת ההפעלה של צומת כלשהו פגומה, צריך להסיר את הצומת מהאשכול בצורה נקייה, להתקין מחדש מערכת הפעלה בסיסית חדשה של Linux ולהוסיף מחדש את הצומת לאשכול.

אל תנסו לשחזר צומת מגיבוי של תמונת מערכת הפעלה ברמת המארח או מקובץ snapshot של דיסק. שחזור של צומת ממצב קודם של מערכת ההפעלה משחית את ההסכמה של Raft בצמתים של מישור הבקרה, וגורם להתנגשויות של כתובות IP ב-Dataplane V2 בצמתים של העובדים. מידע נוסף על מגבלות בנושא גיבוי ותוכנית התאוששות מאסון (DR) זמין במאמר גיבוי ושחזור של אשכולות באמצעות bmctl.

אם הצומת לא נגיש, לפעמים אי אפשר להריץ פקודות איפוס בצמתים כשיש כשל בצומת. יכול להיות שתצטרכו להסיר את הצומת מהאשכול בכוח.

כשמאפסים צומת ומעדכנים את האשכול, הפעולות הבאות מתבצעות:

  1. הצומת מאופס, בדומה ל-kubeadm reset, והמכונה חוזרת למצב שלפני ההתקנה.
  2. ההפניות הקשורות לצומת מוסרות ממאגר הצמתים וממשאבי ה-Custom של האשכול.

בחלק מהפקודות הבאות bmctl לאיפוס צמתים, הפרמטר --force מציין אם צריך לדלג על פקודות האיפוס (שלב 1). אם משתמשים בפרמטר --force, הפקודה bmctl מבצעת רק את שלב ההסרה (שלב 2) ולא מריצה את פקודות האיפוס.

הסרת צומת עובד

כדי להסיר צומת עובד מאשכול, פועלים לפי השלבים הבאים:

  1. נסו לאפס את הצומת בצורה נקייה. אחרי איפוס הצומת, הצומת מוסר מהאשכול:

    bmctl reset nodes \
        --addresses COMMA_SEPARATED_IPS \
        --cluster CLUSTER_NAME \
        --kubeconfig ADMIN_KUBECONFIG
    

    מחליפים את מה שכתוב בשדות הבאים:

    • COMMA_SEPARATED_IP: כתובות ה-IP של הצמתים שרוצים לאפס, למשל 10.200.0.8,10.200.0.9.
    • CLUSTER_NAME: השם של אשכול היעד שמכיל את הצמתים שנכשלו.
    • ADMIN_KUBECONFIG: הנתיב לקובץ kubeconfig של אשכול האדמין.

    אם הפקודה הזו מצליחה, אפשר לאבחן את הצומת ולתקן את כל הטעויות בהגדרות שגרמו לכשל הראשוני. מדלגים על השלבים הנותרים בקטע הזה.

  2. אם השלב הקודם לאיפוס הצומת נכשל, מסירים את הצומת מהאשכול בכוח. ההסרה הכפויה הזו מדלגת על השלב הקודם שבו מופעלות פקודות האיפוס, ומבצעת רק את השלב של הסרת ההפניות שקשורות לצומת ממאגר הצמתים וממשאבי ה-Custom של האשכול:

    bmctl reset nodes \
        --addresses COMMA_SEPARATED_IPS \
        --cluster CLUSTER_NAME \
        --kubeconfig ADMIN_KUBECONFIG \
        --force
    

    עכשיו אפשר לאבחן את הצומת ולתקן את כל ההגדרות השגויות שגרמו לכישלון הראשוני.

  3. אם הסרתם את הצומת בכוח מאשכול הצמתים בשלב הקודם, מריצים שוב את הפקודה bmctl reset כדי לאפס את הצמתים:

    bmctl reset nodes \
        --addresses COMMA_SEPARATED_IPS \
        --cluster CLUSTER_NAME \
        --kubeconfig ADMIN_KUBECONFIG
    

אם מערכת ההפעלה הבסיסית במחשב פגומה או שלא ניתן לשחזר אותה:

  1. מחיקה של כונני האחסון המקומיים במכונה.
  2. מתקינים מערכת הפעלה חדשה של Linux שנתמכת ומגדירים את התנאים המוקדמים של הצומת שמתוארים במאמרים דרישות להגדרת מערכת ההפעלה ותנאים מוקדמים לתחנת עבודה ולצומת.
  3. כדי להוסיף מחדש את הצומת התקין לאשכול, פועלים לפי ההוראות במאמר עדכון אשכולות.

הסרה של צומת יחיד במישור הבקרה

התהליך זהה לזה של צמתי עובד. בצמתים של מישור הבקרה, bmctl מתבצעת גם ניקוי של החברות ב-etcd.

אחרי שמסירים את הצומת שנכשל, האשכול מפסיק להיות במצב של זמינות גבוהה (HA). כדי לחזור למצב HA, מוסיפים צומת תקין לאשכול.

כדי להסיר צומת מאשכול, פועלים לפי השלבים הבאים:

  1. נסו לאפס את הצומת בצורה נקייה. אחרי איפוס הצומת, הצומת מוסר מהאשכול:

    bmctl reset nodes \
        --addresses COMMA_SEPARATED_IPS \
        --cluster CLUSTER_NAME \
        --kubeconfig ADMIN_KUBECONFIG
    

    מחליפים את הערכים הבאים:

    • COMMA_SEPARATED_IP: כתובות ה-IP של הצמתים שרוצים לאפס, למשל 10.200.0.8,10.200.0.9.
    • CLUSTER_NAME: השם של אשכול היעד שמכיל את הצמתים שנכשלו.
    • ADMIN_KUBECONFIG: הנתיב לקובץ kubeconfig של אשכול האדמין.

    אם הפקודה הזו מצליחה, אפשר לאבחן את הצומת ולתקן את כל הטעויות בהגדרות שגרמו לכשל הראשוני. מדלגים על השלבים הנותרים בקטע הזה.

  2. אם השלב הקודם לאיפוס הצומת נכשל, אפשר להסיר את הצומת מהאשכול בכוח. ההסרה הכפויה הזו מדלגת על השלב הקודם שבו מופעלות פקודות האיפוס, ומבצעת רק את השלב של הסרת ההפניות הקשורות לצומת ממאגר הצמתים וממשאבי ההתאמה האישית של האשכול:

    bmctl reset nodes \
      --addresses COMMA_SEPARATED_IPS \
      --cluster CLUSTER_NAME \
      --kubeconfig ADMIN_KUBECONFIG \
      --force
    

    עכשיו אפשר לאבחן את הצומת ולתקן את כל הטעויות בהגדרות שגרמו לכישלון הראשוני.

  3. אם הסרתם את הצומת בכוח מאשכול הצמתים בשלב הקודם, מריצים שוב את הפקודה bmctl reset כדי לאפס את הצמתים:

    bmctl reset nodes \
      --addresses COMMA_SEPARATED_IPS \
      --cluster CLUSTER_NAME \
      --kubeconfig ADMIN_KUBECONFIG
    

אם מערכת ההפעלה הבסיסית במחשב פגומה או שלא ניתן לשחזר אותה:

  1. מחיקה של כונני האחסון המקומיים במכונה.
  2. מתקינים מערכת הפעלה חדשה של Linux שנתמכת ומגדירים את התנאים המוקדמים של הצומת שמתוארים במאמרים דרישות להגדרת מערכת הפעלה ותנאים מוקדמים לתחנת עבודה ולצומת.
  3. כדי להוסיף מחדש את הצומת התקין לאשכול, פועלים לפי ההוראות במאמר עדכון אשכולות.

איפוס צומת כשאין גישה למישור הבקרה

אתם יכולים להריץ את הפקודה הבאה כדי להחזיר מכונה למצבים שלפני ההתקנה, אם אין גישה למישור הבקרה של האשכול:

bmctl reset nodes \
    --addresses NODE_IP_ADDRESSES \
    --ssh-private-key-path SSH_PRIVATE_KEY_PATH \
    --login-user LOGIN_USER \
    --gcr-service-account-key AR_SERVICE_ACCOUNT_KEY

מחליפים את מה שכתוב בשדות הבאים:

  • NODE_IP_ADDRESSES: רשימה מופרדת בפסיקים של כתובות IP של צמתים, אחת לכל צומת שאתם מאפסים.

  • SSH_PRIVATE_KEY_PATH: הנתיב לקובץ של מפתח ה-SSH הפרטי.

  • LOGIN_USER: שם המשתמש שמשמש לגישת SUDO ללא סיסמה למכונות הצמתים. אלא אם מציינים במפורש שם משתמש שאינו root לגישה לצומת בהגדרת האשכול (nodeAccess.loginUser), נעשה שימוש ב-root.

  • AR_SERVICE_ACCOUNT_KEY: הנתיב של קובץ מפתח ה-JSON של חשבון השירות של Artifact Registry.

הפקודה הזו לא מסירה הפניות לצומת ממאגר הצמתים וממשאבי המותאמים אישית של האשכול. אחרי שמשחזרים את הגישה למישור הבקרה של האשכול, צריך להסיר את הצומת מהאשכול בכוח אם רוצים לשמור את האשכול.

הקוורום אבד במישור הבקרה של HA

אם יותר מדי צמתים של רמת הבקרה באשכול HA נכנסים למצב של כשל, האשכול מאבד את הקוורום שלו והופך ללא זמין.

כשצריך לשחזר אשכולות ניהול, לא מציינים את kubeconfig הקובץ בפקודות האיפוס. אם מספקים את קובץ kubeconfig עבור אשכול ניהול, הפעולה הזו מאלצת אשכול חדש לבצע את פעולת האיפוס. כשמשחזרים אשכול משתמשים, צריך לציין את הנתיב לקובץ kubeconfig.

  1. כדי לשחזר אשכול שאיבד את הקוורום, מריצים את הפקודה הבאה בצומת תקין שנותר:

    bmctl restore --control-plane-node CONTROL_PLANE_NODE \
        --cluster CLUSTER_NAME \
        [--kubeconfig KUBECONFIG_FILE]
    

    מחליפים את מה שכתוב בשדות הבאים:

    • CONTROL_PLANE_NODE: כתובות ה-IP של צומת תקין שנשאר חלק מהאשכול.
    • CLUSTER_NAME: השם של אשכול היעד שמכיל את הצמתים שנכשלו.
    • KUBECONFIG_FILE: אם משחזרים אשכול משתמשים, הנתיב לקובץ kubeconfig של אשכול המשתמשים.
  2. אחרי שמשחזרים את הצמתים שנכשלו, מריצים את הפקודה bmctl reset כדי לאפס את הצמתים:

    bmctl reset nodes \
       --addresses COMMA_SEPARATED_IPS \
       --cluster CLUSTER_NAME \
       [--kubeconfig KUBECONFIG_FILE]
    

    מחליפים את מה שכתוב בשדות הבאים:

    • COMMA_SEPARATED_IP: כתובות ה-IP של הצמתים שרוצים לאפס, למשל 10.200.0.8,10.200.0.9.
    • CLUSTER_NAME: השם של אשכול היעד שמכיל את הצמתים שנכשלו.
    • KUBECONFIG_FILE: הנתיב לקובץ kubeconfig של אשכול האדמין.

    אם הצמתים שנכשלו היו חלק ממאגרי הצמתים של מאזן העומסים, אחרי שהצמתים יחזרו לפעולה הם עלולים להתחרות על כתובת ה-IP הווירטואלית של מישור הבקרה ולגרום לחוסר יציבות באשכול החדש. מריצים את פקודות האיפוס בצמתים שנכשלו בהקדם האפשרי אחרי שמשחזרים את הצמתים.

התהליך הזה מטפל רק בהתאוששות מאסון (DR) עבור פריסת HA של מישור בקרה עם 3 צמתים. התהליך הזה לא תומך בשחזור של הגדרות HA עם 5 צמתים או יותר.

תיקון של שחזור לא מכוון של תמונת מערכת הפעלה

אם שחזרתם צומת פיזי מגיבוי תמונה או מצילום מצב ברמת מערכת ההפעלה, והצומת גורם לחוסר יציבות באשכול, לשגיאות בהסכמה של etcd או להתנגשויות של כתובות IP ב-Dataplane V2, צריך לבצע את השלבים הבאים כדי לשחזר את תקינות האשכול:

  1. כדי למנוע נזק נוסף למצב האשכול, צריך לנתק או לכבות מיד את הצומת המושפע.
  2. בתחנת העבודה של האדמין, מריצים את הפקודה bmctl reset nodes --force כדי להסיר מהאשכול את המשאבים המותאמים אישית של הצומת.
  3. מבצעים ניקוי של הכוננים הפיזיים במחשב.
  4. מתקינים מערכת הפעלה נקייה של Linux בהתאם לדרישות התצורה של מערכת ההפעלה.
  5. כדי להוסיף מחדש את הצומת לאשכול, פועלים לפי ההוראות שבקטע עדכון אשכולות.

המאמרים הבאים

מידע נוסף על הוספה או הסרה של צמתים מאשכול כשאין כשל, ועל בדיקת סטטוס הצומת זמין במאמר עדכון אשכולות.

לקבלת עזרה נוספת, אפשר לפנות אל Cloud Customer Care. אפשר גם לעיין במאמר קבלת תמיכה כדי לקבל מידע נוסף על מקורות תמיכה, כולל:

  • דרישות לפתיחת בקשת תמיכה.
  • כלים שיעזרו לכם לפתור בעיות, כמו הגדרת הסביבה, היומנים והמדדים.
  • רכיבים נתמכים.