Node Problem Detector היא ספרייה בקוד פתוח שעוקבת אחרי תקינות הצמתים ומזהה בעיות נפוצות בצמתים, כמו בעיות בחומרה, בקרנל או בזמן הריצה של הקונטיינר. ב-Google Distributed Cloud, הוא פועל כשירות systemd בכל צומת.
החל מגרסה 1.10.0 של Google Distributed Cloud, התכונה Node Problem Detector מופעלת כברירת מחדל.
לקבלת עזרה נוספת, אפשר לפנות אל Cloud Customer Care. אפשר גם לעיין במאמר קבלת תמיכה לקבלת מידע נוסף על מקורות מידע לתמיכה, כולל:
- דרישות לפתיחת בקשת תמיכה.
- כלים שיעזרו לכם לפתור בעיות, כמו הגדרת הסביבה, היומנים והמדדים.
- רכיבים נתמכים.
אילו בעיות הוא מזהה?
הכלי Node Problem Detector יכול לזהות את סוגי הבעיות הבאים:
- בעיות בזמן הריצה של הקונטיינר, כמו שדים של זמן ריצה שלא מגיבים
- בעיות בחומרה, כמו כשלים במעבד (CPU), בזיכרון או בדיסק
- בעיות בקרנל, כמו מצבי קיפאון של הקרנל או מערכות קבצים פגומות
הוא פועל בצומת ומדווח על בעיות לשרת Kubernetes API כNodeCondition או כEvent.
NodeCondition היא בעיה שמונעת מצומת להפעיל פודים, ואילו Event היא בעיה זמנית שההשפעה שלה על פודים מוגבלת, אבל היא עדיין נחשבת חשובה מספיק כדי לדווח עליה.
בטבלה הבאה מתוארות הבעיות שזוהו על ידי Node Problem Detector, ומוסבר אם אפשר לתקן אותן באופן אוטומטי:NodeConditions
| תנאי | סיבה | תיקון רכב נתמך1 |
|---|---|---|
KernelDeadlock |
תהליכי ליבה תקועים בהמתנה שתהליכי ליבה אחרים ישחררו משאבים נדרשים. | לא |
ReadonlyFilesystem |
האשכול לא יכול לכתוב למערכת הקבצים בגלל בעיה, כמו דיסק מלא. | לא |
FrequentKubeletRestart |
שירות kubelet מופעל מחדש לעיתים קרובות, ולכן הצומת לא יכול להריץ תרמילים בצורה יעילה. | לא |
FrequentDockerRestart |
שירות ה-daemon של Docker הופעל מחדש יותר מ-5 פעמים ב-20 דקות. | לא |
FrequentContainerdRestart |
הקונטיינר הופעל מחדש יותר מ-5 פעמים ב-20 דקות. | לא |
FrequentUnregisterNetDevice |
בצומת מתבטלת לעיתים קרובות ההרשמה של מכשירי רשת. | לא |
KubeletUnhealthy |
הצומת לא פועל כמו שצריך או לא מגיב למישור הבקרה. | לא |
ContainerRuntimeUnhealthy |
זמן הריצה של הקונטיינר לא פועל בצורה תקינה, ולכן אי אפשר להריץ או לתזמן פודים בצומת. | לא |
CorruptDockerOverlay2 |
יש בעיות במערכת הקבצים או חוסר עקביות בספרייה של מנהל האחסון Docker overlay2. | לא |
OrphanContainers2 |
תא ספציפי למאגר נמחק, אבל המאגר התואם עדיין קיים בצומת. | לא |
FailedCgroupRemoval2 |
חלק מקבוצות הבקרה נמצאות במצב קפוא. | כן |
1 בגרסאות 1.32 ואילך, יש תמיכה ביכולת לתקן באופן אוטומטי בעיות שזוהו בתנאים מסוימים.
2 נתמך בגרסה 1.32 ואילך.
דוגמאות לסוגי Events שדווחו על ידי Node Problem Detector:
Warning TaskHung node/vm-worker-1-user-a12fabb4a99cb92-ddfce8832fd90f6f.lab.anthos kernel: task docker:7 blocked for more than 300 seconds.Warning KernelOops node/vm-worker-1-user-a12fabb4a99cb92-ddfce8832fd90f6f.lab.anthos kernel: BUG: unable to handle kernel NULL pointer dereference at 00x0.
אילו בעיות הוא פותר?
החל מגרסה 1.32, כשכלי Node Problem Detector מגלה בעיות נבחרות NodeConditions, הוא יכול לתקן באופן אוטומטי את הבעיה המתאימה בצומת. החל מגרסה 1.32, רק NodeCondition תומך בתיקון אוטומטי: FailedCgroupRemoval.
איך רואים את הבעיות שזוהו
מריצים את הפקודה הבאה kubectl describe כדי לחפש את NodeConditions ואת Events:
kubectl describe node NODE_NAME \
--kubeconfig=KUBECONFIG
מחליפים את מה שכתוב בשדות הבאים:
NODE_NAME: שם הצומת שבודקים.
KUBECONFIG: הנתיב לקובץ kubeconfig של האשכול.
איך מפעילים ומשביתים את Node Problem Detector
כברירת מחדל, Node Problem Detector מופעל, אבל אפשר להשבית אותו במשאב node-problem-detector-config ConfigMap. אלא אם משביתים אותו באופן מפורש, Node Problem Detector עוקב באופן רציף אחרי הצמתים כדי לזהות תנאים ספציפיים שמצביעים על בעיות בצומת.
כדי להשבית את Node Problem Detector באשכול מסוים, פועלים לפי השלבים הבאים:
עורכים את משאב ה-
node-problem-detector-configConfigMap:kubectl edit configmap node-problem-detector-config \ --kubeconfig=KUBECONFIG \ --namespace=CLUSTER_NAMESPACEמחליפים את מה שכתוב בשדות הבאים:
KUBECONFIG: הנתיב של קובץ ה-kubeconfig של האשכול.
CLUSTER_NAMESPACE: מרחב השמות של האשכול שבו רוצים להפעיל את Node Problem Detector.
הפקודה הזו מפעילה באופן אוטומטי עורך טקסט שבו אפשר לערוך את משאב
node-problem-detector-config.מגדירים את
data.enabledלערךfalseבהגדרת המשאבnode-problem-detector-config.apiVersion: v1 kind: ConfigMap metadata: creationTimestamp: "2025-04-19T21:36:44Z" name: node-problem-detector-config ... data: enabled: "false"במקור, ל-
node-problem-detector-configConfigMap אין שדהdata, ולכן יכול להיות שתצטרכו להוסיף אותו.כדי לעדכן את המשאב, שומרים את השינויים וסוגרים את כלי העריכה.
כדי להפעיל מחדש את Node Problem Detector, מבצעים את השלבים הקודמים, אבל מגדירים את data.enabled לערך true בהגדרת המשאב node-problem-detector-config.
איך מפעילים ומשביתים תיקון אוטומטי
החל מגרסה 1.32, הכלי Node Problem Detector בודק אם יש בעיות ספציפיות ב-NodeConditions ומתקן אוטומטית את הבעיה המתאימה בצומת. כברירת מחדל, תיקון אוטומטי מופעל עבור NodeConditions נתמכים, אבל אפשר להשבית אותו במשאב node-problem-detector-config ConfigMap.
כדי להשבית את התנהגות התיקון האוטומטי באשכול מסוים, מבצעים את השלבים הבאים:
עורכים את משאב ה-
node-problem-detector-configConfigMap:kubectl edit configmap node-problem-detector-config \ --kubeconfig=KUBECONFIG \ --namespace=CLUSTER_NAMESPACEמחליפים את מה שכתוב בשדות הבאים:
KUBECONFIG: הנתיב של קובץ ה-kubeconfig של האשכול.
CLUSTER_NAMESPACE: מרחב השמות של האשכול שבו רוצים להפעיל את Node Problem Detector.
הפקודה הזו מפעילה באופן אוטומטי עורך טקסט שבו אפשר לערוך את משאב
node-problem-detector-config.מגדירים את
data.check-onlyל-trueבהגדרת המשאבnode-problem-detector-config.apiVersion: v1 kind: ConfigMap metadata: creationTimestamp: "2025-04-19T21:36:44Z" name: node-problem-detector-config ... data: enabled: "true" check-only: "true"במקור, ל-
node-problem-detector-configConfigMap אין שדהdata, ולכן יכול להיות שתצטרכו להוסיף אותו. הגדרתcheck-onlyל-"true"משביתה את התיקון האוטומטי לכל התנאים הנתמכים.כדי לעדכן את המשאב, שומרים את השינויים וסוגרים את כלי העריכה.
כדי להפעיל מחדש תיקון אוטומטי לכל NodeConditions שתומכים בו, צריך להגדיר את data.check-only ל-"false" ב-ConfigMap node-problem-detector-config.
איך מפסיקים ומפעילים מחדש את Node Problem Detector
הכלי Node Problem Detector פועל כשירות systemd בכל צומת. כדי לנהל את Node Problem Detector עבור צומת מסוים, משתמשים ב-SSH כדי לגשת לצומת ומריצים את הפקודות הבאות של systemctl.
כדי להשבית את Node Problem Detector, מריצים את הפקודה הבאה:
systemctl stop node-problem-detectorכדי להפעיל מחדש את Node Problem Detector, מריצים את הפקודה הבאה:
systemctl restart node-problem-detectorכדי לבדוק אם Node Problem Detector פועל בצומת מסוים, מריצים את הפקודה הבאה:
systemctl is-active node-problem-detector
תכונות שלא נתמכות
Google Distributed Cloud לא תומך בהתאמות האישיות הבאות של Node Problem Detector:
- ייצוא דוחות של Node Problem Detector למערכות ניטור אחרות, כמו Stackdriver או Prometheus.
- התאמה אישית של
NodeConditionsאוEventsלחיפוש. - הפעלת סקריפטים של מעקב שהוגדרו על ידי המשתמש.
המאמרים הבאים
לקבלת עזרה נוספת, אפשר לפנות אל Cloud Customer Care. אפשר גם לעיין במאמר קבלת תמיכה לקבלת מידע נוסף על מקורות מידע לתמיכה, כולל:
- דרישות לפתיחת בקשת תמיכה.
- כלים שיעזרו לכם לפתור בעיות, כמו הגדרת הסביבה, היומנים והמדדים.
- רכיבים נתמכים.