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 היא בעיה זמנית שיש לה השפעה מוגבלת על פודים, אבל היא נחשבת מספיק חשובה כדי לדווח עליה.
בטבלה הבאה מתוארות הבעיות NodeConditions שזוהו על ידי Node Problem Detector, ומוסבר אם אפשר לתקן אותן באופן אוטומטי:
| תנאי | סיבה | מוסך נתמך1 |
|---|---|---|
KernelDeadlock |
תהליכי ליבה תקועים בהמתנה שתהליכי ליבה אחרים ישחררו משאבים נדרשים. | לא |
ReadonlyFilesystem |
האשכול לא יכול לכתוב למערכת הקבצים בגלל בעיה, כמו דיסק מלא. | לא |
FrequentKubeletRestart |
שירות kubelet מופעל מחדש בתדירות גבוהה, ולכן הצומת לא יכול להריץ פודים בצורה יעילה. | לא |
FrequentDockerRestart |
הדמון של Docker הופעל מחדש יותר מ-5 פעמים ב-20 דקות. | לא |
FrequentContainerdRestart |
זמן הריצה של הקונטיינר הופעל מחדש יותר מ-5 פעמים ב-20 דקות. | לא |
FrequentUnregisterNetDevice |
בצומת מתבטלת לעיתים קרובות ההרשמה של מכשירי רשת. | לא |
CorruptDockerOverlay2 |
יש בעיות במערכת הקבצים או חוסר עקביות בספרייה של מנהל האחסון overlay2 של Docker. | לא |
OrphanContainers2 |
פוד ספציפי למאגר נמחק, אבל המאגר התואם עדיין קיים בצומת. | לא |
ContainerRuntimeUnhealthy |
זמן הריצה של הקונטיינר לא פועל בצורה תקינה, ולכן לא ניתן להריץ או לתזמן פודים בצומת. | כן |
FailedCgroupRemoval2 |
חלק מקבוצות הבקרה נמצאות במצב קפוא. | כן |
KubeletUnhealthy |
הצומת לא פועל כמו שצריך או לא מגיב למישור הבקרה. | כן |
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, הוא יכול לתקן באופן אוטומטי את הבעיה המתאימה בצומת. המכשירים הבאים של NodeConditions תומכים בתיקון אוטומטי:
ContainerRuntimeUnhealthyFailedCgroupRemovalKubeletUnhealthy
איך רואים את הבעיות שזוהו
מריצים את הפקודה הבאה 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 באשכול נתון, מבצעים את השלבים הבאים:
עורכים את משאב ה-ConfigMap
node-problem-detector-config: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.
כדי להשבית את התנהגות התיקון האוטומטי באשכול מסוים, מבצעים את השלבים הבאים:
עורכים את משאב ה-ConfigMap
node-problem-detector-config: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" ב-node-problem-detector-config ConfigMap.
איך מפסיקים ומפעילים מחדש את 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 למערכות ניטור אחרות, כמו Cloud Monitoring או Prometheus.
- התאמה אישית של
NodeConditionsאוEventsלחיפוש. - הרצת סקריפטים של מעקב שהוגדרו על ידי המשתמש.
המאמרים הבאים
אם אתם צריכים עזרה נוספת, תוכלו לפנות אל Cloud Customer Care. מידע נוסף על מקורות מידע לתמיכה, כולל:
- דרישות לפתיחת בקשת תמיכה
- כלים שיעזרו לכם לפתור בעיות, כמו הגדרת הסביבה, היומנים והמדדים.
- רכיבים נתמכים.