הגדרת שרת NTP חיצוני

בדף הזה מוסבר איך להגדיר שרת NTP חיצוני למכשיר Google Distributed Cloud ‏ (GDC) עם בידוד פיזי.

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

לפני שמתחילים

כדי לסנכרן את המכשיר עם שרת NTP חיצוני, צריך להגדיר את המכשיר ולהתקין תוכנה.

הגדרת ממסר NTP

  1. קובעים את כתובת ה-IP שצריכה להיות למכשיר GDC עם air gap כדי לגשת לשרת ה-NTP. יכול להיות שתצטרכו לשנות את הכללים של חומת האש כדי לאפשר את התעבורה.

  2. באמצעות קובץ ה-kubeconfig של שורש, עורכים את ntprelay CR באשכול של מישור הניהול ומוסיפים את הקטע upstreamServers.

    kubectl edit ntprelay bi-ntp-relay -n gpc-system
    ntprelay.system.private.gdc.goog/bi-ntp-relay edited
    kubectl get ntprelay bi-ntp-relay -n gpc-system -oyaml
    

    קובץ ה-YAML שמתקבל כולל קטע .spec מעודכן, שכולל את כתובת ה-IP, כמו בדוגמה הבאה:

    apiVersion: system.private.gdc.goog/v1alpha1
    kind: NTPRelay
    metadata:
      creationTimestamp: "2025-05-16T08:44:21Z"
      generation: 2
      name: bi-ntp-relay
      namespace: gpc-system
      resourceVersion: "10871409"
      uid: 6cde8e65-791c-4bc6-9a8b-d5c9bf103f8b
    spec:
      upstreamServers:
      - 192.0.2.030
    
  3. בודקים את השעה בכל צומת:

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

    kubectl get pods -l app.kubernetes.io/name=ntp -n ntp-system -o name | xargs -P 0 -I {} kubectl exec {} -n ntp-system -- date; echo
    

    בפלט מוצגת השעה של כל צומת, שזהה לשעה של שרת ה-NTP. הפלט אמור להיראות כך:

    Defaulted container "ntp-image" out of: ntp-image, ntp-node-exporter
    Defaulted container "ntp-image" out of: ntp-image, ntp-node-exporter
    Defaulted container "ntp-image" out of: ntp-image, ntp-node-exporter
    Thu Nov  6 19:39:34 UTC 2025
    Thu Nov  6 19:39:34 UTC 2025
    Thu Nov  6 19:39:34 UTC 2025
    

ניפוי באגים בבעיות בקישוריות

אם השעה לא תואמת, מריצים את הפקודה הבאה באשכול של מישור הבקרה באמצעות קובץ ה-kubeconfig הבסיסי כדי לנפות באגים בקישוריות לשרת NTP:

kubectl get pods -l app.kubernetes.io/name=ntp -n ntp-system -o name | xargs -I {} kubectl exec {} -n ntp-system -- sh -c "chronyc sources -v; echo; chronyc ntpdata"; echo

הפלט של חיבור תקין אמור להיראות כך. כתובת ה-IP של השרת החיצוני מתחילה ב-^*. בנתונים של המקור (למשל, Remote address : 192.0.2.026), ‏TX היא כמות החבילות שנשלחו ו-RX הוא מספר החבילות שהתקבלו. אם הערך של RX הוא 0, זה מצביע על בעיה בקישוריות. בודקים את חומת האש כדי לראות אם בקשות ה-NTP עוברות דרכה:

  .-- Source mode  '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current best, '+' = combined, '-' = not combined,
| /             'x' = may be in error, '~' = too variable, '?' = unusable.
||                                                 .- xxxx [ yyyy ] +/- zzzz
||      Reachability register (octal) -.           |  xxxx = adjusted offset,
||      Log2(Polling interval) --.      |          |  yyyy = measured offset,
||                                \     |          |  zzzz = estimated error.
||                                 |    |           \
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^* 192.0.2.026                   1   6    17    43   +286ns[  +36us] +/- 1160us
=? 192.0.2.029                 0   6     0     -     +0ns[   +0ns] +/-    0ns
=? 192.0.2.051                 0   6     0     -     +0ns[   +0ns] +/-    0ns
=? 192.0.2.059            0   6     0     -     +0ns[   +0ns] +/-    0ns

Remote address  : 192.0.2.026 (ACC03AF1)
Remote port     : 123
Local address   : 192.0.2.029 (0AA800D5)
Leap status     : Normal
Version         : 4
Mode            : Symmetric passive
Stratum         : 2
Poll interval   : 10 (1024 seconds)
Precision       : -25 (0.000000030 seconds)
Root delay      : 0.000381 seconds
Root dispersion : 0.000397 seconds
Reference ID    : ACC03BDF ()
Reference time  : Thu Nov 06 19:36:31 2025
Offset          : -0.000002443 seconds
Peer delay      : 0.000202604 seconds
Peer dispersion : 0.000000053 seconds
Response time   : 0.000097758 seconds
Jitter asymmetry: -0.37
NTP tests       : 111 111 1111
Interleaved     : No
Authenticated   : No
TX timestamping : Daemon
RX timestamping : Kernel
Total TX        : 67
Total RX        : 67
Total valid RX  : 67
Total good RX   : 67