במהלך ההתקנה של אשכול Google Distributed Cloud, קבצים בינאריים ושירותי systemd מותקנים בצמתים שמארחים את האשכול, והשירותים מתחילים להאזין ליציאות בצמתים.
עם זאת, אם ההתקנה של אשכול נכשלת, צריך למחוק את כל הקבצים הבינאריים והשירותים האלה. במילים אחרות, צריך לאפס את הצמתים או למחוק מהם את כל הנתונים כדי להכין אותם לניסיון חוזר להתקנת האשכול. אם הצמתים לא מאופסים בדרך הזו, הניסיון הבא להתקין עליהם אשכול ייכשל.
בדף הזה מוסבר איך לבצע את פעולת הניקוי הזו של צמתים ספציפיים ואיך למחוק אשכול.
הדף הזה מיועד לאדמינים, לארכיטקטים ולמפעילים שמנהלים את מחזור החיים של התשתית הטכנית הבסיסית. מידע נוסף על תפקידים נפוצים ומשימות לדוגמה שאנחנו מתייחסים אליהם בתוכן זמין במאמר תפקידים נפוצים של משתמשי GKE ומשימות. Google Cloud
בחירת שיטת מחיקה
השיטה שבה משתמשים כדי למחוק אשכול תלויה ב:
- סוג האשכול.
- אם רוצים לנקות רק צמתים ספציפיים ולא למחוק את כל האשכול.
- איך האשכול נוצר.
Google Distributed Cloud מספקת את שיטות המחיקה הבאות:
במסוף Google Cloud או ב-Google Cloud CLI:
משתמשים במסוף או ב-CLI של gcloud כדי למחוק אשכולות משתמשים שמנוהלים על ידי GKE On-Prem API. אשכול משתמשים מנוהל על ידי GKE On-Prem API אם אחד מהתנאים הבאים מתקיים:
האשכול נוצר במסוף Google Cloud או באמצעות ה-CLI של gcloud, שמגדיר אוטומטית את GKE On-Prem API לניהול האשכול.
האשכול נוצר באמצעות
bmctl, אבל הוגדר לניהול על ידי GKE On-Prem API.
bmctl:- אפשר להשתמש ב-
bmctl reset nodesכדי לאפס צמתים ספציפיים. משתמשים ב-
bmctl resetכדי למחוק את סוגי האשכולות הבאים:- אשכולות אדמין, אשכולות היברידיים ואשכולות עצמאיים (שנקראים גם אשכולות בניהול עצמי). היא כוללת אשכולות אדמין שמנוהלים על ידי GKE On-Prem API.
- אשכולות משתמשים שלא מנוהלים על ידי GKE On-Prem API.
אם משתמשים בפקודה
bmctlכדי לאפס צמתים או למחוק אשכול, הפקודה מצפה שקובץ התצורה של האשכול יהיה בספריית העבודה הנוכחית. כברירת מחדל, הנתיב נראה כך:bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME.yamlאם השתמשתם בדגל
--workspace-dirכדי לציין ספרייה אחרת במהלך יצירת האשכול, אתם צריכים להשתמש בדגל כדי לציין את ספריית העבודה במהלך איפוס האשכול.- אפשר להשתמש ב-
kubectl:- משתמשים ב-
kubectl delete clusterכדי למחוק רק אשכולות משתמשים שלא מנוהלים על ידי אשכולות GKE On-Prem API. אל תריצו את הפקודה בסוגים אחרים של אשכולות. - שימו לב שאם משתמשים ב-
kubectl delete cluster, צריך גם למחוק את מרחב השמות שהאשכול נמצא בו אחרי שמוחקים את האשכול.
- משתמשים ב-
אחרי שמוחקים אשכול, אפשר להתקין אותו מחדש אחרי שמבצעים את שינויי ההגדרות הנדרשים.
מחיקת אשכולות בניהול עצמי
כדי למחוק אשכול אדמין, אשכול היברידי או אשכול עצמאי, מריצים את הפקודה הבאה:
bmctl reset --cluster CLUSTER_NAME
בפקודה, מחליפים את CLUSTER_NAME בשם של האשכול שרוצים לאפס.
הפלט מהפקודה bmctl cluster reset אמור להיראות כך:
Please check the logs at bmctl-workspace/example-cluster-1/log/reset-20221025-184705/reset.log [2022-10-25 18:47:11+0000] Creating bootstrap cluster... OK [2022-10-25 18:48:18+0000] Loading images... OK [2022-10-25 18:48:18+0000] Waiting for reset jobs to finish... [2022-10-25 18:48:28+0000] Operation reset in progress: 1 Completed: 0 Failed: 0 ... [2022-10-25 18:50:08+0000] Operation reset in progress: 0 Completed: 1 Failed: 0 [2022-10-25 18:50:08+0000] Flushing logs... OK [2022-10-25 18:50:08+0000] Deleting GKE Hub member example-cluster-1 in project example-project-12345... [2022-10-25 18:50:11+0000] Successfully deleted GKE Hub member example-cluster-1 in project example-project-12345 [2022-10-25 18:50:11+0000] Deleting bootstrap cluster... OK
בנוסף למחיקת האשכול, הפקודה מוחקת את החברות של האשכול בצי.
בנוסף, עבור אשכולות אדמין שמנוהלים על ידי GKE On-Prem API, צריך למחוק את משאבי ה-API ב- Google Cloud. אחרת, האשכול יוצג בדף GKE clusters במסוף Google Cloud . כדי למחוק את משאבי GKE On-Prem API עבור אשכול אדמין, משתמשים בפקודה הבאה:
gcloud container bare-metal admin-clusters unenroll CLUSTER_NAME \
--project=FLEET_HOST_PROJECT_ID \
--location=REGION \
--ignore-errors
מחליפים את מה שכתוב בשדות הבאים:
FLEET_HOST_PROJECT_ID: מזהה הפרויקט של ה-Fleet שהאשכול לניהול היה חבר בו.
REGION: האזור שבו GKE On-Prem API מאחסן את המטא-נתונים של האשכול. Google Cloud
הדגל --ignore-errors מבטיח שביטול ההרשמה של משאב אשכול אדמין של Bare Metal יצליח גם אם יתרחשו שגיאות במהלך ביטול ההרשמה.
אחרי שהאשכול יימחק, תוכלו ליצור אשכול חדש. פרטים נוספים זמינים במאמר סקירה כללית על יצירת אשכול.
מחיקת אשכולות משתמשים
אם אשכול המשתמשים מנוהל על ידי GKE On-Prem API, צריך למחוק את האשכול באמצעות המסוף או ה-CLI של gcloud. אחרת, משתמשים ב-bmctl
או ב-kubectl כדי למחוק את האשכול.
bmctl
אתם יכולים להשתמש ב-bmctl כדי למחוק אשכולות משתמשים שנוצרו באמצעות bmctl או kubectl, ושלא רשומים ב-GKE On-Prem API.
מריצים את הפקודה הבאה כדי למחוק אשכול משתמשים באמצעות bmctl:
bmctl reset --cluster USER_CLUSTER_NAME --admin-kubeconfig ADMIN_KUBECONFIG_PATH
בפקודה, מחליפים את הערכים הבאים בפרטים שספציפיים לסביבה שלכם:
USER_CLUSTER_NAME: השם של אשכול המשתמשים שרוצים למחוק.
ADMIN_KUBECONFIG_PATH: הנתיב לקובץkubeconfigשל אשכול האדמין המשויך. bmctlתומך בשימוש ב---kubeconfigככינוי לדגל--admin-kubeconfig.
הפלט מהפקודה bmctl cluster reset אמור להיראות כך:
Please check the logs at bmctl-workspace/example-cluster-1/log/reset-20221025-184705/reset.log [2022-10-25 18:47:11+0000] Creating bootstrap cluster... OK [2022-10-25 18:48:18+0000] Loading images... OK [2022-10-25 18:48:18+0000] Waiting for reset jobs to finish... [2022-10-25 18:48:28+0000] Operation reset in progress: 1 Completed: 0 Failed: 0 ... [2022-10-25 18:50:08+0000] Operation reset in progress: 0 Completed: 1 Failed: 0 [2022-10-25 18:50:08+0000] Flushing logs... OK [2022-10-25 18:50:08+0000] Deleting GKE Hub member example-cluster-1 in project example-project-12345... [2022-10-25 18:50:11+0000] Successfully deleted GKE Hub member example-cluster-1 in project example-project-12345 [2022-10-25 18:50:11+0000] Deleting bootstrap cluster... OK
kubectl
אתם יכולים להשתמש ב-kubectl כדי למחוק אשכולות משתמשים שנוצרו באמצעות bmctl או kubectl, ושלא רשומים ב-GKE On-Prem API. כדי להשתמש ב-kubectl כדי למחוק אשכול משתמשים, צריך קודם למחוק את אובייקט האשכול ואז את מרחב השמות שלו. אחרת, אי אפשר ליצור את המשימות לאיפוס המכונות, ותהליך המחיקה עלול להיתקע ללא הגבלת זמן.
כדי למחוק אשכול משתמשים באמצעות kubectl:
מריצים את הפקודה הבאה כדי למחוק את אובייקט האשכול:
kubectl delete cluster USER_CLUSTER_NAME -n USER_CLUSTER_NAMESPACE \ --kubeconfig ADMIN_KUBECONFIG_PATHבפקודה, מחליפים את הערכים הבאים בפרטים שספציפיים לסביבה שלכם:
USER_CLUSTER_NAME: השם של אשכול המשתמשים שרוצים למחוק.
USER_CLUSTER_NAMESPACE: מרחב השמות של האשכול. כברירת מחדל, מרחבי השמות של האשכולות ב-Google Distributed Cloud הם השם של האשכול עם הקידומתcluster-. לדוגמה, אם שם האשכול הואtest, שם מרחב השמות יהיהcluster-test.
ADMIN_KUBECONFIG_PATH: הנתיב לקובץkubeconfigשל אשכול האדמין המשויך.
אחרי שהאשכול נמחק בהצלחה, מריצים את הפקודה הבאה כדי למחוק את מרחב השמות:
kubectl delete namespace USER_CLUSTER_NAMESPACE --kubeconfig ADMIN_KUBECONFIG_PATH
המסוף
אם אשכול המשתמשים מנוהל על ידי GKE On-Prem API, צריך לבצע את השלבים הבאים כדי למחוק את האשכול:
במסוף, נכנסים לדף Google Kubernetes Engine clusters overview.
בוחרים את הפרויקט Google Cloud שבו נמצא אשכול המשתמשים.
ברשימת האשכולות, לוחצים על האשכול שרוצים למחוק.
ברשימת האשכולות, מאתרים את האשכול שרוצים למחוק. אם הסוג הוא חיצוני, זה מצביע על כך שהאשכול נוצר באמצעות
bmctlולא נרשם ל-GKE On-Prem API. במקרה כזה, פועלים לפי השלבים בכרטיסייהbmctlאוkubectlכדי למחוק את האשכול.אם הסמל בעמודה סטטוס מציין שיש בעיה, צריך לפעול לפי השלבים בכרטיסייה ה-CLI של gcloud כדי למחוק את האשכול. תצטרכו להוסיף את הדגל
--ignore-errorsלפקודת המחיקה.לוחצים על השם של האשכול שרוצים למחוק.
בחלונית פרטים, ליד החלק העליון של החלון, לוחצים על מחיקה.
כשמופיעה בקשה לאישור, מזינים את שם האשכול ולוחצים על הסרה.
CLI של gcloud
אם אשכול המשתמשים מנוהל על ידי GKE On-Prem API, מבצעים את השלבים הבאים כדי למחוק את האשכול במחשב שמותקן בו ה-CLI של gcloud:
מתחברים לחשבון Google:
gcloud auth login
עדכון רכיבים:
gcloud components update
כדי לוודא שמציינים את שם האשכול הנכון בפקודת המחיקה, אפשר לקבל רשימה של אשכולות:
gcloud container bare-metal clusters list \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
מחליפים את מה שכתוב בשדות הבאים:
FLEET_HOST_PROJECT_ID: מזהה הפרויקט שבו נוצר האשכול.
LOCATION: Google Cloud המיקום שמשויך לאשכול המשתמשים.
הפלט אמור להיראות כך:
NAME LOCATION VERSION ADMIN_CLUSTER STATE example-user-cluster-1a us-west1 1.34.100-gke.93 example-admin-cluster-1 RUNNING
מריצים את הפקודה הבאה כדי למחוק את האשכול:
gcloud container bare-metal clusters delete USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION \ --force \ --allow-missing
מחליפים את מה שכתוב בשדות הבאים:
USER_CLUSTER_NAME: השם של אשכול המשתמשים שרוצים למחוק.
FLEET_HOST_PROJECT_ID: מזהה הפרויקט שבו נוצר האשכול.
LOCATION: Google Cloud המיקום שמשויך לאשכול המשתמשים.
הדגל
--forceמאפשר למחוק אשכול שיש בו מאגרי צמתים. בלי התג--force, צריך קודם למחוק את מאגרי הצמתים ואז למחוק את האשכול.הדגל
--allow-missingהוא דגל סטנדרטי של Google API. כשמציינים את הדגל הזה, הפקודה מחזירה הצלחה אם לא נמצא אשכול.אם הפקודה מחזירה שגיאה שמכילה את הטקסט
failed connecting to the cluster's control plane, זה מצביע על בעיות בקישוריות לאחד מהרכיבים הבאים: אשכול האדמין, Connect Agent או הסביבה המקומית. כדי לפתור בעיות ב-Connect Agent, אפשר לעיין במאמר בנושא איסוף יומנים של Connect Agent.אם אתם חושבים שבעיית הקישוריות היא זמנית, למשל בגלל בעיות ברשת, כדאי להמתין ולנסות שוב להריץ את הפקודה.
אם אתם יודעים שקלאסטר האדמין נמחק, או אם המכונות של הצומת בקלאסטר האדמין או בקלאסטר המשתמש הושבתו או שהן לא מחוברות לאינטרנט, צריך לכלול את הדגל
--ignore-errorsולנסות שוב להריץ את הפקודה.צריך לכלול גם את
--ignore-errorsאם האשכול נמחק באמצעותbmctlאוkubectl, מה שמשאיר משאבי GKE On-Prem API ב- Google Cloud. אחד מהסימפטומים לכך הוא שהאשכול עדיין מוצג בדף GKE clusters (אשכולות GKE) במסוף במצב לא תקין.
למידע על דגלים אחרים, אפשר לעיין במדריך העזר ל-CLI של gcloud.
איפוס של צמתי מקבץ ספציפיים
לדוגמה, יכול להיות שתרצו לאפס צמתים ספציפיים באשכול אם אשכול אדמין נמחק, אבל אשכולות המשתמשים שמנוהלים על ידי אשכול האדמין הזה נשארו. במקרה כזה, אי אפשר למחוק את אשכולות המשתמשים כי אשכול האדמין נמחק. לכן, צריך לאפס את הצמתים של אשכולות המשתמשים בנפרד.
כדי לאפס צמתים, צריך חשבון שירות עם גישת קריאה ל-Artifact Registry. הפקודה bmctl מצפה לקבל כארגומנט את קובץ מפתח ה-JSON של חשבון השירות הזה. כדי לאפס צמתים בודדים באשכול, מריצים את הפקודה הבאה:
bmctl reset nodes --addresses NODE_1_IP_ADDRESS,NODE_2_IP_ADDRESS \
--ssh-private-key-path SSH_KEY_PATH \
--gcr-service-account-key SERVICE_ACCOUNT_KEY_PATH \
--login-user root
בפקודה, מחליפים את הערכים הבאים בפרטים שספציפיים לסביבה שלכם:
NODE_1_IP_ADDRESS , NODE_2_IP_ADDRESS: רשימה מופרדת בפסיקים של כתובות ה-IP של הצמתים שרוצים למחוק.
SSH_KEY_PATH: הנתיב למפתח SSH פרטי. זה המפתח שישמש ליצירת חיבורי SSH עם הצמתים במהלך האיפוס.
SERVICE_ACCOUNT_KEY_PATH: הנתיב לקובץ ה-JSON שמכיל את המפתח של חשבון השירות. המפתח הזה מעניק ל-bmctlהרשאה לשלוף תמונות מ-Artifact Registry. אפשר ליצור מפתח של חשבון שירות באמצעות המסוף או ה-CLI של gcloud. פרטים נוספים זמינים במאמר יצירה וניהול של מפתחות לחשבונות שירות. דרך נוספת ליצור את קובץ המפתח של חשבון השירות היא להריץ את הפקודהcreate configעם הדגל--create-service-accounts. פרטים על הפקודה הזו זמינים במאמר יצירה של קובץ הגדרות של אדמין קלאסטר באמצעות bmctl.
פרטים על מחיקת אשכול
במהלך המחיקה, הרישום של חברות בצי של האשכול, נקודות החיבור של האחסון והנתונים מ-anthos-system StorageClass נמחקים.
בכל הצמתים, ממשקי המנהור שמשמשים לחיבור הרשת של האשכול מוסרים, והספריות הבאות נמחקות:
/etc/kubernetes/etc/cni/net.d/root/.kube/var/lib/kubelet
עבור צמתים של מאזן עומסים:
- השירותים
keepalivedו-haproxyנמחקים. - קבצי ההגדרות של
keepalivedו-haproxyנמחקים.