כשצמתים ב-Google Distributed Cloud נכשלים, מה שיכול לקרות בגלל בעיות באחסון, ברשת או בטעות בהגדרת מערכת ההפעלה, כדאי לשחזר ביעילות את תקינות האשכול. אחרי שמשחזרים את תקינות האשכול, אפשר לפתור את הבעיה של הכשל בשרת. במסמך הזה מוסבר איך להתאושש מתרחישי כשל בצומת על ידי איפוס צומת, והסרת הצומת בכוח אם צריך.
אם רוצים להוסיף או להסיר צמתים מאשכול כשאף צומת לא נכשל, אפשר לעיין במאמר בנושא עדכון אשכולות.
איפוס הצמתים
במקרה של כשל בצומת, לפעמים אי אפשר להריץ פקודות איפוס בצמתים כי יכול להיות שאי אפשר להגיע לצומת. יכול להיות שתצטרכו להסיר את הצומת מהאשכול בכוח.
כשמאפסים צומת ומעדכנים את האשכול, הפעולות הבאות מתבצעות:
- הצומת מאופס, בדומה ל-
kubeadm reset, והמכונה חוזרת למצב שלפני ההתקנה. - ההפניות הקשורות לצומת מוסרות מהמשאבים המותאמים אישית של מאגר הצמתים והאשכול.
בחלק מהפקודות הבאות bmctl לאיפוס צמתים, הפרמטר --force
מציין אם צריך לדלג על פקודות האיפוס (שלב 1). אם משתמשים בפרמטר --force, הפקודה bmctl מבצעת רק את שלב ההסרה (שלב 2) ולא מריצה את פקודות האיפוס.
הסרת צומת עובד
כדי להסיר צומת עובד מאשכול, פועלים לפי השלבים הבאים:
נסו לאפס את הצומת בצורה נקייה. אחרי איפוס הצומת, הצומת מוסר מהאשכול:
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של אשכול האדמין.
אם הפקודה הזו מצליחה, אפשר לאבחן את הצומת ולתקן את כל הטעויות בהגדרות שגרמו לכשל הראשוני. מדלגים על השלבים הנותרים בקטע הזה.
-
אם השלב הקודם לאיפוס הצומת נכשל, מסירים את הצומת מהאשכול בכוח. ההסרה הכפויה הזו מדלגת על השלב הקודם שבו מופעלות פקודות האיפוס, ומבצעת רק את השלב של הסרת ההפניות שקשורות לצומת ממאגר הצמתים וממשאבי ה-Custom של האשכול:
bmctl reset nodes \ --addresses COMMA_SEPARATED_IPS \ --cluster CLUSTER_NAME \ --kubeconfig ADMIN_KUBECONFIG \ --forceעכשיו אפשר לאבחן את הצומת ולתקן את ההגדרות השגויות שגרמו לכישלון הראשוני.
אם הסרתם את הצומת בכוח מאשכול הצמתים בשלב הקודם, מריצים שוב את הפקודה
bmctl resetכדי לאפס את הצמתים:bmctl reset nodes \ --addresses COMMA_SEPARATED_IPS \ --cluster CLUSTER_NAME \ --kubeconfig ADMIN_KUBECONFIG
הסרה של צומת יחיד במישור הבקרה
התהליך זהה לזה של צמתי עובד. בצמתים של מישור הבקרה, bmctl
הפקודה מנקה גם את החברות ב-etcd.
אחרי שמסירים את הצומת שנכשל, האשכול מפסיק להיות במצב של זמינות גבוהה (HA). כדי לחזור למצב זמינות גבוהה, מוסיפים צומת תקין לאשכול.
כדי להסיר צומת מאשכול, פועלים לפי השלבים הבאים:
נסו לאפס את הצומת בצורה נקייה. אחרי איפוס הצומת, הצומת מוסר מהאשכול:
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של אשכול האדמין.
אם הפקודה הזו מצליחה, אפשר לאבחן את הצומת ולתקן את כל הטעויות בהגדרות שגרמו לכשל הראשוני. מדלגים על השלבים הנותרים בקטע הזה.
-
אם השלב הקודם לאיפוס הצומת נכשל, אפשר להסיר את הצומת מהאשכול בכוח. ההסרה הכפויה הזו מדלגת על השלב הקודם שבו מופעלות פקודות האיפוס, ומבצעת רק את השלב של הסרת ההפניות הקשורות לצומת ממאגרי הצמתים וממשאבים בהתאמה אישית של האשכול:
bmctl reset nodes \ --addresses COMMA_SEPARATED_IPS \ --cluster CLUSTER_NAME \ --kubeconfig ADMIN_KUBECONFIG \ --forceעכשיו אפשר לאבחן את הצומת ולתקן את ההגדרות השגויות שגרמו לכישלון הראשוני.
אם הסרתם את הצומת בכוח מאשכול הצמתים בשלב הקודם, מריצים שוב את הפקודה
bmctl resetכדי לאפס את הצמתים:bmctl reset nodes \ --addresses COMMA_SEPARATED_IPS \ --cluster CLUSTER_NAME \ --kubeconfig ADMIN_KUBECONFIGאיפוס צומת כשאין גישה למישור הבקרה
אתם יכולים להריץ את הפקודה הבאה כדי להחזיר מכונה למצבים שלפני ההתקנה, אם אין גישה למישור הבקרה של האשכול:
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.
הפקודה הזו לא מסירה הפניות לצומת ממאגרי הצמתים וממשאבי ה-Custom של האשכול. אחרי שמשחזרים את הגישה למישור הבקרה של האשכול, צריך להסיר את הצומת מהאשכול בכוח אם רוצים לשמור את האשכול.
הושג קוורום במישור הבקרה של HA
אם יותר מדי צמתים של רמת הבקרה באשכול HA נכנסים למצב של כשל, האשכול מאבד את הקוורום שלו והופך ללא זמין.
כשצריך לשחזר אשכולות ניהול, לא מציינים את kubeconfig
הקובץ בפקודות האיפוס. אם מספקים את קובץ kubeconfig עבור אשכול ניהול, הפעולה הזו מאלצת אשכול חדש לבצע את פעולת האיפוס. כשמשחזרים אשכול משתמשים, צריך לציין את הנתיב לקובץ kubeconfig.
כדי לשחזר אשכול שאיבד את הקוורום, מריצים את הפקודה הבאה בצומת תקין שנותר:
bmctl restore --control-plane-node CONTROL_PLANE_NODE \ --cluster CLUSTER_NAME \ [--kubeconfig KUBECONFIG_FILE]מחליפים את מה שכתוב בשדות הבאים:
-
CONTROL_PLANE_NODE: כתובות ה-IP של צומת תקין שנשאר כחלק מהאשכול. -
CLUSTER_NAME: השם של אשכול היעד שמכיל את הצמתים שנכשלו. -
KUBECONFIG_FILE: אם משחזרים אשכול משתמשים, הנתיב לקובץkubeconfigשל אשכול המשתמשים.
-
אחרי שמשחזרים את הצמתים שנכשלו, מריצים את הפקודה
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 צמתים או יותר.
המאמרים הבאים
מידע נוסף על הוספה או הסרה של צמתים מאשכול כשאין כשל, ועל בדיקת סטטוס הצומת זמין במאמר עדכון אשכולות.
אם אתם צריכים עזרה נוספת, אתם יכולים לפנות אל