TKG: 2.5.4
Kubernetes: 1.33.1, 1.32.5, 1.31.9, 1.30.13, 1.29.15, 1.28.15, 1.27.16
TCP: 5.1
spec.topology.variables.ntpServers topology variable is not defined.ntpServers topology variableEnsure UDP Port 123 is open between the TKG environment and the NTP servers.
Verify that the NTP servers will respond to NTP queries from the node network subnets.
Create a backup of the current cluster spec:kubectl get cluster <workloadClusterName> -n <workloadClusterNamespace> -o yaml > cluster-backup-$(date +%Y%m%d-%H%M%S).yaml
Define the workload cluster ntpServers topology variable:kubectl patch cluster <workloadClusterName> -n <workloadClusterNamespace> -p '{"spec":{"topology":{"variables":[{"name":"ntpServers","value":["#.#.#.#","#.#.#.#"]}]}}}'
Note: The Cluster API controller will initiate a rolling update to roll out new nodes across control plane and worker groups.
Note: If a booting node cannot connect to the NTP endpoints via UDP 123, the rolling update will intentionally stall on the first machine replacement to prevent compromising the cluster with non-synchronized nodes.
Confirm the variable was applied:
kubectl get cluster <workloadClusterName> -n <workloadClusterNamespace> -o jsonpath='{.spec.topology.variables}'
or watch the rolling update progress:
kubectl get machines -n <workloadClusterNamespace>
ntpServers Without Overwriting Existing Topology VariablesNote: If post-patch verification reveals that other topology variables are missing from spec.topology.variables, run through the following steps to ensure only the ntpServers variable is updated:
Restore the cluster resource from the backup taken in the previous steps
kubectl apply -f cluster-backup-<timestamp>.yaml
Confirm the original spec has been reverted:kubectl get cluster <workloadClusterName> -n <workloadClusterNamespace> -o jsonpath='{.spec.topology.variables}'
Once the cluster's original spec has been successfully reverted, edit the workload cluster spec:
kubectl edit cluster <workloadClusterName> -n <workloadClusterNamespace>
Locate the spec.topology.variables array and add the ntpServers entry alongside the existing variables:
spec:
topology:
variables:
- name: ntpServers
value:
- "#.#.#.#"
- "#.#.#.#"
- name: <existingVariable> # existing variables remain untouched
value: <existingValue>Save and exit the editor. The Cluster API controller will apply the change and initiate a rolling update as described above.