Externes NTP-Relay konfigurieren

Auf dieser Seite wird beschrieben, wie Sie eine externe NTP-Wiedergabe für eine Google Distributed Cloud (GDC) Air Gap-Appliance konfigurieren.

Diese Schritte sind nur erforderlich, wenn Sie das Gerät nach dem Trennen der Verbindung mit einer externen Zeitquelle synchronisieren möchten.

Hinweise

Führen Sie die folgenden Schritte aus, um die Appliance mit einem externen NTP-Server zu synchronisieren:

  1. Gerät konfigurieren und Software installieren

  2. Prüfen Sie vor dem Start, ob nur ein NTP-Relay vorhanden ist. Führen Sie zur Überprüfung den folgenden Befehl auf dem Bootstrapper-Computer aus:

    kubectl get ntprelay -A
    

    Die Ausgabe sieht so aus:

    NAMESPACE    NAME           AGE
    gpc-system   bi-ntp-relay   4d21h
    

NTP-Relay konfigurieren

  1. Verbinden Sie den Bootstrapper mit dem Appliance-Gerät und ermitteln Sie die IP-Adresse der verbundenen Schnittstelle:

    ifconfig
    mgmt: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 198.18.0.30   netmask 255.255.255.224  broadcast 198.18.0.31
        inet6 fe80::20c:29ff:fea8:fc35  prefixlen 64  scopeid 0x20&lt;link&gt;
    ...
    
  2. Bearbeiten Sie die benutzerdefinierte Ressource ntprelay, indem Sie die Bootstrapper-Management-IP als Upstream-IP angeben.

    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
    

    Die Ausgabe sieht so aus: In diesem Beispiel wird die IP-Adresse für upstreamServers geändert:

    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. NTP-Synchronisierung prüfen:

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

    Die Ausgabe sieht so aus:

      .-- 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
    
      .-- 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    37     2     +2ns[  +90us] +/-   84us
    =? 192.0.2.029                 2   6     1     8   +368us[ +449us] +/- 3761us
    =? 192.0.2.051                 0   6     1     -     +0ns[   +0ns] +/-    0ns
    =? 192.0.2.059                 2   6     1     8   +663us[ +744us] +/-   11ms
    
      .-- 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    37    29     -6ns[ -759us] +/-   92us
    =? 192.0.2.029                   2   6     1    36   +334us[ -346us] +/- 3775us
    =? 192.0.2.051                   2   6     1    35   -125us[ -813us] +/- 5839us
    =? 192.0.2.059                   0   6     1     -     +0ns[   +0ns] +/-    0ns
    
  4. Prüfen Sie, ob sich die chronyc in den NTP-Pods auf die neu hinzugefügte IP-Adresse bezieht.

    kubectl exec -it -n ntp-system ntp2-84ddf7cd99-96vqn -- sh
    

    Die Ausgabe sieht so aus:

    Defaulted container "ntp-image" out of: ntp-image, ntp-node-exporter
    # chronyc tracking
    Reference ID    : C612001E (198.18.0.30)
    Stratum         : 2
    Ref time (UTC)  : Wed May 21 07:28:38 2025
    System time     : 0.000000005 seconds slow of NTP time
    Last offset     : +0.000025645 seconds
    RMS offset      : 0.000082131 seconds
    Frequency       : 15.671 ppm slow
    Residual freq   : +0.024 ppm
    Skew            : 0.628 ppm
    Root delay      : 0.000164273 seconds
    Root dispersion : 0.000180630 seconds
    Update interval : 64.8 seconds
    Leap status     : Normal
    # exit