Configurar un servidor NTP externo

En esta página se describe cómo configurar un servidor NTP externo para el dispositivo aislado de Google Distributed Cloud (GDC).

Estos pasos solo son necesarios si quieres sincronizar el dispositivo con una fuente de tiempo externa.

Antes de empezar

Para sincronizar el dispositivo con un servidor NTP externo, configura el dispositivo e instala el software.

Configurar el relay NTP

  1. Determina la dirección IP que debe usar el dispositivo aislado de GDC para acceder a tu servidor NTP. Es posible que tengas que ajustar las reglas de cortafuegos para permitir el tráfico.

  2. Con el archivo kubeconfig raíz, edita el ntprelay CR en el clúster del plano de gestión y añade la sección 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
    

    El archivo YAML resultante tiene una sección .spec actualizada que incluye la IP, como se muestra en el siguiente ejemplo:

    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. Verifica la hora de cada nodo:

    Espera tres minutos para que se sincronicen los datos y, a continuación, ejecuta el siguiente comando en el clúster del plano de control con el archivo kubeconfig raíz:

    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
    

    El resultado muestra la hora de cada nodo, que coincide con la hora de tu servidor NTP. El resultado es similar al siguiente:

    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
    

Depurar problemas de conectividad

Si la hora no coincide, ejecuta el siguiente comando en el clúster del plano de control con el archivo kubeconfig raíz para depurar la conectividad con el servidor 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

La salida de una conexión correcta tiene el siguiente aspecto. La IP del servidor externo empieza por ^*. En los datos de la fuente (por ejemplo, Remote address : 192.0.2.026), TX es la cantidad de paquetes enviados y RX es el número de paquetes recibidos. Si RX es 0, significa que hay un problema de conectividad. Comprueba tu cortafuegos para ver si las solicitudes NTP se están enviando:

  .-- 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