ב-Google Distributed Cloud, בדיקות תקינות תקופתיות ותיקון אוטומטי של צמתים מופעלים כברירת מחדל.
תכונת התיקון האוטומטי של הצמתים מזהה ומתקנת באופן רציף צמתים לא תקינים באשכול.
בדיקות התקינות התקופתיות מופעלות כל רבע שעה. הבדיקות זהות לבדיקות שמבוצעות על ידי gkectl diagnose cluster. התוצאות מוצגות כיומנים וכאירועים באובייקטים של Cluster באשכול האדמין.
מוודאים שלכל אחד מאשכולות האדמין והמשתמשים יש כתובת IP נוספת שזמינה לתיקון אוטומטי של הצומת.
אם האשכול המתקדם מופעל, בדיקות התקינות התקופתיות לא מופעלות כחלק מהתיקון האוטומטי.
תנאים לא תקינים של צומת כשלא מופעלת קבוצת מחשבים מתקדמת
התנאים הבאים מצביעים על כך שהצומת לא תקין כש-enableAdvanceCluster הוא false.
תנאי הצומת
NotReadyהואtrueלמשך כ-10 דקות.מצב המכונה הוא
Unavailableלמשך כ-10 דקות אחרי היצירה המוצלחת.סטטוס המכונה לא יהיה
Availableבמשך כ-30 דקות אחרי יצירת המכונה הווירטואלית.אין אובייקט צומת (nodeRef הוא
nil) שמתאים למכונה במצבAvailableבמשך כ-10 דקות.המצב של הצומת
DiskPressureהואtrueלמשך כ-30 דקות.
תנאים לא תקינים של צומת כשהאפשרות 'אשכול מתקדם' מופעלת
התנאים הבאים מצביעים על כך שהצומת לא תקין כשהערך של enableAdvanceCluster הוא true.
תנאי הצומת
NotReadyהואtrueלמשך כ-10 דקות.המצב של הצומת
DiskPressureהואtrueלמשך כ-30 דקות.
אסטרטגיה לתיקון צמתים
Google Distributed Cloud מתחיל תיקון של צומת אם הצומת עומד לפחות באחד מהתנאים שברשימה הקודמת.
התיקון מרוקן את הצומת הלא תקין ויוצר מכונה וירטואלית חדשה. אם ניקוי הצומת נכשל למשך שעה, התיקון כופה את הניקוי ומנתק בבטחה את הדיסקים המנוהלים של Kubernetes שמצורפים.
אם יש כמה צמתים לא תקינים באותו MachineDeployment, התיקון מתבצע רק בצומת אחד בכל פעם.
מספר התיקונים לשעה במאגר צמתים מוגבל למספר המקסימלי מבין האפשרויות הבאות:
- שלושה
- 10% ממספר הצמתים במאגר הצמתים
הפעלת תיקון צמתים ובדיקת תקינות באשכול חדש
בקובץ התצורה של אשכול האדמין או המשתמש, מגדירים את autoRepair.enabled ל-true:
autoRepair: enabled: true
ממשיכים בשלבים ליצירת אשכול אדמין או משתמש.
הפעלת תיקון צמתים ובדיקת תקינות עבור אשכול משתמשים קיים
בקובץ ההגדרות של אשכול המשתמשים, מגדירים את autoRepair.enabled ל-true:
מעדכנים את האשכול:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
מחליפים את מה שכתוב בשדות הבאים:
ADMIN_CLUSTER_KUBECONFIG: הנתיב לקובץ ה-kubeconfig של אשכול האדמין
USER_CLUSTER_CONFIG: הנתיב של קובץ ההגדרות של אשכול המשתמשים
הפעלת תיקון צמתים ובדיקת תקינות באשכול אדמין קיים
בקובץ ההגדרות של אשכול האדמין, מגדירים את autoRepair.enabled ל-true:
מעדכנים את האשכול:
gkectl update admin --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config ADMIN_CLUSTER_CONFIG
מחליפים את ADMIN_CLUSTER_CONFIG בנתיב של קובץ התצורה של אשכול האדמין.
צפייה ביומנים של כלי לבדיקת תקינות
מציגים את כל ה-Pods של כלי הבדיקה של תקינות המערכת באשכול האדמין:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get pods --all-namespaces | grep cluster-health-controller
הפלט אמור להיראות כך:
kube-system cluster-health-controller-6c7df455cf-zlfh7 2/2 Running my-user-cluster cluster-health-controller-5d5545bb75-rtz7c 2/2 Running
כדי לראות את היומנים של בודק תקינות מסוים, צריך לקבל את היומנים של מאגר cluster-health-controller באחד מ-Pods. לדוגמה, כדי לקבל את היומנים של my-user-cluster שמופיעים בפלט הקודם:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG --namespace my-user-cluster logs \
cluster-health-controller-5d5545bb75-rtz7c cluster-health-controller
צפייה באירועים מכלי לבדיקת תקינות
מציגים רשימה של כל אובייקטי האשכול באשכול האדמין:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get clusters --all-namespaces
הפלט אמור להיראות כך:
default gke-admin-ldxh7 2d15h my-user-cluster my-user-cluster 2d12h
כדי לראות את האירועים של אשכול מסוים, מריצים את הפקודה kubectl describe cluster עם הדגל --show-events. לדוגמה, כדי לראות את האירועים של my-user-cluster
שמוצגים בפלט הקודם:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG --namespace my-user-cluster \
describe --show-events cluster my-user-cluster
פלט לדוגמה:
Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning ValidationFailure 17s cluster-health-periodics-controller validator for Pod returned with status: FAILURE, reason: 1 pod error(s).
השבתה של תיקון צמתים ובדיקות תקינות באשכול משתמשים
בקובץ ההגדרות של אשכול המשתמשים, מגדירים את autoRepair.enabled ל-false:
מעדכנים את האשכול:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
השבתה של תיקון צמתים ובדיקת תקינות באשכול אדמין
בקובץ ההגדרות של אשכול האדמין, מגדירים את autoRepair.enabled ל-false:
מעדכנים את האשכול:
gkectl update admin --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config ADMIN_CLUSTER_CONFIG
ניפוי באגים בתיקון אוטומטי של צומת כשלא מופעל אשכול מתקדם
כדי לחקור בעיות בתיקון אוטומטי של צמתים, אפשר לתאר את האובייקטים Machine ו-Node באשכול הניהול. הנה דוגמה:
מציגים את אובייקטי המכונות:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get machines
פלט לדוגמה:
default gke-admin-master-wcbrj default gke-admin-node-7458969ff8-5cg8d default gke-admin-node-7458969ff8-svqj7 default xxxxxx-user-cluster-41-25j8d-567f9c848f-fwjqt
מתארים אחד מאובייקטי המכונה:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG describe machine gke-admin-master-wcbrj
בפלט, מחפשים אירועים מ-cluster-health-controller.
באופן דומה, אפשר לראות רשימה של אובייקטים של צמתים ולתאר אותם. לדוגמה:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get nodes ... kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG describe node gke-admin-master-wcbrj
ניפוי באגים בתיקון אוטומטי של צומת כשמופעל אשכול מתקדם
כדי לבדוק בעיות בתיקון אוטומטי של צמתים, אפשר לתאר את אובייקטים של מכונות וצמתים באשכול הניהול ובאשכול המתאים. הנה דוגמה:
מציגים את אובייקטי המכונות:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get machines
פלט לדוגמה:
NAMESPACE NAME NODEPOOL ci-1f6861fe28cac8fb390bc798927c717b 10.251.172.47 ci-1f6861fe28cac8fb390bc798927c717b-np ci-1f6861fe28cac8fb390bc798927c717b 10.251.173.64 ci-1f6861fe28cac8fb390bc798927c717b-cp ci-1f6861fe28cac8fb390bc798927c717b 10.251.173.66 ci-1f6861fe28cac8fb390bc798927c717b-cp ci-1f6861fe28cac8fb390bc798927c717b 10.251.174.19 ci-1f6861fe28cac8fb390bc798927c717b-np ci-1f6861fe28cac8fb390bc798927c717b 10.251.175.15 ci-1f6861fe28cac8fb390bc798927c717b-np ci-1f6861fe28cac8fb390bc798927c717b 10.251.175.30 ci-1f6861fe28cac8fb390bc798927c717b-cp kube-system 10.251.172.239 gke-admin-bnbp9-cp kube-system 10.251.173.39 gke-admin-bnbp9-cp kube-system 10.251.173.6 gke-admin-bnbp9-cp
תארו את המכונה שמתאימה לאובייקט Machine:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG describe machine -n ci-1f6861fe28cac8fb390bc798927c717b 10.251.172.47
בפלט, מחפשים אירועים מ-auto-repair-controller.
באופן דומה, אפשר לראות רשימה של אובייקטים של צמתים ולתאר אותם. לדוגמה:
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get nodes ... kubectl --kubeconfig USER_CLUSTER_KUBECONFIG describe node ci-1f6861fe28cac8fb390bc798927c717b-np
תיקון ידני של צמתים כשלא מופעל אשכול מתקדם
צומת אמצעי בקרה לאדמינים
לצומת של מישור הבקרה של האדמין יש פקודת תיקון ייעודית, כי התיקון הידני הרגיל לא פועל עבורו.
משתמשים ב-gkectl repair
admin-master כדי לתקן את הצומת של אמצעי בקרה לאדמינים.
צומת מישור הבקרה של אשכול משתמש בגרסה 2 של מישור הבקרה
הניהול של צמתי רמת הבקרה של אשכול משתמשים Controlplane V2 שונה מהניהול של צמתים אחרים.
בדומה לאשכולות משתמשים של kubeception, אובייקטים של מכונות במישור הבקרה של אשכולות משתמשים במישור הבקרה V2 נמצאים באשכול האדמין. תיקון אוטומטי של צמתים מכוסה על ידי תיקון אוטומטי של צמתים באשכול הניהול.
אם יש בעיות בצומת שלא נכללות בלוגיקה של תיקון אוטומטי של צומת באשכול אדמין, או אם לא הפעלתם תיקון אוטומטי של צומת באשכול אדמין, תוכלו לבצע תיקון ידני. הפעולה הזו מוחקת את הצומת ויוצרת אותו מחדש.
מקבלים את השם של אובייקט המכונה שמתאים לצומת:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG -n USER_CLUSTER_NAME get machines
מחליפים את מה שכתוב בשדות הבאים:
-
ADMIN_CLUSTER_KUBECONFIG: הנתיב לקובץ kubeconfig של אשכול האדמין. -
USER_CLUSTER_NAME: שם אשכול המשתמשים של היעד.
-
מוסיפים את ההערה
repairלאובייקט Machine:kubectl annotate --kubeconfig ADMIN_CLUSTER_KUBECONFIG -n USER_CLUSTER_NAME machine MACHINE_NAME onprem.cluster.gke.io/repair-machine=true
מחליפים את
MACHINE_NAMEבשם של אובייקט המכונה.מחיקת אובייקט המכונה:
kubectl delete --kubeconfig ADMIN_CLUSTER_KUBECONFIG -n USER_CLUSTER_NAME machine MACHINE_NAME
צריך ליצור מחדש את הצומת אחד אחרי השני עבור מישור בקרה של זמינות גבוהה, אחרת יכול להיות שמישור הבקרה יושבת באופן לא צפוי.
צמתים אחרים
אם יש בעיות בצומת שלא נכללות בלוגיקה של התיקון האוטומטי, או אם לא הפעלתם תיקון אוטומטי של צומת, תוכלו לבצע תיקון ידני. הפעולה הזו מוחקת את הצומת ויוצרת אותו מחדש.
מקבלים את השם של אובייקט המכונה שמתאים לצומת:
kubectl --kubeconfig CLUSTER_KUBECONFIG get machines
מחליפים את CLUSTER_KUBECONFIG בנתיב של קובץ ה-kubeconfig של האדמין או של אשכול המשתמש.
מוסיפים את ההערה repair לאובייקט Machine:
kubectl annotate --kubeconfig CLUSTER_KUBECONFIG machine MACHINE_NAME onprem.cluster.gke.io/repair-machine=true
מחליפים את MACHINE_NAME בשם של אובייקט המכונה.
מחיקת אובייקט המכונה:
kubectl delete --kubeconfig CLUSTER_KUBECONFIG machine MACHINE_NAME
תיקון ידני של צומת כשהאשכול המתקדם מופעל
צומת אמצעי בקרה לאדמינים
אין תמיכה בתיקון ידני של צומת במישור הבקרה של האדמין
צומת מישור הבקרה של אשכול משתמשים / צמתי עובדים
כדי לקבל את השם של אובייקט המכונה של מלאי שמתאים לצומת, משתמשים בכתובת ה-IP של הצומת כדי להתאים את האובייקטים:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG -n USER_CLUSTER_NAME get inventorymachines
מחליפים את הערכים הבאים: ADMIN_CLUSTER_KUBECONFIG: הנתיב של קובץ ה-kubeconfig של האדמין. USER_CLUSTER_NAME: שם אשכול המשתמשים של היעד.
מוסיפים את ההערה force-remove לאובייקט Inventory Machine:
kubectl annotate --kubeconfig ADMIN_CLUSTER_KUBECONFIG -n USER_CLUSTER_NAME inventorymachine MACHINE_NAME baremetal.cluster.gke.io/force-remove=true
מחליפים את MACHINE_NAME בשם של אובייקט המכונה.
מחיקת האובייקט Inventory Machine:
kubectl delete --kubeconfig ADMIN_CLUSTER_KUBECONFIG -n USER_CLUSTER_NAME inventorymachine MACHINE_NAME
צריך ליצור מחדש את הצומת אחד אחרי השני עבור מישור בקרה של HA, אחרת יכול להיות שמישור הבקרה יושבת באופן בלתי צפוי.