ניהול אירועי תחזוקה ב-TPU במצב 'כל הקיבולת'

כל מארחי ה-TPU עוברים תחזוקה שוטפת. במצב 'כל הקיבולת' של TPU, אתם יכולים לתכנן אירועי תחזוקה עתידיים ולהפעיל את פעולות התחזוקה מתי שתרצו על כל הקיבולת שלכם. אפשר לעדכן את הקיבולת שנעשה בה שימוש ואת הקיבולת שלא נעשה בה שימוש בו-זמנית או בנפרד. אפשר גם לבצע תחזוקה ברמת מכונה וירטואלית, תת-בלוק, בלוק או הזמנה. השליטה המדויקת הזו בתחזוקה מאפשרת לכם ליצור רצף תחזוקה אופטימלי ולתזמן פעולות תחזוקה כדי למזער את ההשפעה על העסק.

מצב 'כל הקיבולת' של TPU תומך רק ב'תחזוקה מקובצת', כלומר פעולות התחזוקה של כל המכונות הווירטואליות בהזמנה מתוזמנות לאותו זמן. לכל המכונות הווירטואליות של TPU במקום שמור יש חלון זמן לתחזוקה זהה. עם זאת, אפשר לבצע את פעולות התחזוקה בנפרד ברמת המארח, תת-הבלוק, הבלוק או ההזמנה. התראות על תחזוקה נשלחות בערך 90 יום מראש. עבודות התחזוקה לא יתבצעו בתדירות גבוהה יותר מפעם אחת כל 90 ימים.

אם אתם משתמשים ב-TPU Cluster Director ב-GKE ואתם משתמשים במאגרי צמתים של פרוסות TPU מרובות מארחים, מומלץ למחוק את מאגר הצמתים של GKE לפני שמתחילים ידנית את התחזוקה בהמתנה של מארחים במאגר הצמתים הזה. אחרי שהתחזוקה תתבצע בכל המארחים במאגר הצמתים המקורי, תוכלו ליצור מחדש את מאגר הצמתים.

הדוגמה הבאה מציגה ציר זמן של אירוע תחזוקה של מארח TPU:

  1. נקבע מועד לתחזוקה. תישלח אליכם הודעה שהמארח יעודכן תוך 90 ימים.
  2. אפשר לבחור לעדכן את המארח באופן ידני תוך 90 יום.
  3. אחרי 90 ימים, פעולת התחזוקה מופעלת ללא יוצא מן הכלל.
  4. אם מתוכנן אירוע תחזוקה נוסף לפני שהאירוע הקודם מופעל, הפעולה השנייה מתוזמנת להפעלה אחרי 180 יום, 90 יום אחרי שהאירוע הראשוני מתוזמן להתרחש.

הגדרת התראות על תחזוקה לגבי קיבולת פיזית

‫Compute Engine שולח לכם אירועים של Cloud Logging לגבי תחזוקה מתוזמנת, תחזוקה שהתחילה או תחזוקה שהסתיימה. אירועי התחזוקה האלה נשארים ביומנים, כך שתוכלו ליצור שאילתות ביומן כדי לקבל תצוגה היסטורית של התחזוקה של הקיבולת. אפשר גם ליצור כללי מדיניות להתראות מבוססות-יומן כדי לקבל התראות על אירועי תחזוקה עתידיים של הזמנה, חסימה או חסימת משנה.

כדי ליצור התראה על אירועי תחזוקה בקיבולת הפיזית:

  1. במסוף Google Cloud , עוברים אל Logs Explorer.
  2. מוודאים שהאפשרות הצגת השאילתה מופעלת.
  3. בחלונית השאילתה, יוצרים שאילתה בפורמט שמפורט בקטעים הבאים. מחליפים את הפלייסהולדר של הפרמטר המתאים בהתאם ומריצים את השאילתה.
  4. אחרי שמוודאים שהתוצאות שמוחזרות תואמות למה שרוצים, אפשר ליצור התראות על ידי בחירה באפשרות יצירת התראה על יומן בתפריט הנפתח פעולות בסרגל הכלים של תוצאות השאילתה, והזנת המידע הנדרש.

שאילתה לגבי תחזוקה קרובה

הנה דוגמה לשאילתה לחיפוש מידע על תחזוקה עתידית:

protoPayload.methodName="compute.CAPACITY_COMPONENT.upcomingGroupMaintenance" severity>=DEFAULT
protoPayload.resourceName="projects/shared-reservation-project/reservations/RESOURCE_NAME"
protoPayload.status.message =~ "scheduled"

מחליפים את CAPACITY_COMPONENT ואת RESOURCE_NAME בערכים הבאים:

קבלת התראה על תחזוקה קרובה עבור CAPACITY_COMPONENT RESOURCE_NAME
כל ההזמנות reservations השמטה RESOURCE_NAME
הזמנה ספציפית reservations YOUR_RESERVATION_NAME
חסימות בכל ההזמנות reservations.blocks השמטה RESOURCE_NAME
בלוק ספציפי reservations.blocks YOUR_RESERVATION_NAME/reservationBlocks/YOUR_RESERVATION_BLOCK_ID
בלוקים משניים בכל ההזמנות reservations.blocks.subblocks השמטה RESOURCE_NAME
חסימה משנית ספציפית reservations.blocks.subblocks YOUR_RESERVATION_NAME/reservationBlocks/YOUR_RESERVATION_BLOCK_ID/reservationSubBlocks/YOUR_RESERVATION_SUBBLOCK_ID

שאילתה לפתיחת חלון זמן לתחזוקה

protoPayload.methodName="compute.reservations.CAPACITY_COMPONENT.startGroupMaintenance" severity>=DEFAULT
protoPayload.status.message =~ "started"

מחליפים את CAPACITY_COMPONENT באחד מהערכים הבאים:

קבלת התראה על פתיחת חלון זמן לתחזוקה עבור CAPACITY_COMPONENT
חסימות בהזמנות reservations.blocks
בלוקים משניים בהזמנה reservations.blocks.subblocks

שאילתה לגבי תחזוקה שהושלמה

הדוגמה הבאה היא לשאילתה שנועדה לחפש תחזוקה שהסתיימה:

protoPayload.methodName="compute.reservations.CAPACITY_COMPONENT.completedGroupMaintenance" severity>=DEFAULT
protoPayload.resourceName="projects/YOUR_RESERVATION_PROJECT/reservations/RESOURCE"
protoPayload.status.message =~ "completed"

מחליפים את CAPACITY_COMPONENT ואת RESOURCE_NAME בערכים הבאים:

קבלת התראה על תחזוקה שהסתיימה עבור CAPACITY_COMPONENT RESOURCE_NAME
כל ההזמנות reservations השמטה של RESOURCE_NAME
הזמנה ספציפית reservations YOUR_RESERVATION_NAME
חסימות בכל ההזמנות reservations.blocks השמטה של RESOURCE_NAME
בלוק ספציפי reservations.blocks YOUR_RESERVATION_NAME/reservationBlocks/YOUR_RESERVATION_BLOCK_ID
בלוקים משניים בכל ההזמנות reservations.blocks.subblocks השמטה של RESOURCE_NAME
חסימה משנית ספציפית reservations.blocks.subblocks YOUR_RESERVATION_NAME/reservationBlocks/YOUR_RESERVATION_BLOCK_ID/reservationSubBlocks/YOUR_RESERVATION_SUBBLOCK_ID

הצגת סטטוס התחזוקה של הקיבולת הפיזית

אתם יכולים לראות את סטטוס התחזוקה של הקיבולת באמצעות Cloud Logging,‏ API ו-CLI. מידע על סטטוס התחזוקה מסופק בארבע רמות: הזמנה, בלוק, תת-בלוק ומארח.

Cloud Logging

הנה דוגמה ל-JSON שנוצר בתגובה לשאילתה לדוגמה:

{
"protoPayload": {
  "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
  "status": {
    "message": "Maintenance is scheduled for this block in reservation
    YOUR_RESERVATION. Review the maintenance schedule
    by describing the reservation and block via gcloud CLI"
  },
  "metadata": {
    "type":SCHEDULED
    "canReschedule":True
    "windowGroupStartTime": '2025-09-12T13:00:00.000-07:00',
    "windowGroupEndTime": '2025-09-12T17:00:00.000-07:00',
    "maintenanceGroupStatus":PENDING,
    "maintenancePendingCount":128 # Used and Unused Machines,
    "instanceMaintenancePendingCount": 64 # VMs Only
  },
"methodName": "compute.reservations.block.upcomingGroupMaintenance",

},
}

gcloud

gcloud compute reservations blocks describe YOUR_RESERVATION \
--block-name=YOUR_BLOCK \
--project=YOUR_PROJECT \
--zone=YOUR_ZONE

הפלט אמור להיראות כך:

count: 128 # Host count
creationTimestamp: '2025-08-19T18:23:32.825-07:00'
id: '6404259976725386932'
inUseCount: 64 # In use host count
kind: compute#reservationBlock
name: exr1-block-0002
…
reservationMaintenance:
instanceMaintenanceOngoingCount: 0
instanceMaintenancePendingCount: 64 # VMs Only
maintenanceOngoingCount: 0
maintenancePendingCount: 128 # Used and Unused Hosts
schedulingType: GROUPED
subblockInfraMaintenanceOngoingCount: 0
subblockInfraMaintenancePendingCount: 0
upcomingGroupMaintenance:
  canReschedule: true
  maintenanceReasons:
  - PLANNED_UPDATE
  maintenanceStatus: PENDING
  type: SCHEDULED
  windowEndTime: '2025-09-12T17:00:00.000-07:00'
  windowStartTime: '2025-09-12T13:00:00.000-07:00'

הערכים הבאים בפלט מתארים את פרטי התחזוקה:

  • reservationMaintenance.instanceMaintenanceOngoingCount: מספר המארחים בשימוש שעוברים עדכון
  • reservationMaintenance.instanceMaintenancePendingCount: מספר המארחים בשימוש שממתינים לתחזוקה
  • reservationMaintenance.maintenanceOngoingCount: מספר המארחים שלא נעשה בהם שימוש שמתעדכן
  • reservationMaintenance.maintenancePendingCount: מספר המארחים שלא נעשה בהם שימוש שממתינים לתחזוקה
  • reservationMaintenance.upcomingGroupMaintenance.maintenanceReasons: סוג התחזוקה
  • reservationMaintenance.upcomingGroupMaintenance.maintenanceStatus: הסטטוס של פעולת התחזוקה
  • reservationMaintenance.upcomingGroupMaintenance.type: סוג התחזוקה (SCHEDULED לתחזוקה מתוכננת או UNSCHEDULED לתחזוקה לא מתוכננת או לתחזוקת חירום)
  • reservationMaintenance.upcomingGroupMaintenance.windowEndTime: סיום חלון הזמן המתוזמן של פעולת התחזוקה
  • reservationMaintenance.upcomingGroupMaintenance.windowStartTime: תחילת חלון הזמן המתוכנן לפעולת התחזוקה

הגדרת התראות על תחזוקה של מכונות וירטואליות של TPU

אתם יכולים ליצור התראות לאירועי תחזוקה במכונות הווירטואליות של TPU:

  1. במסוף Google Cloud , עוברים אל Logs Explorer.
  2. מעבירים את המתג Show query (הצגת השאילתה) למצב 'מופעל'.
  3. בחלונית השאילתה, יוצרים שאילתה בפורמט שמפורט בקטעים הבאים.
  4. אחרי שמוודאים שהתוצאות שהוחזרו תואמות למה שרוצים, אפשר ליצור התראה. לשם כך, לוחצים על התפריט הנפתח פעולות, בוחרים באפשרות יצירת התראה על סמך יומן וממלאים את הפרטים בחלונית יצירת מדיניות התראה על סמך יומנים.

שאילתה לגבי מועד התחזוקה שנקבע למכונה וירטואלית

protoPayload.methodName="compute.instances.upcomingMaintenance" severity>=DEFAULT
protoPayload.status.message =~ "scheduled"

שאילתה לגבי מועד הפתיחה של חלון זמן לתחזוקה של מכונה וירטואלית

protoPayload.methodName="compute.instances.upcomingMaintenance" severity>=DEFAULT
protoPayload.status.message =~ "ongoing"

התחילה שאילתה לגבי תחזוקה של מכונות VM

protoPayload.methodName="compute.instances.blocks.terminateOnHostMaintenance" severity>=DEFAULT

שאילתה לגבי השלמת תחזוקה של מכונה וירטואלית

protoPayload.methodName="compute.instances.upcomingMaintenance" severity>=DEFAULT
protoPayload.status.message =~ "completed"

צפייה בסטטוס התחזוקה של מכונת Cloud TPU וירטואלית

אפשר לאחזר את סטטוס התחזוקה של מכונת Cloud TPU וירטואלית באמצעות Compute Engine instance API או באמצעות פקודה curl מתוך מערכת ההפעלה של האורח.

תיאור של מופע

gcloud

gcloud compute instances describe INSTANCE --zone ZONE

הפלט של הפקודה אמור להיראות כך:

…
upcomingMaintenance:{
"type":"SCHEDULED"
"canReschedule":True
"windowStartTime": '2025-09-12T13:00:00.000-07:00'
"windowEndTime": '2025-09-12T17:00:00.000-07:00'
"latestWindowStartTime": '2025-09-12T13:00:00.000-07:00'
"maintenanceStatus":"PENDING"
...

curl

curl http://metadata.google.internal/computeMetadata/v1/instance/upcoming-maintenance?alt=json -H "Metadata-Flavor: Google"

הפלט של הפקודה אמור להיראות כך:

{
"maintenanceType":"SCHEDULED"
"canReschedule":True
"windowStartTime": '2025-09-12T13:00:00.000-07:00'
"windowEndTime": '2025-09-12T17:00:00.000-07:00'
"latestWindowStartTime": '2025-09-12T13:00:00.000-07:00'
"maintenanceStatus":"PENDING"
}

אפשר למצוא התראות על תחזוקה גם ב-Cloud Logging.

זו דוגמה להודעה ביומן של תחזוקה מתוכננת בהמתנה. לדוגמה לשאילתה, אפשר לעיין במאמר הצגת סטטוס התחזוקה של קיבולת פיזית.

{
  "protoPayload": {
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "status": {
      "message": "Maintenance is scheduled for this instance. Review the maintenance schedule by describing the VM with gcloud CLI or querying the http://metadata.google.internal/computeMetadata/v1/instance/upcoming-maintenance metadata key."
    },
    "metadata": {
      "canReschedule": true
      "latestWindowStartTime": "2024-01-01:00:00:00PST"
      "maintenanceStatus": "PENDING"
      "type": "SCHEDULED"
      "windowEndTime": "2024-01-01:00:02:00PST"
      "windowStartTime": "2024-01-01:00:00:00PST"
    },
},
  "operation": {
    "id": "systemevent-1702539760425-60c736da2db40-701ddf19-b5424b20",
    "producer": "compute.instances.upcomingMaintenance",
    "first": true,
    "last": false
  },
}

בדוגמה הבאה מוצגת הודעה ביומן על תחזוקה לא מתוכננת שמתבצעת כרגע. לדוגמה של שאילתה, אפשר לעיין במאמר שאילתה לבדיקה אם חלון זמן לתחזוקה פתוח.

{
  "protoPayload": {
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "status": {
      "message": "Maintenance window has started for this instance. Review the maintenance schedule by describing the VM with gcloud CLI or querying the http://metadata.google.internal/computeMetadata/v1/instance/upcoming-maintenance metadata key."
    },
    "metadata": {
      "canReschedule": true
      "latestWindowStartTime": "2024-01-01:00:00:00PST"
      "maintenanceStatus": "ONGOING"
      "type": "UNSCHEDULED"
      "windowEndTime": "2024-01-01:00:02:00PST"
      "windowStartTime": "2024-01-01:00:00:00PST"
    },
},
  "operation": {
    "id": "systemevent-1702539760425-60c736da2db40-701ddf19-b5424b20",
    "producer": "compute.instances.upcomingMaintenance",
    "first": true,
    "last": false
  },
}

הדוגמה הבאה היא הודעה ביומן לגבי תחזוקה שהסתיימה. דוגמה לשאילתה מופיעה במאמר שאילתה לבירור מועד סיום התחזוקה של מכונה וירטואלית.

{
  "protoPayload": {
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "status": {
      "message": "Maintenance window has completed for this instance. All maintenance notifications on the instance have been removed."
    },
  "operation": {
    "id": "systemevent-1702539760425-60c736da2db40-701ddf19-b5424b20",
    "producer": "compute.instances.upcomingMaintenance",
    "first": false,
    "last": true
  },
}

הפעלה ידנית של תחזוקה בהמתנה של קיבולת פיזית

אחרי שתזמנו אירוע תחזוקה (הערך של maintenanceStatus הוא PENDING), תוכלו להתחיל ידנית את התחזוקה של ההזמנות, הבלוקים או הבלוקים המשניים שבהם המאפיין canReschedule מוגדר לערך True. כשמפעילים ידנית אירוע תחזוקה בהמתנה, מה שקורה תלוי במצב התחזוקה של ההזמנה, של חלונות הזמן או של חלונות הזמן המשניים. בטבלה הבאה מתואר מה קורה בכל אחד מהמקרים האלה:

מצב תחזוקה תיאור מה שרואים
מתוזמנת מתבצעת תחזוקה מתוזמנת ב-Compute Engine במקום השמור. אתם יכולים להתחיל תחזוקה ידנית לפני המועד שנקבע. ב-Google Cloud CLI או ב-API בארכיטקטורת REST, השדה maintenanceStatus מוגדר ל-PENDING.
בתהליך מתבצעות פעולות תחזוקה. אי אפשר לתזמן אותו מחדש. ב-Google Cloud CLI או ב-API בארכיטקטורת REST, השדה maintenanceStatus מוגדר ל-ONGOING.
הושלמה התחזוקה הסתיימה. ‫Compute Engine הסיר את כל ההתראות על תחזוקה מהמכונה הווירטואלית. ב-Google Cloud CLI או ב-API בארכיטקטורת REST, השדה maintenanceStatus לא קיים.

הפעלה ידנית של תחזוקה בכל ההזמנה

הפקודה הבאה מתחילה תחזוקה בהזמנה. משתמשים בפרמטר --scope כדי לציין אחד מהערכים הבאים שמגדירים את היקף פעולת התחזוקה:

  • כל המארחים: --scope=all
  • מארחים עם מכונות וירטואליות שפועלות: --scope=running
  • מכונות וירטואליות שלא בשימוש, שהופסקו או שהושעו: --scope=unused

כדי להתחיל בתחזוקה של כל הבלוקים בהזמנה, מריצים את הפקודה הבאה:

gcloud compute reservations perform-maintenance YOUR_RESERVATION \
  --zone=YOUR_ZONE \
  --scope=all

כדי לבדוק את התקדמות אירוע התחזוקה, מריצים את הפקודה הבאה:

gcloud compute reservations describe YOUR_RESERVATION  \
  --project=YOUR_PROJECT \
  --zone=YOUR_ZONE

הפלט אמור להיראות כך:

ResourceStatus
  upcomingGroupMaintenance:
    "type":"SCHEDULED"
    "canReschedule":True
    "maintenanceStatus":"PENDING"  "ONGOING"
    "maintenancePendingCount":512  0 # all hosts are moved into an ongoing state.
    "maintenanceOngoingCount":0  512  256  0 # this number first increases to all hosts
                                           # as machines complete, this number reduces.

הפעלה ידנית של תחזוקה בבלוק

הפקודה הבאה מתחילה תחזוקה בבלוק. משתמשים בפרמטר --scope כדי לציין אחד מהערכים הבאים שקובעים את היקף פעולת התחזוקה:

  • כל המארחים: --scope=all
  • מארחים עם מכונות וירטואליות שפועלות: --scope=running
  • מכונות וירטואליות שלא בשימוש, שהופסקו או שהושעו: --scope=unused

הפקודה הבאה מראה איך להתחיל תחזוקה במארחים פעילים:

gcloud compute reservations blocks perform-maintenance YOUR_RESERVATION \
    --block-name=YOUR_BLOCK_NAME \
    --scope=RUNNING \
    --project=YOUR_PROJECT \
    --zone=YOUR_ZONE

הפקודה הבאה מראה איך בודקים את התקדמות התחזוקה של בלוק:

gcloud compute reservations blocks describe YOUR_RESERVATION \
    --block-name=YOUR_BLOCK_NAME  \
    --project=YOUR_PROJECT \
    --zone=YOUR_ZONE

הפלט אמור להיראות כך:

ResourceStatus
  upcomingGroupMaintenance:
    "maintenanceType":"SCHEDULED"    "maintenanceGroupStatus":"PENDING"  "ONGOING"
    "maintenancePending":0
 "maintenanceOngoing":70  0

הפעלה ידנית של תחזוקה בבלוק משנה

כשמתחילים תחזוקה של תת-בלוק, לא מציינים את הפרמטר --scope כי תת-בלוק הוא היקף התחזוקה הקטן ביותר.

הפקודה הבאה מתחילה תחזוקה בכל המארחים בבלוק:

gcloud compute reservations sub-blocks perform-maintenance YOUR_RESERVATION \
    --block-name=YOUR_BLOCK_NAME \
    --sub-block-name=YOUR_SUBBLOCK_NAME \
    --project=YOUR_PROJECT \
    --zone=YOUR_ZONE

הפקודה הבאה בודקת את התקדמות התחזוקה:

gcloud compute reservations sub-blocks describe YOUR_RESERVATION \
    --block-name=YOUR_BLOCK_NAME \
    --sub-block-name=YOUR_SUBBLOCK_NAME \
    --project=YOUR_PROJECT \
    --zone=YOUR_ZONE

הפלט אמור להיראות כך:

ResourceStatus
  groupMaintenance:
    "maintenanceType":"SCHEDULED"
    "canReschedule":True
    "maintenanceGroupStatus":"PENDING"  "ONGOING"
    "maintenancePendingCount": 32  0 # 32 hosts updated
    "maintenanceOngoingCount":0  32  0
    "instanceMaintenancePendingCount": 64  0
    "instanceMaintenanceOngoingCount": 0  64  0 # 64 instances updated

הפעלה ידנית של תחזוקה בהמתנה במכונת TPU וירטואלית

אם מארח מפעיל יותר ממכונה וירטואלית אחת, התחלת התחזוקה במכונה וירטואלית אחת תפעיל תחזוקה בכל המכונות הווירטואליות במארח. מידע על הפעלה ידנית של אירוע תחזוקה של מכונת TPU וירטואלית זמין במאמר הפעלה ידנית של אירוע תחזוקה של מארח במסמכי התיעוד של Compute Engine.